seong

리눅스 간단한 배포 script 작성 본문

AWS/AWS에 필요한 리눅스 기본기

리눅스 간단한 배포 script 작성

hyeonseong 2022. 11. 3. 12:04

() 와 {}의 차이점

() 는 변수에 명령어의 리턴이 필요할 경우 

{} 는 변수의 값 

 

스프링 부트 종료 script - spring-stop.sh

파일명 뒤에 .sh를 붙이면 쉘 스크립트 파일이 된다.

echo "Springboot Stop......"

SPRING_PID=$(pgrep -f v1-0.0.1-SNAPSHOT.jar)
echo ${SPRING_PID}
kill -9 ${SPRING_PID}

 

update할때 뜨는쓸데 없는 로그들 없애기 - 1>dev/null 

sudo apt-get update 1>/dev/null

 

배포 스크립트 작성

작성시 주의사항 

- 변수화를 시켜서 사용

- 다운로드, 업데이트할때 나오는 로그들은 없애주자 - 1>dev>null

- 무언가를 실행할때 자기 폴더에서 실행 - ${HOME}

echo "Deploy Start"

echo "prepare var setting"
PROJECT_NAME="aws-v2"
GITHUB_ID="codingspecialist"
PROJECT_VERSION="0.0.1"
PROJECT_PID="$(pgrep -f ${PROJECT_NAME}-${PROJECT_VERSION}.jar)"
JAR_PATH="${HOME}/${PROJECT_NAME}/build/libs/${PROJECT_NAME}-${PROJECT_VERSION}.jar"

echo "1. sudo apt-get update"
sudo apt-get update 1>/dev/null

echo "2. jdk install"
sudo apt-get -y install openjdk-11-jdk 1>/dev/null

echo "3. timezone setting"
sudo timedatectl set-timezone Asia/Seoul

echo "4. git folder delete"
rm -rf ${HOME}/${PROJECT_NAME}

echo "5. git clone"
cd ${HOME}
git clone https://github.com/${GITHUB_ID}/${PROJECT_NAME}.git

echo "6. gradlew u+x"
chmod u+x ${HOME}/${PROJECT_NAME}/gradlew

echo "7. build"
cd ${HOME}/${PROJECT_NAME}
./gradlew clean build

echo "8. spring-stop"
if [ -n "${PROJECT_PID}" ]; then
  kill -9 ${PROJECT_PID}

echo "9. start server -> jar"
nohup java -jar -Dspring.profiles.active=prod ${JAR_PATH} 1>${HOME}/log.out 2>${HOME}/err.out &

짜잘한 팁

1. 배포할 때 프로젝트 명 = git repository 이름과 똑같이 맞추어 줘야한다.

2. yml에 prod, dev가 있는 이유

- 개발할때 yml 설정이 -dev로 설정되어있다.

- 배포할 때 prod가 있다면 굳이 yml에서 -prod로 바꿔줄 필요 없다,배포 스크립트에 넣어주면 된다. 

3. ${HOME}은 전역변수

 

참고

https://cafe.naver.com/metacoding/1757