개발자 키우기

배포 스크립트 작성 본문

Back-end/AWS

배포 스크립트 작성

개발자 키우기 2023. 5. 25. 21:03

deploy.tar
0.01MB

0. 사용할때 변경 해야 하는 사항들

check-and-restart.sh  =  profiles 확인

var.sh  =  GITHUB_ID / PROJECT_NAME / PROJECT_VERSION

 

주의점 .sh를 윈도우(맥)에서 잘못 클릭해서 실행되면 많은 파일들이 날라간다.... 조심하자 이미 한번 날려먹음 ㅠ


1. var.sh  // 환경 설정

 

#!/bin/bash

GITHUB_ID="TwoSharkbaby"
PROJECT_NAME="aws"
PROJECT_VERSION="0.0.1"
PROJECT_PID="$(pgrep -f ${PROJECT_NAME}-${PROJECT_VERSION}.jar)"
JAR_PATH="${HOME}/${PROJECT_NAME}/build/libs/${PROJECT_NAME}-${PROJECT_VERSION}.jar"

export GITHUB_ID
export PROJECT_NAME
export PROJECT_VERSION
export PROJECT_PID
export JAR_PATH

 


2. deploy.sh   //  배포 자동 스크립트 ( 실행 파일로 변경 해야됨 )

 

#!/bin/bash

# 1. env variable
source ./var.sh

echo "1. env variable setting complete"

# 2. clone delete
touch crontab_delete
crontab crontab_delete
rm crontab_delete
echo "2. cron delete complete"

# 3. server checking

if [ -n "${PROJECT_PID}" ]; then
        # re deploy
        kill -9 $PROJECT_PID
        echo "3. project kill complete"
else
        #first deploy

        # 3-1 apt update
        sudo apt-get -y update 1>/dev/null
        echo "3-1 apt-get update complete"

        # 3-2 jdk install
        sudo apt-get -y install openjdk-11-jdk 1>/dev/null
        echo "3-2 jdk install complete"

        # 3-3 timezone
        sudo timedatectl set-timezone Asia/Seoul
        echo "3-3 time zone setting complete"
fi

# 4. project folder delete
rm -rf ${HOME}/${PROJECT_NAME}
echo "4. project folder delete complete"

# 5. git clone
git clone https://github.com/$ {GITHUB_ID}/${PROJECT_NAME}.git

sleep 3s
echo "5. git clone complete"

# 6. gradlew
chmod u+x ${HOME}/${PROJECT_NAME}/gradlew
echo "6. gradlew u+x complete"

# 7. build
cd ${HOME}/${PROJECT_NAME}
./gradlew build
echo "7. gradlew build complete"

# 8. start jar
nohup java -jar ${JAR_PATH} 1>${HOME}/log.out 2>${HOME}/err.out &
echo "8. start server complete"

 

# 9. cron registration
touch crontab_new
echo "* * * * * ${HOME}/check-and-restart.sh" 1>>crontab_new
crontab crontab_new
echo "9. cron registration complete"


3. check-and-restart.sh  //  cron 스크립트 ( 실행 파일로 변경 해야됨 )

 

#!/bin/bash

source ./var.sh

if [ -z "$PROJECT_PID" ]; then
        nohup java -jar -Dspring.profiles.active=prod ${JAR_PATH} 1>${HOME}/log.out 2>${HOME}/err.out &
fi


 

- 출처 : 메타코딩 -