AWS
[신]배포 스크립트 만들기 - EC2, Amazon Linux
주씨.
2023. 1. 20. 17:44
728x90
github에는 업로드되지 않은 설정파일들을 생성, 붙여넣기
vim /home/ec2-user/app/application-oauth.yml
vim /home/ec2-user/app/application.yml
shell 파일 생성
vim ~/app/step1/deploy.sh
#!/bin/bash
REPOSITORY=/home/ec2-user #1
PROJECT_NAME=termterm-BE
cd $REPOSITORY/$PROJECT_NAME/ #2
echo "> git pull 시작"
git pull
echo "> 프로젝트 build 시작"
./gradlew build --exclude-task test #4
echo "> 홈 디렉토리로 이동"
cd $REPOSITORY
echo "> Build 파일 복사"
cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/ #5
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(lsof -ti:8080) #6
echo "현재 구동중인 애플리케이션 pid: $CURRENT_PID"
if [ -z "$CURRENT_PID" ]; then #7
echo "> 현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -9 $CURRENT_PID"
kill -9 $CURRENT_PID
sleep 5
fi
echo "> 새 애플리케이션 배포"
JAR_NAME=$(ls -tr $REPOSITORY/ | grep jar | tail -n 1) #8
echo "> JAR Name : $JAR_NAME"
nohup java -jar -Dspring.config.location=/home/ec2-user/application-prod.yml,/home/ec2-user/application-auth.yml -Dspring.profiles.active=prod $REPOSITORY/$JAR_NAME 2>&1 & #9
#5 :
build의 결과물인 jar 파일을 복사해 jar 파일을 모아둔 위치로 복사합니다.
#8 :
새로 실행할 jar 파일명을 찾는다.
여러 jar 파일이 생기기 때문에 tail -n로 가장 나중의 jar 파일(최신파일)을 변수에 저장한다.
생성한 스크립트에 실행 권한 추가
chmod +x ./deploy.sh
./deploy.sh
#!/bin/bash
REPOSITORY=/home/ec2-user #1
PROJECT_NAME=Iterview-BE
cd $REPOSITORY/$PROJECT_NAME/ #2
echo "> git pull 시작"
git pull
echo "> 프로젝트 build 시작"
./gradlew build --exclude-task test #4
echo "> 홈 디렉토리로 이동"
cd $REPOSITORY
echo "> Build 파일 복사"
cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/ #5
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(lsof -ti:8080) #6
echo "현재 구동중인 애플리케이션 pid: $CURRENT_PID"
if [ -z "$CURRENT_PID" ]; then #7
echo "> 현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -9 $CURRENT_PID"
kill -9 $CURRENT_PID
sleep 5
fi
echo "> 새 애플리케이션 배포"
JAR_NAME=$(ls -tr $REPOSITORY/ | grep jar | tail -n 1) #8
echo "> JAR Name : $JAR_NAME"
nohup java -jar -Dspring.config.location=/home/ec2-user/application.yml, $REPOSITORY/$JAR_NAME 2>&1 & #9