목표 :
1) 개발 server를 구축할 git의 repo에서 build 후 생성될 spring app.jar 파일을 실행한다.
2) 혹여나 개발자의 Local환경에서 8080 port 사용으로 app.jar 실행에서 충돌을 방지하기 위해 Build Steps의 Execute shell 작성한다.
jenkins의 Crentials 기능을 위해 git token 생성 후 등록!
연결 git-repo ssh 코드 URL 입력
branch 선정은 필수 !
Github Webhook을 이용한 자동 빌드 환경 구축 링크https://github.com/namjunemy/TIL/blob/master/Tools/jenkins_github_hook_trigger_for_gitscm_polling.md
echo "> 8080 port 사용하는 애플리케이션 pid 확인"
#Auto_PID=$ ps -ef | awk '/:8080/ { print $1 }'
Auto_PID=$(ps -ef | awk '/:8080/ { print $2 }')
echo "$Auto_PID"
# 만약 해당 포트를 사용하는 프로세스가 존재하면 종료
if [ ! -z "$Auto_PID" ]; then
echo "애플리케이션을 종료합니다."
#애플리케이션을 강제로 종료하고, 종료 후 5초 동안 대기
kill -9 $Auto_PID
sleep 5
else
# 8080 port의 PID가 비어 있으면 실행
echo "현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
fi
echo "> app.jar위치 디렉토리로 이동"
cd $REPOSITORY
echo "> Build 파일 복사"
cp app.jar playlist_be.jar
echo "> 새 애플리케이션 배포"
# JAR_NAME 변수 정의
JAR_NAME="playlist_be.jar"
# build된 JAR 파일을 $REPOSITORY 디렉토리로 복사
cp app.jar "$JAR_NAME"
# 백그라운드 실행
echo "› JAR Name: $JAR_NAME"
nohup java -jar $REPOSITORY/$JAR_NAME 2>&1 &
#! /bin/bash
echo "> 8080 port kill && Auto build"
REPOSITORY=/var/app
echo "> 8080 port 사용하는 애플리케이션 pid 확인"
#Auto_PID=$ ps -ef | awk '/:8080/ { print $1 }'
Auto_PID=$(ps -ef | awk '/:8080/ { print $2 }')
echo "$Auto_PID"
# 만약 해당 포트를 사용하는 프로세스가 존재하면 종료
if [ ! -z "$Auto_PID" ]; then
echo "애플리케이션을 종료합니다."
#애플리케이션을 강제로 종료하고, 종료 후 5초 동안 대기
kill -9 $Auto_PID
sleep 5
else
# 8080 port의 PID가 비어 있으면 실행
echo "현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
fi
echo "> app.jar위치 디렉토리로 이동"
cd $REPOSITORY
pwd
echo "> Build 파일 복사"
# 8080dd 포트를 사용하는 프로세스의 PID를 검색
cp app.jar playlist_be.jar
ls -al
echo "> 새 애플리케이션 배포"
# JAR_NAME 변수 정의
JAR_NAME="playlist_be.jar"
# 파일 복사 명령어
cp app.jar "$JAR_NAME"
# 파일 복사 명령어
cp app.jar "$JAR_NAME"
# 백그라운드 실행
echo "› JAR Name: $JAR_NAME"
nohup java -jar $REPOSITORY/$JAR_NAME 1>nohup.log 2>&1 &
# deply script는 반드시 playlist.be에서 실행되어야만 합니다.
:se nonu
참고문헌 : 스프링 부트와 aws로 혼자 구현하는 웹 서비스 - 이동욱