1. Spring boot Jar 저장 폴더 생성
1
mkdir /home/ec2-user/app/travis/jar
2. 배포 Script생성
- Script 생성
1
vi /home/ec2-user/app/travis/deploy.sh
Script 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
#!/bin/bash REPOSITORY=/home/ec2-user/app/travis PROJECT_NAME=Travis echo "> Build 파일 복사" cp $REPOSITORY/build/build/libs/*.jar $REPOSITORY/jar echo "> 현재 구동중인 애플리케이션 pid 확인" CURRENT_PID=$(pgrep -fl Travis | awk '{print $1}') 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/jar/*.jar | tail -n 1) echo "> JAR Name: $JAR_NAME" echo "> $JAR_NAME 에 실행권한 추가" chmod +x $JAR_NAME echo "> $JAR_NAME 실행" nohup java -jar \ -Dspring.config.location=classpath:/application.properties \ $JAR_NAME > $REPOSITORY/nohup.out 2>&1 &
- deploy.sh 권한 추가
1
chmod +x deploy.sh
- deploy.sh 실행 테스트
3. execute-deploy.sh 생성
위에서 생성한 deploy.sh를 직접 실행 할 수 없기 때문에 execute-deploy.sh를 생성하여 우회 실행한다.
- 프로젝트 최상위 루트에 execute-deploy.sh파일 생성
execute-deploy.sh1 2
#!/bin/bash /home/ec2-user/app/travis/deploy.sh > /dev/null 2> /dev/null < /dev/null &
appspec.yml sh 실행 설정 추가
1 2 3 4 5 6 7 8 9
permissions: - object: / pattern: "**" owner: "ec2-user" group: "ec2-user" hooks: AfterInstall: - location: execute-deploy.sh timeout: 180