[Docker] Jenkins 도커로 실행하기
[Docker] Jenkins 도커로 실행하기
안녕하세요? 정리하는 개발자 워니즈입니다. 지난 시간까지는 도커에 대해서 기본개념과 사용법 위주로했는데요. 실제로 필요한 app을 컨테이너로 올리고 사용해보는 시간을 가져보려고 합니다.
다음의 주제로 연재를 해보려고합니다.
Jenkins 도커로 실행하기(1/3)
Jenkins 기본 셋업(Docker 내부에서 필요한 툴 설치)(2/3)
Jenkins 파이프라인 사용법(3/3)
사실 도커에 대해서 연습하는것도 있지만, Jenkins라는 툴에 대해서도 알아보는 시간을 갖어보려는 의도도 있습니다.
1. Jenkins 란 무엇인가요?
필자가 진행하는 업무는 주로 어플리케이션 소스를 빌드하고 배포해주는 업무를 진행하고 있습니다. 그러다보니 CI/CD툴과 많이 밀접하게 업무를 하고 있습니다.
그러나, 내부적으로는 서버 OS에 직접 설치해서 사용하다 보니, 버전업을 하거나, 문제가 생겼을때 CI/CD툴에 대한 서비스 중단이 일어나게 됩니다. 그렇게 생각하게 된것이 도커로 올려보자! 였습니다.
- Jenkins 란 무엇인가요?
젠킨스는 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴이다. CI(Continuous Integration) 툴 이라고 표현한다.
다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해준다.
원래 허드슨 프로젝트로 개발되었고, 허드슨의 개발은 2004년 여름 썬 마이크로시스템즈에서 시작되었다. 그리고 2005년 2월에 java.net에 처음 출시되었다.
- 젠킨스가 주는 이점
개발중인 프로젝트에서 커밋은 매우 빈번히 일어나기 때문에 커밋 횟수만큼 빌드를 실행하는 것이 아니라 작업이 큐잉되어 자신이 실행될 차례를 기다리게 된다
코드의 변경과 함께 이뤄지는 이 같은 자동화된 빌드와 테스트 작업들은 다음과 같은 이점들을 가져다 준다.
프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출
자동화 테스트 수행
정적 코드 분석에 의한 코딩 규약 준수여부 체크
프로파일링 툴을 이용한 소스 변경에 따른 성능 변화 감시
결합 테스트 환경에 대한 배포작업
이 외에도 젠킨스는 500여가지가 넘는 플러그인을 온라인으로 간단히 인스톨 할 수 있는 기능을 제공하고 있으며 파이썬과 같은 스크립트를 이용해 손쉽게 자신에게 필요한 기능을 추가 할 수도 있다.
- CI/CD의 차이가 무엇인가요?
- CI(Continuous Integration)
개발자를 위한 자동화 프로세스인 지속적인 통합을 의미
빌드 및 테스트를 자동화 해준다.
예시
- 개발자는 자신의 로컬에서 코드를 수정하고 git에 push를 한다.
- CI 도구에서 변경된 코드에 대한 빌드와 테스트를 수행하고 결과를 피드백해준다.
- CD(Continuous Deploy)
CD는 배포 자동화에 대한 개념이다.
CD는 자동화의 수준에 따라 아래 2가지로 구별할 수 있다.
- Continous Delivery : PRD까지 수동배포
- Continuous Deployment : PRD까지 자동배
예시
- CI 가 수행되면 해당 파일을 CD에 전달한다.
- CD에서는 빌드가 완료된 파일을 받아서 전처리 / 후처리 등을 수행한다.
- CI(Continuous Integration)
2. Jenkins 도커로 올려보기
자 이제, 젠킨스에 대한 설명과 CI/CD에 대한 설명까지 마쳤습니다. 이제 도커 hub(공식 repository)에서 jenkins 이미지를 가져와서 컨테이너로 올려보도록 하겠습니다.
- 도커 이미지 가져오기
$ docker pull jenkins
가장 최근 버전의 jenkins 이미지가 pull 됩니다.
특정한 버전의 jenkins를 받고 싶으면, docker hub의 jenkins repository에 들어가서 원하는 tag를 찾아서 pull 받으면 됩니다.
-
도커 이미지 실행
$ docker run -d -p 8080:8080 -v /jenkins:/var/jenkins_home --name jenkins -u root jenkins
필자는 직접 docker run으로 올렸지만, compose yml 파일로 만들어 올릴 수 도 있습니다.
Jenkins 콤포즈
-d
: 데몬 동작(백그라운드 실행)
-p
: 포트포워딩
-v
: 볼륨 마운트
--name
: 컨테이너 이름
-u
: 컨테이너 실행 유저
- 웹페이지 테스트
위에서 8080포트로 띄웠기 때문에 VM의 아이피:8080으로 접속을 하면됩니다.
초기 패스워드는 터미널 프로그램을 통해 서버에 접속하여 아래 명령어를 실행하면 확인할 수 있습니다.
cat /var/lib/jenkins/secrets/initialAdminPassword
- 젠킨스 플러그인 설치
이어서 진행을 하게 되면, 플러그인 설치하는 화면이 나옵니다. 그리고 2가지 방식으로 설치 진행이 됩니다.
- 추천방식
- 선택방식
필자 같은 경우는 추천방식으로 진행을 했습니다.
- Admin 계정 생성
어드민 계정 / 패스워드를 만들어줍니다.
- 젠킨스 시작
자! 이제 설치가 완료되고 첫 화면입니다. 도커로 젠킨스 올리는것은 참 쉽죠?
3. 마치며
개인적으로 젠킨스를 많이 활용하고있지만, 젠킨스에 대해서 좀더 알아보고싶었습니다. 그러나 필자가 실제로 운영하는 젠킨스에서는 여러 시도를 해볼 수 없었습니다. 왜냐면 많은 사용자들이 실제 사용하는 것이기 때문이죠.
여기서 도커 컨테이너로 올려서 나만의 젠킨스에서 여러가지 실험을 해보자! 라는 생각으로 컨테이너로 올려봤고, 여러가지 실험을 진행중입니다.
도커를 알면 알수록 정말 개발자에게 좋은것 같습니다.
다음시간에는 Jenkins 기본 셋업(Docker 내부에서 필요한 툴 설치) 에 대해서 알아보도록 하겠습니다.