Skip to content

Jenkins로 Docker 자동배포

Jin Young Park edited this page Nov 1, 2020 · 1 revision

Jenkins

Jenkins란?

SW 빌드, 테스트, 배포 등의 태스크를 자동화할 수 있는 오픈소스 자동화 서버.

대표적인 CI(Continuous Integration) 툴 중의 하나.

정기적인 빌드에서 나아가 Git과 연동하여 커밋을 감지하면 자동적으로 테스트가 포함된 빌드가 작동하도록 설정할 수 있다.

Jenkins 설치

sudo apt install openjdk-8-jre # java 설치
sudo wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add - # repository key 추가
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins # jenkins 설치

cloud에서 기본포트인 8080을 열어주거나 포트를 아래와 같이 변경해야 한다.

sudo vi /etc/default/jenkins

HTTP_PORT = 8080

웹에서 ip주소:(jenkins 포트)에 접속하면 jenkins에 접속할 수 있다.

image

(현재는 로그인된 상태)

adminPassword를 입력하고 유저를 생성한 뒤 로그인할 수 있다.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

플러그인 설치

Jenkins는 각 서비스와 연동할 수 있는 플러그인을 제공한다.

[Jenkins 관리] - [플러그인 관리]를 들어가 필요한 플러그인을 설치한다.

Nodejs Plugin, Public Over SSH Plugin을 설치했다.


자동배포

자동배포의 큰 흐름은 다음과 같다.

GitHub web hooks 연동을 통한 GitHub Push 감지 - 새로 merge된 github repo 받아오기 - 빌드를 통한 도커 이미지 생성 - 빌드 후에 새로운 도커 이미지로 도커 컨테이너 실행

프로젝트 생성

[새로운 item]을 통해 프로젝트를 생성한다.

Freestyle Project를 클릭

image

Github 연동

[General] - GitHub project 체크 후 Github Repo URL을 작성해준다. image

[소스코드 관리] - 똑같이 Repo URL을 적고 credential로 Github ID, password를 입력해준다.

  • 브랜치는 backend 브랜치로 설정한다. (backend 브랜치에 merge될때마다 감지)

[빌드유발] - GitHub hook trigger for GITScm polling를 체크해준다. image

Github Repo에 들어가서 [settings] - [Webhooks]에서 payload URL을 <ip주소>:<jenkins포트>/github-webhook/으로 해준다. image

빌드

docker 이미지를 생성하는 명령어를 빌드에 적어준다. image

빌드 환경

빌드 후에 docker를 실행하는 명령어를 적어준다. 이전에 jenkins 시스템 설정에서 public ssh 설정을 해주어야 한다. image

빌드 후 조치

간단하게 SUCCESSFUL을 띄워주는 Post build task를 설정하면 끝! image