새소식

기술/Application

Jenkins Pipeline을 이용한 Docker Image Build

  • -

안녕하세요. 이전 글에서 설치한 Jenkins를 이용하여 Docker Image를 Build 해보겠습니다.

 

먼저 Jenkins를 접속한 후 Docker 관련된 플러그인을 설치합니다.

 

Jenkins 관리 -> 플러그인 관리 -> 설치 가능 페이지에서 docker를 검색합니다.

 

검색 후 아래 플러그인을 선택한 후 설치하여 주세요.

해당 플러그인의 설치를 진행하면 실제로는 아래 플러그인들이 추가로 설치됩니다.

Amazon ECR은 AWS에서 제공하는 Docker Private Repository입니다.

 

AWS Global Configuration는 AWS Access Key를 사용하기 위해 설치합니다.

 

해당 플러그인 2개를 사용하여  ECR에 배포하는 방법도 추후 가이드할 예정입니다.

 

Jenkins에 Docker 관련 플러그인은 설치하였으나, Jenkins Container 안에는 Docker가 설치되어 있지 않습니다.

 

이제 Docker 안에 Docker를 설치를 해보겠습니다.

# Docker Container 접속
$ docker exec -it jenkins bash

# Docker설치를 위한 Shell 다운로드
$ curl -fsSL get.docker.com -o get-docker.sh

# Docker install shell script 실행
$ sh get-docker.sh

# docker 실행 가능 여부 확인
$ docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                              NAMES
094c32442200        teichae/jenkins:0.1   "/sbin/tini -- /usr/??   About an hour ago   Up About an hour    0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   jenkins

이제 build를 진행할 Dockerfile을 준비합니다.

 

파일이 없다면, 여기에서 Dockerfile을 받아주세요.

 

이제 Jenkins에서 새로운 item을 누르고, pipeline 선택 후 item의 이름을 입력해주세요.

 

Pipeline 메뉴에서 Definition을 Pipeline script from SCM을 선택하여 주세요.

Private Repository의 경우 인증정보가 없기 때문에 Repository를 찾을 수 없습니다.

 

Credentials 기능을 이용하여 인증정보를 넣으면 새로고침이 되며, Repository를 찾을 수 있게 됩니다.

 

이제 Script path를 물어보게 되는데, jenkinsfile-build에 각 단계를 규정해서 액션을 지정하면 됩니다.

 

여기에 사용한 jenkinsfile-build의 정의는 다음과 같습니다.

 node {
     stage('Clone repository') {
         checkout scm #repository를 jenkins workspace로 clone
     }

     stage('Build image') {
         app = docker.build("teichae/jenkins:$BUILD_NUMBER") #docker image build 및 이름을 teicahe/jenkins:빌드번호 설정
     }
}

이제 build를 위한 모든 준비는 마쳤습니다.

 

이제 빌드를 시작해보겠습니다.

 

Build Now를 누른 후 잠시 기다리면 빌드가 시작됩니다.

 

Dockerfile이 다소 단순하여 이미지가 순식간에 빌드되었습니다.

 

생성된 이미지를 확인해볼까요?

 

빌드 번호에 마우스를 가져가면 ▼ 메뉴가 보이게 되는데, Console Output을 누릅니다.

이런 식으로 이미지가 빌드된 것을 확인할 수 있습니다.

 

이번 작업에 대한 코드는 https://github.com/teichae/jenkins를 통해 공개하고 있습니다.

 

궁금한 사항은 언제든 댓글 달아주시면 보는 대로 답변드리겠습니다. :)

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.