배포 스크립트 작성
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
- 출처 : 메타코딩 -