끄적끄적 코딩일지

[Spring] Jenkins를 사용해 자동배포 구현하기 (2) 본문

Spring

[Spring] Jenkins를 사용해 자동배포 구현하기 (2)

BaekGyuHyeon 2022. 8. 3. 12:39

저번글에 이어서 이번 글에서는 Spring 자동배포 방법을 포스팅 하겠다.

 

※ 먼저 이 글은 Spring 서버와 Jenkins서버가 분리되어 있으며 각 서버는 EC2 free tier Ubuntu 18.04 버전으로 되어있다.

자동배포는 Jenkins에서 SSH 연결을 통해 배포파일 업로드 및 Shell Script 실행하는 방식으로 진행되며 현제 Ubuntu 20번대 버전에서는 Jenkins에서 SSH 연결을 하지 못하는 버그가 있으므로 참고하면 된다.


자동배포를 SSH를 통해서 하는경우 데시보 -> Jenkins 관리 -> 플러그인 관리 -> 설치 가능에서 

Publish Over SSH를 설치한다.

 

이어서 Jenkins 관리 -> 시스템 설정에서 제일 아래에 있는 Publish over SSH에서 SSH 연결할 EC2 설정을 진행한다.


 

이어서 데시보드에서 새로운 Item + 를 선택한다.

프로젝트 이름을 입력하고 Freestyle project으로 생성한다.

이어서 프로젝트에 대한 설정을 진행한다.

사용자 인증정보 추가(Github Access Token 사용)

0.

만약 gradlew,wrapper,setting.gradle 같은 gradle 파일이 github repository상에 올라가있어 github pull만으로 gradle 실행이 가능하다면 아래와 같이 설정을 입력한다. 아닐경우 Jenkins 관리 -> 시스템 설정에서 gradle 설정을 추가로 해주어야 한다.

실행시킬 shell script 코드는 아래를 확인하자

#!/bin/bash
# 실행중인 spring 종료
PID=`ps -e | grep java | awk '{print $1}'`
if [ $PID ]
           then
           kill -9 $PID
fi
# 파일 이름
FILE=myBuildFile.jar
# nohup 명령으로 배포 파일 실행
nohup java -jar $FILE >/dev/null 2>&1 &

 

여기까지 되면 Jenkins 설정은 끝난다.

이후 데시보드에서 생성된 프로젝트 선택후 [지금 빌드]를 누르면 빌드가 되는것을 확인할 수 있다.

 

그다음 빌드 유발을 자동으로 하기위해 연결한 Github Repository에서 setting -> webhooks -> add webhook 에서 jenkins의 url을 입력한다.

 

그후 연결해둔 branch에 push를 하면 자동으로 빌드가 되는것을 확인할 수 있다.