Docker & Jenkins 구성 및 자동배포

SimDdong·2020년 7월 16일
7

Node.js CI/CD

목록 보기
2/2
post-thumbnail

이전 포스팅: Dockerizing a Node.js

이전에 만든 Docker를 이용해 Jenkins에서 자동배포를 해보겠습니다.

위 시리즈를 순서대로 보는 것을 추천합니다.

Github Fork

일단 본인 소유의 예제 프로젝트가 필요합니다.

깃허브에서 프로젝트 fork를 합니다.
깃허브: Example Dockerizing Express Github

그러면 본인 소유의 repository가 생성되었을 것입니다.

Jenkins 구성

Jenkins를 설치해야되는데 설치하기가 귀찮습니다.
Docker 이미지를 이용하여 간단하게 실행시켜봅시다.

먼저 빈 폴더를 생성합니다.

Dockerfile 작성

Dockerfile을 생성한 후 아래와 같이 입력합니다.

FROM jenkins/jenkins:lts

USER root 

RUN apt-get update && \
    apt-get -y install apt-transport-https \
        ca-certificates \
        curl \
        gnupg2 \
        zip \
        unzip \
        software-properties-common && \
    curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
    add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
    $(lsb_release -cs) \
    stable" && \
    apt-get update && \
    apt-get -y install docker-ce

docker-compose.yml 작성

docker-compose.yml을 생성합니다.

아래 문서를 보고 docker-compose를 구성해줍니다.
Jenkins Docker Documentation

아래는 윈도우 환경일 경우입니다. 리눅스 경우는 volumes를 수정하시면 됩니다.

# docker-compose.yml
version: '3.7'

services:
  jenkins:
    build: 
      context: .
    container_name: jenkins
    user: root
    ports:
      - 8080:8080
      - 50000:50000
    container_name: jenkins
    volumes:
      - ./jenkins_home:/var/jenkins_home
      - //var/run/docker.sock:/var/run/docker.sock

Jenkins 이미지 실행

위와 같이 파일을 작성하고 해당 폴더에서 아래 명령어를 실행합니다.

docker-compose up

그럼 젠킨스가 실행됩니다.

Jenkins 설정

http://localhost:8080 에 접속하고 설정을 해야합니다.

위 패스워드는 젠킨스 폴더에서 jenkins_home/secrets/initialAdminPassword 파일을 열면 확인할 수 있습니다.


Install suggested plugins를 선택합니다.
조금만 기다리시면 플러그인 설치가 끝납니다.
계정 생성 해주시고 기본적인 설정을 진행합니다.

프로젝트 구성


메인에서 새로운 Item 클릭 클릭합니다.


프로젝트 이름 입력 후 OK를 클릭합니다.


이 빌드는 매개변수가 있습니다를 선택 후 위와 같이 입력합니다.


소스 코드 관리에서 git을 선택한 후 본인이 fork하여 생성된 repository url을 입력합니다.


빌드에서 Add build step 클릭 후 Execute shell 선택 후 위와 같이 입력합니다.

매개변수가 있습니다에서 설정한 파라미터를 환경변수를 받은 후 build shell에서 사용할 수 있습니다. 또한 기본 환경변수를 제공합니다. (JOB_NAME: 작업이름, BUILD_NUMBER: 빌드번호)

docker rm 부분에서 | true는 이미지가 없을 경우 삭제를 할 시 오류가 발생하기에 항상 오류가 안나도록 처리합니다.

빌드 실행


Build with Parameters를 클릭합니다.


원하는 NODE_ENV를 입력합니다. (dev, test, production)


왼쪽 하단에 빌드번호와 함께 빌드가 완료된 파란색 동그라미가 나타납니다.

로컬에서 docker imagesdocker ps를 실행하면 생성된 이미지와 실행된 컨테이너를 확인할 수 있습니다.

push시 Github webhook 자동 빌드


프로젝트 구성에서 위 Github hook ~~을 체크하고 저장합니다.


Add Webhook 클릭하고 비밀번호를 입력합니다.


위와 같이 설정 후 Add webhook을 클릭합니다.

이제 github에 push할 시 github에서 jenkins로 webhook을 보내 자동 빌드를 합니다.

위의 기본 webhook 말고 다른 github 플러그인을 사용할 수 있습니다.

0개의 댓글