본문 바로가기

DevOps/Jenkins

[Jenkins #0] Docker를 이용한 Jenkins 설치 및 업데이트

728x90

안녕하세요 오랜만입니다.

 

이번에는 CI/CD 툴 중 가장 기본적인 Jenkins에 대해 글을 써보려합니다.

 

젠킨스가 뭐냐? 라고 질문했을때 저는 이렇게 대답할 거 같습니다.

 

'일련의 과정을 처리해 주는 웹 서버'

 

여기서 일련의 과정이란 사용자가 만든 job들이 될거구요 

 

저는 처음에 젠킨스를 아예 몰랐을 때 특정 프로그램인 줄 알았습니다. 어떻게 자동화를 시켜준다는거지??

기본적인 작동방식을 모르니까 감이 아예 안왔거든요

 

간단하게 예를 들어 설명해보겠습니다.

 

사용자가 코드를 편집하고 있습니다.

해당 코드는 github에 레포지토리로 올라가 있는 상황이고 해당 레포지토리는 jenkins서버에 연결되어 workspace에 관리되고있습니다.

이 때 사용자가 편집한 코드를 커밋하고 푸쉬를 하게 됐을 때 레포지토리에 push가 인식되고 jenkins서버는 이 신호를 인지하여 (webhook이라고 합니다.) 설정된 일련의 과정들을 실행하게 됩니다.

 

예를 들어 push된 코드의 코딩컨벤션을 확인하거나, push된 코드들을 docker image로 만들어 배포하거나 등등의 과정을 말이죠

 

이게 대략적인 젠킨스의 설명입니다.

 

그럼 바로 설치해보겠습니다.

 

 

https://hub.docker.com/_/jenkins

 

jenkins - Docker Hub

DEPRECATION NOTICE This image has been deprecated in favor of the jenkins/jenkins:lts image provided and maintained by Jenkins Community as part of project's release process. The images found here will receive no further updates after LTS 2.60.x. Please ad

hub.docker.com

해당 이미지는 jenkins 오피셜 이미지 입니다. 우리는 여기서 lts태그의 젠킨스 이미지를 이용할 예정입니다.

docker pull jenkins:lts

 

 

이미지를 받고 run을 해줄건데 이 때 설정해줄 것 들이 있습니다.

 

 

docker run --name <컨테이너명> -d -p 8080:8080 -p 50000:50000 -v /home/taeil/jenkins/volume:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock <젠킨스이미지>

자 하나하나 설명해드리겠습니다.

 

docker run : 말그대로 이미지 실행 명령입니다.

 

--name <컨테이너명> : 생성할 컨테이너의 이름을 지정하는 부분입니다. 

 

-d : 백그라운드로 실행시키는 옵션입니다.

 

-p 8080:8080 -p 50000:50000 : 포트포워딩 부분입니다. 젠킨스는 포트를 8080과 50000을 사용하므로 두개를 포워딩해줘야합니다. 이 때 앞쪽의 포트는 포워딩할 포트이고 뒤쪽의 포트번호는 포워딩될 포트이기 때문에 필요상황에 따라 앞부분의 포트번호를 수정해주시면됩니다.

 

-v <로컬볼륨경로>:<젠킨스컨테이너안의볼륨> : 볼륨에 관한 옵션입니다. 앞의 부분이 로컬부분에 대한경로를 적어주시면되고 뒤쪽이 컨테이너 안의 마운트할 부분입니다. 저는 뒤쪽에 -v옵션을 하나 더 썼는데 이는 Docker때문입니다. 기본적으로 Docker 컨테이너 안에서 Docker를 실행할 수 없는데 (컨테이너 내에서 도커 데몬을 실행 불가함) 이렇게 볼륨 마운트를 해주면 컨테이너 안에서 docker명령어를 사용할 수 있습니다. 다만 외부 docker이기 때문에 컨테이너 내에서 실행된 것이 아닙니다.

 

<젠킨스 이미지> : 젠킨스 이미지를 적어주시면됩니다.

 

실행을 하고 젠킨스 홈페이지로 들어가면 최초로 비밀번호를 입력하는 창이나옵니다.

 

당황하지 마시고 log를 보시면 패스워드가 나오니 보시면됩니다.

 

docker logs <컨테이너 명>

tip : -f 옵션을 주시면 실시간으로 컨테이너 log를 모니터링할 수 있습니다.

 

비밀번호 입력. 해당 경로를 봐도된다.

 

그 다음 기본 플러그인 설치 사용자 계정 만들기 등을 모두 거치면

 

 

젠킨스

위와 같은 젠킨스 화면을 볼 수 있습니다.

 

 

 

 

우리가 설치한 해당 젠킨스 버전은 낮은 버전이기 때문에 업그레이드를 해줍시다.

docker로 설치했기 때문에 조금 어렵다고생각할 수도 있지만 쉬우니 이번기회에 해줍시다.

 

 

우선 컨테이너에 root 권한으로 접속해야합니다.

docker exec -u root -it <컨테이너 명> bin/bash

 

업데이트 할 jenkins를 wget을 이용해 다운합니다.

 

wget http://updates.jenkins-ci.org/download/war/<버전>/jenkins.war

이 때 젠킨스 버전은 최신 버전 확인 후 입력해 주세요

 

jenkins.war파일을 이동시킵니다.

mv ./jenkins.war /usr/share/jenkins 

 

파일 소유권을 변경 시키고 컨테이너를 재시작합니다.

chown jenkins:jenkins /usr/share/jenkins/jenkins.war

exit

docker restart <컨테이너 명>

 

업데이트 완료입니다. ^~^

반응형