Jenkins github 연동(2/2)

By | 2020년 4월 12일
Table of Contents

Jenkins github 연동(2/2)

https://github.com/skyer9/TestCiCd 는 테스트 후 퍼블릭으로 변경했습니다.

빌드 자동화

GitHub Integration 플러그인 설치

젠킨스 메인화면 > Jenkins 관리 > 플러그인 관리 에서, Gradle 을 검색하여 설치합니다.

Gradle 설정

프로젝트 구성으로 이동하여 Project url 을 설정합니다.

빌드 탭을 아래와 같이 설정합니다.

설정이 끝나면 저장을 눌러줍니다.

확인하기

Build Now 를 눌러 정상적으로 빌드되는지 확인합니다.

배포 자동화

배포는 젠킨스가 있는 서버에 배포하는 것으로 배포단계를 단순화 합니다.

또한 배포는 docker 를 이용하기에, 도커가 설치되어 있지 않으면 설치해 줍니다.

docker 설치

# snap 관련 버그가 있는 듯
# sudo snap install docker

sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 젠킨스에 docker 실행권한 부여
sudo usermod -a -G docker jenkins
sudo service docker restart
sudo service jenkins restart

마지막으로, 배포단계를 단순화 하기위해 무중단 배포는 고려하지 않습니다.

Dockerfile 추가

리포지터리에 Dockerfile 을 추가하고 아래 내용을 추가합니다.

# Start with a base image containing Java runtime
#FROM java:8
FROM jenkins/jenkins:jdk11

# Add Author info
LABEL maintainer="skyer9@gmail.com"

# Add a volume to /tmp
VOLUME /tmp

# Make port 8080 available to the world outside this container
EXPOSE 8080

# The application's jar file
ARG JAR_FILE=build/libs/TestCiCd-0.0.1-SNAPSHOT.jar

# Add the application's jar to the container
ADD ${JAR_FILE} to-do-springboot.jar

# Run the jar file
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/to-do-springboot.jar"]

빌드 스탭 추가

아래의 이미지와 같이 스탭을 추가하고 아래 명령을 입력해줍니다.

docker build -t jenkins-docker-sample-app/test .
docker ps -q --filter "name=jenkins-docker" | grep -q . && docker stop jenkins-docker && docker rm jenkins-docker || true
docker run -p 20000:8080 -d --name=jenkins-docker jenkins-docker-sample-app/test
docker rmi -f $(docker images -f "dangling=true" -q) || true

확인하기

github 에 커밋을 하면 빌드 및 배포가 모두 자동으로 진행됩니다.

답글 남기기