From 54706fa6ab9ade228a8f5fabcfbde4a126288a91 Mon Sep 17 00:00:00 2001 From: Junho Hwang <72647031+juno-junho@users.noreply.github.com> Date: Wed, 17 Apr 2024 21:23:49 -0700 Subject: [PATCH] Update deploy-blue-green.sh --- scripts/deploy-blue-green.sh | 56 ++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 19 deletions(-) diff --git a/scripts/deploy-blue-green.sh b/scripts/deploy-blue-green.sh index 492789d3..1cca0b75 100644 --- a/scripts/deploy-blue-green.sh +++ b/scripts/deploy-blue-green.sh @@ -3,19 +3,19 @@ source /home/ubuntu/action/scripts/properties.sh # jasypt 암호키 설정 PROJECT_NAME=space-club-backend -REPOSITORY=/home/ubuntu PACKAGE=$REPOSITORY/action/build/libs/ -JAR_NAME=$(ls -tr $PACKAGE | grep 'SNAPSHOT.jar' | tail -n 1) -JAR_PATH=$PACKAGE$JAR_NAME +REPOSITORY=/home/ubuntu +JAR_NAME=$(ls -tr $PACKAGE | grep 'SNAPSHOT.jar' | tail -n 1) # snapshot jar 파일 +JAR_PATH=$PACKAGE$JAR_NAME # action/build/libs/*SNAPSHOT.jar echo "> build 파일명: $JAR_NAME" # 금칙어 리스트 복사 (최신화) PROFANITY_LIST_LOCATION_TO_STORE=$REPOSITORY/bad_word_list.txt PROFANITY_LIST_LOCATION=$REPOSITORY/action/src/main/resources/secrets/bad_word_list.txt -echo "> 금칙어 list 복사" -cp -f $PROFANITY_LIST_LOCATION $PROFANITY_LIST_LOCATION_TO_STORE +echo "> 금칙어 list 복사" # 덮어 쓰기 +cp -f $PROFANITY_LIST_LOCATION $PROFANITY_LIST_LOCATION_TO_STORE -echo "> build 파일 복사" +echo "> build 파일 복사" # 덮어 쓰기 DEPLOY_PATH=$REPOSITORY/jar/ cp -f $JAR_PATH $DEPLOY_PATH @@ -44,23 +44,41 @@ echo "> application.jar 교체" IDLE_APPLICATION=$IDLE_PROFILE-SpaceClub.jar IDLE_APPLICATION_PATH=$DEPLOY_PATH$IDLE_APPLICATION +# jar 파일과 blue/green-SpaceClub.jar와 심볼릭 링크 생성 ln -Tfs $DEPLOY_PATH$JAR_NAME $IDLE_APPLICATION_PATH -echo "> $IDLE_PROFILE 에서 구동중인 애플리케이션 pid 확인" -IDLE_PID=$(pgrep -f $IDLE_APPLICATION) - -if [ -z $IDLE_PID ] -then - echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다." -else - echo "> kill -15 $IDLE_PID" - kill -15 $IDLE_PID - sleep 5 -fi - echo "> $IDLE_PROFILE 배포" sudo nohup java -jar $IDLE_APPLICATION_PATH --spring.profiles.active=develop,$IDLE_PROFILE --jasypt.encryptor.password=${encrypt} ----bad-word.path=$PROFANITY_LIST_LOCATION_TO_STORE > /home/ubuntu/log/nohup_log.out 2> /home/ubuntu/log/nohup_error.out & +echo "> 배포 후 기존 실행하던 애플리케이션을 종료합니다." +echo "> $PROFILE_BLUE, $PROFILE_GREEN 중에서 에서 구동중인 애플리케이션 pid 확인합니다." +if [ $IDLE_PROFILE = blue ] # idle profile이 blue이면 green을 종료 +then + APPLICATION_TO_KILL = green-SpaceClub.jar + IDLE_PID=$(pgrep -f $APPLICATION_TO_KILL) + if [ -z $IDLE_PID ] + then + echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다." + else + echo "> blue가 실행되었고 green을 종료합니다. kill -15 $IDLE_PID" + kill -15 $IDLE_PID + sleep 5 + fi +elif [ $IDLE_PROFILE == green ] # idle profile이 green이면 blue를 종료 +then + APPLICATION_TO_KILL = blue-SpaceClub.jar + IDLE_PID=$(pgrep -f $APPLICATION_TO_KILL) + if [ -z $IDLE_PID ] + then + echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다." + else + echo "> green이 실행되었고 blue를 종료합니다. kill -15 $IDLE_PID" + kill -15 $IDLE_PID + sleep 5 + fi +fi + +## 헬스 체크 echo "> $IDLE_PROFILE 10초 후 Health check 시작" echo "> curl -s http://localhost:$IDLE_PORT/actuator/health " sleep 10 @@ -90,7 +108,7 @@ do sleep 10 done -echo "> 스위칭" +echo "> nginx의 port를 변경합니다" sudo chmod +x /home/ubuntu/action/scripts/switch.sh sleep 10 $REPOSITORY/action/scripts/switch.sh