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 에 커밋을 하면 빌드 및 배포가 모두 자동으로 진행됩니다.