Overview
젠킨스는 소프트웨어 개발 시 지속적인 통합(CI, Continuous Integration)과 지속적인 배포(CD, Continuous Delivery) 환경을 구축하기 위한 도구이다. 빌드, 테스트, 배포 과정을 자동화하여 유지 및 생산 효율성을 높입니다.
본 글에서는 Docker를 통해 Jenkins 이미지로 설치를 진행하고 기본적인 설정 방법에 대해서 알아보겠습니다.
- 설치환경 : Linux/CentOS 7, Nginx, Docker
설치 환경 구성
도커를 통해 젠킨스를 설치할 예정이므로 도커 설치가 되어있지 않는 경우 아래 글을 참고하시어 설치하시기 바랍니다.
젠킨스 설치하기
1. 젠킨스 이미지 다운로드
도커 허브(Docker Hub)에서 최신 버전의 jenkins 이미지를 내려받습니다.
# pull 명령어로 이미지 파일을 받는다.
sudo docker pull jenkins/jenkins:lts
# 다운받은 도커 이미지 확인
sudo docker images
2. 도커 이미지 컨테이너 실행
내려받은 jenkins 이미지로 컨테이너를 생성합니다.
# 도커 이미지를 컨테이너로 실행.
sudo docker run -d -p 8282:8080 -v /jenkins:/var/jenkins_home --name jenkins -u root jenkins/jenkins:lts
옵션 설명
- --detach, -d : 컨테이너를 생성하고 백그라운드에서 실행한다
- -name : 컨테이너 이름 지정
- --publish, -p : 컨테이너의 포트를 호스트에 게시
- --volumes, -v : 볼륨 바인드 마운트 설정
- --user, -u : 사용자 이름 또는 UID
3. 도커 실행 확인 및 초기 비밀번호 확인
젠킨스 컨테이너의 정상작동 여부를 확인합니다.
# 컨테이너 확인
sudo docker ps -a
# 결과
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e9259f32dcd jenkins/jenkins:lts "/sbin/tini -- /usr/…" 6 months ago Up 6 months 50000/tcp, 0.0.0.0:8282->8080/tcp, :::8282->8080/tcp jenkins
# 로그 확인
sudo docker logs jenkins
아래 명령어로 젠킨스 컨테이너의 로그를 확인합니다.
# 로그 확인
sudo docker logs jenkins
정상적으로 설치된 경우 아래와 같이 초기 비밀번호를 확인할 수 있습니다.
4. Nginx 리버스 프록시 설정
다음으로, Nginx를 통해 리버스 프록시를 설정합니다.
server {
listen 80;
# 아래 도메인으로 접속하는 경우 리버스 프록시
server_name jenkins.domain.com;
charset utf-8;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 젠킨스 8282 포트로 연결.
proxy_pass http://localhost:8282;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
5. 젠킨스 기본 설정
Docker를 통해 Jenkins 컨테이너가 정상적으로 구동되고 리버스 프록시 설정까지 완료되었다면 설정한 도메인으로 접속해 봅니다.
예) http://jenkins.domain.com
접속 후 초기 준비 화면이 보일 수 도 있으나 준비가 완료 되면 아래와 같이 관리자 비밀번호를 입력하라는 창이 나타납니다.
초기 비밀번호는 아래 붉은색 글씨로 표시되는 /var/jenkins_home/secrets/initialAdminPassword 경로에서 확인이 가능합니다.
본 설명에서는 도커를 통해 설치 했기 때문에 위 경로로 접근을 위해서는 실행된 컨테이너에 접속이 필요합니다.
# 젠킨스 컨테이너 접속
sudo docker exec -it jenkins_container /bin/bash
# 실행 후 아래와 같이 새 세션이 실행됨.
root@9e9259f32dcd:/#
# 초기 비밀번호 확인 (root@9e9259f32dcd:/#)
sudo cat /var/jenkins_home/secrets/initialAdminPassword
위 명령어로 초기 비밀번호를 확인하고 입력한 뒤 'Continue' 클릭!
다음으로 플러그인 설치에 대한 옵션을 선택할 수 있습니다.
1. 제안되는 플러그인 모두 설치(권장)
2. 선택한 특정 플러그인만 설치
'Install suggested plugins' 선택하여 제안되는 플러그인을 모두 설치합니다.
6. 젠킨스 계정 생성 및 인스턴스 URL 설정
플러그인 설치가 완료 되면 관리자 계정 생성을 진행합니다.
계정 정보를 모두 입력하고 'Save and Continue'를 클릭합니다.
다음으로 Jenkins 인스턴스의 URL을 설정하는 화면이 나오는데, URL 필드는 이미 입력된 값으로 진행합니다.
7. 젠킨스 설치 완료
마지막으로 'Jenkins is ready!'라는 문구와 함께 모든 설정이 완료되었고 Jenkins를 사용할 준비를 마쳤습니다.
'Start using Jenkins' 버튼을 클릭하면 최초 생성한 관리자 계정으로 로그인한 Jenkins 메인 화면으로 리다이렉트 됩니다.
Conclusion
CI/CD 도구는 Jenkins 외에도 Bamboo, Circle CI, TeamCity, Travis CI 등 많이 존재합니다. 그중에서 Jenkins를 선택한 가장 큰 이유는 완전 무료라는 점입니다. 부분적으로 무료 서비스를 제공하는 도구들도 있지만 그 사용의 한계가 분명하고 제대로 사용하기 위해서는 어느 정도 비용이 발생할 수밖에 없습니다. 때문에 무료이면서 기능에 제한이 없는 Jenkins는 좋은 선택이 될 수 있습니다.
또한 많은 사용자층에서 파생되는 많은 레퍼런스 및 자료들이 큰 도움이 되고, 지속적으로 발전하는 플러그인 생태계 또한 젠킨스의 큰 장점으로 생각됩니다.
추후에 비용으로부터 자유로운 환경이 된다면 효율적인 측면을 최우선으로 하는 CI/CD 파이프라인을 구축해볼 생각입니다.
-
본 글은 개인적 기록을 목적으로 작성하였습니다.
작게나마 도움 되셨기를 바라며, 더 좋은 의견이나 잘못된 부분이 있다면 댓글을 남겨주세요~
댓글