Jenkins로 빌드 자동화 구축하기

마이클의 AI 연구소·2022년 9월 16일
0
post-thumbnail

본 문서는 Jenkins를 설치하고 실행하기 위한 내용을 포함합니다.


개요

젠킨스는 CI / CD를 지원하는 오픈소스 자동화 프로그램입니다. 빌드를 자동화해주는 젠킨스를 우분투 운영체제에 도커로 설치해 구동하는 것까지 진행합니다.

필요 사항

도커 설치

sudo apt remove docker docker-engine docker.io containerd runc
# docker 리포지토리에 접근하기 위한 키 생성 설정
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 패키지 매니저가 docker 설치 시, 설치 위치를 알기 위한 repository 추가
sudo add-apt-repository \ 
 "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 

# 위에서 추가한 repository를 위해서 업데이트!
sudo apt update

# docker 설치
sudo apt install docker-ce

# 깔려서 잘 실행되는지 확인한다.
# Active: active (running) 라는 문구가 보이면 된거다.
sudo systemctl status docker

도커 sudo 없이 쓰기

sudo usermod -aG docker ${USER}

##### 아래 2줄은 현재 계정으로 다시 로그인하기 위한 일종의 trick 이다. 
##### 만약 아래처럼 못하면 그냥 exit으로 아예 터미널 종료 후, 다시 로그인을 시도한다.
sudo su - # 루트 계정으로 접속
su - ubuntu # 다시 원래 계정으로 로그인

# 제대로 docker 라는 group에 들어갔는지 확인한다.
# "docker"라는 문구가 보이면 성공한 것이다.
groups ubuntu 

# sudo 없이 되는지 테스트해보자. 아래 명령어는 docker 명령어 테스트용으로 자주 쓴다.
docker run hello-world

도커 컴포즈 설치


sudo curl -L \ 
"https://github.com/docker/compose/releases/download/1.28.5/dockercompose-$(uname -s)-$(uname -m)" \ 
-o /usr/local/bin/docker-compose
# 이 명령어는 외부에서 그대로 파일을 가져와서 현재의 시스템에 올려 놓는 것이다.
# 결과적으로 "/usr/local/bin/" 경로에 "docker-compose" 라는 이름의 파일로 다운된다.
# 참고) https://github.com/docker/compose/releases 에서 최신 버전 확인이 가능하다.
# 최신 버전을 설치하고 싶다면 위 명령어에 보이는 1.28.5 라는 버전 숫자를 바꿔주면 된다!

sudo chmod +x /usr/local/bin/docker-compose  # chmod 를 통해서 실행이 가능하게 세팅

docker-compose -v # docker-compose 명령이 제대로 먹히는 지 확인한다.

젠킨스 환경구성을 위한 디렉토리 생성

mkdir ~/jenkins-data
cd ~/jenkins-data

설치 구성 파일생성

Dockerfile

젠킨스 상에서 사용자를 root로 지정하고 docker를 설치한다는 내용의 Dockerfile을 작성합니다.

FROM jenkins/jenkins:lts

USER root

# install docker
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 작성

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

Jenkins 구동

docker-compose up -d

구동 확인

docker container ls

Jenkins 접속

http://192.168.0.31:8080

최초 설치시 시크릿키 입력

docker logs jenkins 명령을 통해 출력되는 시크릿키를 입력하여 로그인합니다.

Plugin 설치

Plugin 설치 목록

  • Gitlab API
  • Gitlab Plugin
  • Docker API Plugin
  • Docker Pipeline
  • Docker Commons Plugin
  • Global Slack Notifier Plugin
  • Slack Notification Plugin

시간대 설정

Manage → Script Console → 아래 스크립트 입력 → Run
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Seoul')

빌드 실행 주기 설정

매일 9시, 12시, 18시에 빌드 실행

H 09,12,18 * * 0

1시간 간격으로 빌드 실행

H * * * *

profile
늘 성장을 꿈꾸는 자들을 위한 블로그입니다.

0개의 댓글