안녕하세요
저번에는 우분투에 Jenkins를 설치하는 방법에 대해 포스팅한 적이 있습니다.
[Jenkins] 우분투에 젠킨스 설치하기
# 운영 환경 OS Ubuntu 22.04 LTS JAVA OpenJDK-11 Version 젠킨스는 오픈소스 CICD 소프트웨어 도구로 현재 시장에서 널리 사용하고 있습니다. 실제 부트캠프를 통해서 메인 프로젝트를 진행할 때 초기에 자
nworlds.tistory.com
이번에는 젠킨스를 이용해서 자동 빌드와 배포에 대해서 포스팅을 시작하겠습니다.
대부분 설정이 비슷하지만 사용자의 프로젝트 환경에 따라서 다를 수 있습니다.
프로젝트 구성하기
프로젝트 생성
일단 자동 빌드를 위한 프로젝트를 생성하겠습니다.
01. 새로운 아이템을 클릭합니다.
02. 프로젝트 이름을 작성하고 Freestyle project를 선택합니다.
프로젝트 설정
전 단계에서 프로젝트를 구성했습니다.
생성된 프로젝트를 빌드할 수 있도록 설정해 봅시다.
01. 기본 깃허브 주소를 작성합니다.
설명은 선택사항으로 필요애 따라 작성해 주세요
JDK의 경우에는 개발을 진행하는 프로젝트에 따라 달라집니다.
저는 보편적으로 사용하는 OpenJDK 11 버전을 사용했습니다.
02. 배포를 위한 깃허브 정보를 입력합니다.
자격증명에는 배포하려는 프로젝트에 권한이 있는 계정을 사용하시면 됩니다.
브랜치는 기본으로 */master로 되어있지만 main으로 변경되었기 때문에 */main으로 변경해 주세요
02-A. 자격증명
처음 설정하시는 경우 자격 증명이 존재하지 않습니다
ADD를 눌러서 Jenkins를 누르면 하단과 같은 페이지가 열리는데
Username 에는 깃허브 이름을
Password는 깃허브 계정 설정을 통해서 획득하는 토큰을 입력해 주세요
ID의 경우에는 실제 배포 프로세스 중 보이는 이름을 의미합니다.
03. 빌드 중에 동작할 옵션을 선택합니다.
GITScm을 선택합니다.
선택한 브랜치에서 동작이 이루어지면 자동으로 빌드가 진행됩니다.
04. 빌드 환경은 필요에 따라서 선택을 진행해 주세요.
05. 빌드 동작을 정의합니다.
빌드 중에 진행될 동작을 이 섹션에서 정의합니다.
저희는 스프링 부트를 사용하기로 했기 때문에 프로젝트의 빌드를 위해 그래 들을 선택하겠습니다.
저는 사전에 정의된 그래들을 사용하겠습니다.
Tasks에는 jar 파일을 만들기 위해 bootjar를 입력했습니다 빌드 유형에 따라 작성할 수 있습니다.
상세한 옵션들은 하단의 사진처럼 사용자 정의가 가능합니다.
예시로는...
프론트와 백이 같이 있는 프로젝트라면 실제 빌드 루트경로는 달라질 테니
루트 빌드 스크립트에 해당 경로를 적어주어야 합니다.
그리고 추가적인 작업을 다양한 옵션을 통해서 작업하실 수 있는데
저는 주로 쉘 스크립트를 통한 빌드 후 자동 배포 작업을 진행하고는 합니다.
05-A. 스크립트
예시로 사용하는 스크립트를 첨부해 보겠습니다.
# 실제 사용하는 CICD 스크립트
pid=$(ps -ef | grep nendoro\* | grep -v "grep" | grep -v $0 | awk '{print $2}') # 기존 서버 PID 확인
if [ -z $pid ] # 앱이 작동중인지 체크
then
echo 앱이 작동중이 아닙니다. # 앱이 작동중 이 아니면 다음으로
else
kill -9 $pid # 앱이 작동중이면 PID로 강제 종료
echo 앱을 성공적으로 종료 했습니다, 프로세스 아이디: $pid.
fi
cd server/build/libs # 빌드 파일 위치로 이동
sudo rm -rf /home/newworld/Server/ProdServer/nendoro.place/public_html/nendoro*.jar # 기존 빌드 파일 삭제
sudo mv nendoro*.jar /home/newworld/Server/ProdServer/nendoro.place/public_html # 신규 빌드 파일을 운영 디렉터리로 이동
cd /home/newworld/Server/ProdServer/nendoro.place/public_html # 운영 디렉터리로 이동
BUILD_ID=dontKillMe nohup java -jar nendoro*.jar --spring.profiles.active=prod 2>> /dev/null >> /dev/null & # 빌드 파일 배포
echo ============ 새로운 빌드 성공적으로 배포중!!! [PID:$!] ============
프로젝트 빌드
이제 프로젝트를 빌드해 보겠습니다 실제 사진에서는 빌드까지의 장면만 담았습니다.
01. 지금 빌드를 클릭해서 빌드를 유발합니다.
02. 빌드에 성공했습니다 실패한다면 빨간색으로 표시가 됩니다.
03. 콘솔 출력 확인
실제로 설정한 동작이 잘 이루어졌는지 출력등을 통해서 체크할 수 있습니다.
만약에 오류가 발생했다면 그것도 역시 콘솔 로그를 통해서 확인할 수 있습니다.
성공적으로 자동 빌드와 배포를 진행했습니다.
- 틀린 설명이 있다면 지적해 주시면 수정하겠습니다.
- 댓글 달아주시면 큰 도움이 됩니다.