Jenkins 란?
젠킨스(Jenkins)는 지속적 통합(Continuous Integration, CI) 및 지속적 전달(Continuous Delivery, CD)를 지원하기 위해 개발된 오픈 소스 자동화 도구로, 소프트웨어 개발 및 배포 과정에서 자동화된 빌드, 테스트, 배포 작업을 수행하여 개발자와 팀이 소프트웨어를 빠르게 개발하고 안정적으로 배포할 수 있도록 도와줌
Jenkins 주요 특징
지속적 통합(CI): 소스 코드 변경이 발생할 때마다 자동으로 빌드 및 테스트를 실행하여 코드 품질을 유지함
지속적 전달(CD): 테스트 및 빌드가 성공하면, Staging / Production 환경으로 자동 배포
다양한 플러그인 지원 : AWS, Docker 등 다양한 플러그인 등을 지원하여, 특정 기능을 추가 하거나 외부 도구와의 통합을 용이하게 함
웹 기반 대시보드 : 웹 대시보드를 통해 빌드 및 배포 상태를 모니터링 하고 관리 가능
알림 및 통지 : 빌드나 배포 상태에 대한 알림, 이메일, 메시지 수신 가능
ex) Git에서 프로젝트를 push 하면, Jenkins에서 CI 빌드가 진행되고, 테스트를 통과하면, CD 파이프라인을 통해 원하는 환경으로 배포되고, 빌드나 배포에 성공/실패시 알림이 옴. 전 과정에 대한 성공 여부를 웹 기반 대시 보드로 확인 가능함
Jenkins 설치 방법 (with. Docker)
1. 원하는 환경 (EC2 or 젠킨스 빌드 서버 or 로컬) 선택
해당 환경에 맞는 Docker를 설치함
- 만약 EC2 free-tier라 (ram 1gb) 일 경우 swap-memory를 추가로 지정해주어야 젠킨스가 안멈춤
- https://gksdudrb922.tistory.com/196 // jenkins swap memory 설정 링크
2. Jenkins 이미지 다운로드 및 실행
sudo docker run -d --name jenkins --restart=on-failure \
-p 8080:8080 \
-p 25:25 \
-v ~/jenkins_home:/var/jenkins_home \
-e TZ=Asia/Seoul \
-u root \
jenkins/jenkins
3. 실행 된 Docker 에서의 Jenkins 초기 비밀번호를 복사함
sudo docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
4. Jenkins url에 접속하여 기본 셋팅
- URL 접속 : (ex) AWS EC2 : http://3.34.41.245:8080)
- Jenkins 초기 비밀번호 입력 및 관리자 유저 정보 입력
- 필요한 Plugin 셋팅
5. 프로젝트 생성
- 목적 (CI / CD)에 맞는 item 을 구성하여 CI/CD 플로우 완성
추가
Jenkins api_token 생성
- Jenkins - settings - user - 설정 - api_token 생성
- API 콜 등으로 api_token이 포함된 url로 build 나 deploy 등 특정 job을 실행 가능함
git 저장소 (github, bitbucket)와 연동되는 SSH credential 만들기
1) jenkins docker 안에 들어가서 ssh-keygen
2) 해당 ssh-keygen으로 root/.ssh에 공개키와 비밀키가 생성됨
3) id_rsa.pub (공개키) 내용을 (cat id_rsa.pub)를 복사하여 git 저장소에 등록
4) id_rsa (비밀키)는 jenkins credentials 에 등록
5) known host 등에 등록하라고 하면 추가 다음과 같은 명령어 입력
- git ls-remote -h -- <원격 저장소의 ssh git link> HEAD
jenkins build 테스트 호출 (with. curl, postman, command line 등)
만약 특정 빌드가 잘 되는지, 혹은 코드 로직에서 연결 하고 싶다면, 다음과 같이 URL endpoint를 작성해서 테스트도 가능하다.
- URL : http://<jenkins_username>:<jenkins_api_token>@<jenkins_url>/job/<job_name>/build
- curl : curl -i -X POST 'http://<jenkins_username>:<jenkins_api_token>@<jenkins_url>/job/<job_name>/build?token= <token_name>'
'DevOps > CI-CD' 카테고리의 다른 글
[브랜치 전략] Git hub flow, Git flow 워크플로우 비교 (1) | 2023.09.01 |
---|---|
[Jenkins] Jenkins Pipeline 슬랙 연동 (with. 선언형, 스크립트형) (0) | 2023.08.31 |
[DevOps]서비스 무중단배포 전략 설계하기 (+실제 프로젝트 적용) (0) | 2022.10.07 |
[CI & CD] Github Action 정리 (0) | 2022.07.12 |