- EC2에 Git 설치 및 프로젝트 Clone
- 배포 스크립트 생성
- Execution failed for task ':compileQuerydsl' : ec2에서 프로젝트 실행시 querydsl 파일 없음
작성한 코드를 실제 서버에 반영하는 것을 배포라고 한다.
따라서 배포라 하면 다음의 과정을 모두 합친 듯이라고 생각하면 된다.
git clone 혹은 git pull 을 통해 새 버전의 프로젝트 받음
Gradle/ Maven을 통해 프로젝트 test와 build
EC2 서버에서 해당 프로젝트 실행 및 재실행
위 과정을 배포시마다 하나하나 명령어를 실행하는 것이 불편하기 때문에
쉘 스크립트로 작성하여 스크립트만 실행하면 위 과정이 차례대로 진행되도록 할 수 있다.
EC2 인스턴스에서 배포할 프로젝트 repository가 있는 폴더에 deploy.sh
파일을 만들고 아래와 같이 파일의 코드를 설정한다.
#!/bin/bash
REPOSITORY=/home/ec2-user/app/git //📌repository 주소를 변수로 저장, 쉘에서는 '$'앞에 붙여서 사용 가능
cd $REPOSITORY/KnockKnock{repository명}/ //📌제일 처음 git clone 받았던 디렉토리로 이동
echo "> Git Pull"
git pull //📌master 브랜치의 최신 내용 받기
echo "> 프로젝트 Build 시작"
./gradlew build
echo "> Build 파일 복사"
cp ./build/libs/*.jar $REPOSITORY/ //📌build의 결과물인 jar 파일을 복사해 jar파일을 모아둔 위치로 복사
echo "> 현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -f KnockKnock{프로젝트명}) //📌기존에 수행중이던 스프링부트 어플리케이션 종료
echo "$CURRENT_PID"
if [ -z $CURRENT_PID ]; then //📌 현재 구동중인 프로세스가 있는지 판단, 있으면 종료
echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다."
else
echo "> kill -2 $CURRENT_PID"
kill -9 $CURRENT_PID
sleep 5
fi
echo "> 새 어플리케이션 배포"
JAR_NAME=$(ls $REPOSITORY/ |grep 'KnockKnock' | tail -n 1) //📌새로 실행할 jar 파일명 찾기
echo "> JAR Name: $JAR_NAME"
nohup java -jar JAR_NAME & //📌 찾은 jar 파일명으로 해당 jar 파일을 nohup으로 실행.
오늘은 build가 안되는 오류를 잡지 못해서 여기까지밖에 못했다 ㅠㅠㅠ