배포 스크립트 작성(.sh)

CHOI YUN HO·2022년 8월 19일
0

CI/CD

프로젝트를 진행하며, 최종 목표는 CI/CD의 자동화까지 하는 것이지만,
우선은 MVP 배포를 위해 핵심 기능의 빠른 개발을 목표로한다.

따라서 CI/CD 파이프라인은 후에 구성하는 하려는데,
기능이 추가되거나 버그를 수정할 때마다

  1. ssh 접속
  2. 구동 중인 process 종료
  3. 재빌드 후 배포

하는 것이 너무 귀찮아서, 일종의 반자동화(?)를 통해 조금이나마 편하게 해보려고 쉘 스크립트를 작성했다.

#!/bin/bash

REPOSITORY=~/app
PROJECT=api-gateway

cd $REPOSITORY/$PROJECT/

echo "> Pull"

git pull

echo "> Build"

./mvnw clean package -Pproduction
(-DskipTests)

CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.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 "> 새 애플리케이션 배포"

JAR_NAME=$(ls -tr $REPOSITORY/$PROJECT/target/ | grep jar | tail -n 1)

nohup java -jar -Dspring.profiles.active=production $REPOSITORY/$PROJECT/target/$JAR_NAME       

참고한 글
https://yeonyeon.tistory.com/52

profile
가재같은 사람

0개의 댓글