-
Notifications
You must be signed in to change notification settings - Fork 4
Jenkins로 Docker 자동배포
SW 빌드, 테스트, 배포 등의 태스크를 자동화할 수 있는 오픈소스 자동화 서버.
대표적인 CI(Continuous Integration) 툴 중의 하나.
정기적인 빌드에서 나아가 Git과 연동하여 커밋을 감지하면 자동적으로 테스트가 포함된 빌드가 작동하도록 설정할 수 있다.
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에 접속할 수 있다.
(현재는 로그인된 상태)
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를 클릭
[General] - GitHub project 체크 후 Github Repo URL을 작성해준다.
[소스코드 관리] - 똑같이 Repo URL을 적고 credential로 Github ID, password를 입력해준다.
- 브랜치는 backend 브랜치로 설정한다. (backend 브랜치에 merge될때마다 감지)
[빌드유발] - GitHub hook trigger for GITScm polling를 체크해준다.
Github Repo에 들어가서 [settings] - [Webhooks]에서 payload URL을 <ip주소>:<jenkins포트>/github-webhook/으로 해준다.
docker 이미지를 생성하는 명령어를 빌드에 적어준다.
빌드 후에 docker를 실행하는 명령어를 적어준다. 이전에 jenkins 시스템 설정에서 public ssh 설정을 해주어야 한다.
간단하게 SUCCESSFUL을 띄워주는 Post build task를 설정하면 끝!