작성한 코드를 배포하려면 다음과 같은 순서가 필요하다.
그러나 배포할 때마다 하나하나씩 명령어를 입력하기에는 불편하므로 이 과정을 쉘 스크립트로 작성해 스크립트 실행만 하면 되게 해보자.
#! /bin/bash
REPOSITORY=/home/ec2-user/app/step1 #변수 저장, 쉘은 타입이 없음
PROJECT_NAME=spring-boot-aws-webservice #$변수명으로 사용
cd $REPOSITORY/$PROJECT_NAME/ #git clone 받았던 디렉토리 이동
echo "> Git Pull"
git pull #마스터 브랜치 최신 내용 pull
echo "> 프로젝트 Build 시작"
./gradlew build #프로젝트 내부 gradlew로 build
echo "> step1 디렉토리로 이동"
cd $REPOSITORY
echo "> Build 파일 복사"
cp $REPOSITORY/$PROJECT_NAME/build/libs/*.jar $REPOSITORY/
#build 결과물인 jar파일을 jar파일 모아둔 위치로 복사
#기존 수행중이던 스프링 부트 앱 종료
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar) #pgrep은 process id 추출, -f 옵션은 프로세스 이름으로 찾기
echo "현재 구동 중인 애플리케이션pid: $CURRENT_PID"
if [ -z "$CURRENT_PID" ]; then
echo "> 현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -15 $CURRENT_PID"
kill -15 $CURRENT_PID
sleep 5
fi
echo "> 새 애플리케이션 배포"
JAR_NAME=$(ls -tr $REPOSITORY/ | grep jar | tail -n 1)
#새로 실행할 jar 파일명 찾기 -> 여러 jar 파일이 생기기 때문에 tail -n으로 가장 나중의 jar 파일(최신 파일)을 변수에 저장
echo "> JAR Name: $JAR_NAME"
nohup java -jar $REPOSITORY/$JAR_NAME 2>&1 &
#찾은 jar 파일명으로 해당 jar 파일을 nohup으로 실행한다.
#내장 톰캣을 사용해서 jar 파일만 있으면 바로 웹 애플리케이션 서버를 실행할 수 있다.
#일반적으로 자바를 실행할 때는 java -jar 라는 명령어를 사용하지만,
#이렇게하면 사용자가 터미널 접속을 끊을 때 애플리케이션도 같이 종료되므로
# 터미널 종료시에도 계속 구동 될 수 있도록 nohup 명령어를 사용한다.
만들어진 스크립트에 실행 권한 추가 후 실행한다.
chmod +x ./deploy.sh
./deploy.sh
그 외 따라 해봤으나... 오류로 안됨
application-real.properties 인식이 안돼서 나는 오류 같은데 다음에 다시 보던지... 해야할듯
메인 페이지는 안들어가지고... login 페이지는 들어가진다 🙃
CI/CD 하는 거 궁금해서 성공시키고 싶었는데 아쉽다.........