[SpringBoot, AWS] KnockKnock 개발일지 - 0110 (프로젝트 배포)

Hyebin Lee·2022년 1월 10일
0

knockknock 개발일지

목록 보기
13/29

오늘의 목표

  1. EC2에 Git 설치 및 프로젝트 Clone
  2. 배포 스크립트 생성

오늘의 이슈

  1. Execution failed for task ':compileQuerydsl' : ec2에서 프로젝트 실행시 querydsl 파일 없음

💥배포 시 외부에서 프로젝트 빌드 안됨 (compileQuerydsl 오류)

배포 스크립트 생성

작성한 코드를 실제 서버에 반영하는 것을 배포라고 한다.
따라서 배포라 하면 다음의 과정을 모두 합친 듯이라고 생각하면 된다.

  • git clone 혹은 git pull 을 통해 새 버전의 프로젝트 받음

  • Gradle/ Maven을 통해 프로젝트 test와 build

  • EC2 서버에서 해당 프로젝트 실행 및 재실행

    위 과정을 배포시마다 하나하나 명령어를 실행하는 것이 불편하기 때문에
    쉘 스크립트로 작성하여 스크립트만 실행하면 위 과정이 차례대로 진행되도록 할 수 있다.

    deploy 스크립트 생성

    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 REPOSITORY/REPOSITORY/JAR_NAME & //📌 찾은 jar 파일명으로 해당 jar 파일을 nohup으로 실행.


오늘은 build가 안되는 오류를 잡지 못해서 여기까지밖에 못했다 ㅠㅠㅠ

0개의 댓글