프로젝트 배포 시 많은 과정과 명령어 입력이 수행됨.
따라서 명령어를 작성해 둔 쉘 스크립트로 이를 실행하는 것이 배포 스크립트.
생성 후 파일 권한을 설정해준다.
chmod +x ./deploy.sh
#!/bin/bash
# 배포 스크립트 위치
REPOSITORY=/home/ec2-user
# 프로젝트 레포 이름
PROJECT_NAME=Co-De
# 프로젝트 레포로 이동
cd $REPOSITORY/$PROJECT_NAME/
# git pull
echo "> Git Pull"
git pull origin main
echo "> 프로젝트 Build 시작"
./gradlew build
echo "> step1 디렉토리 이동"
cd $REPOSITORY
echo "> Build 파일 복사"
# ~위치에 SNAPSHOT으로 끝나는 파일 복사
cp $REPOSITORY/$PROJECT_NAME/build/libs/*SNAPSHOT.jar $REPOSITORY/
# SNAPSHOT.jar 파일 이름 "JAR_NAME"으로 저장
JAR_NAME=$(ls | grep *SNAPSHOT.jar | tail -n 1)
echo "> JAR Name: $JAR_NAME"
# 스프링 서버가 구동중인지 확인
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(ls | pgrep -f *.SNAPSHOT.jar)
echo "현재 구동 중인 애플리케이션 pid: $CURRENT_PID"
if [ -z "$CURRENT_PID" ]; then
echo "> 현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -15 $CURRENT_PID"
kill -15 $CURRENT_PID
sleep 5
fi
# 애플리케이션 배포
echo "> 새 애플리케이션 배포"
java -jar $JAR_NAME 2>&1 &
과정. 위에 설명과 함께 나와있다.
EC2에 따로 저장한 application.properties도 빌드 시 같이 실행시키고 싶으면
배포 스크립트 맨 밑의 애플리케이션 실행 코드를 아래 두 형식 중 한 형식으로 변경시켜주면 된다.
java -jar $JAR_NAME --spring.config.location=file:///home/ec2-user/application.properties 2>&1 &
java -jar \
-Dspring.config.location=classpath:/application.properties,/home/ec2-user/application.properties \
$JAR_NAME 2>&1 &
classpath:/application.properties는 기본 classpth 경로 : src/main/resources 안에 application.properties가 생성됨.
/home/ec2-user/application.properties 는 내가 저장한 application.propertes 경로
근데 application.properties는 jar파일과 같은 경로에 있으면 애플리케이션 실행 시 자동으로 설정 됨.