공개

spring boot를 이용한 deploy 배포(aws ci/cd)

sangwoon 2022. 2. 8. 22:36

일단 build 를 했다고 가정을 하고 

 

spring boot 의 빌드를 해줄 것이다

 

일단 

 

deploy를 할 때

 

beforeinstall 을 해야 한다

#!/bin/bash
if [ -d /webapp/ ]; then
    sudo rm -rf /webapp/
fi
sudo mkdir -p /webapp/

왜냐 이런식으로 배포 파일을 삭제해주고 해야 한다.

 

 

그 다음에는 본격적으로 배포를 해주면 된다

#!/bin/bash



CURRENT_PID=$(pgrep -f lim-java-0.0.1-SNAPSHOT.jar)
if [ -z $CURRENT_PID ]
then
  echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다." >> /webapp/deploy.log
else
  echo "> kill -15 $CURRENT_PID"
  kill -15 $CURRENT_PID
  sleep 5
fi

sudo nohup java -jar /webapp/lim-java-0.0.1-SNAPSHOT.jar >> /webapp/deploy.log 2>/webapp/deploy_err.log &


for i in $(seq 1 6)
do
    HTTP_CODE=$(curl --write-out '%{http_code}' -o /dev/null -m 10 -q -s http://localhost:8080/)
    if [ "${HTTP_CODE}" == "200" ]; then
        echo "good"
        exit 0
    fi
    echo "return status code ${HTTP_CODE}"
    sleep 10
done
echo "fail start application"
exit 1

먼저 멈추는 걸 해줘야한다 

일단 처음에는 실행되고 있는 것이 없을 것이기 때문이다

 

그리고 HTTPCODE 또한 확인해주면 좋다

 

 

이러한 파일들을 실행하기 위해 이렇게 spec 파일을 작성해 줘야한다.

version: 0.0
os: linux
files:
  - source: /
    destination: /webapp/
permissions:
  - object: /
    pattern: "**"
    owner: root
    group: root

hooks:
  BeforeInstall:
    - location: start.sh
      timeout: 30
      runas: root
  ApplicationStart:
    - location: applicationStart.sh
      timeout: 300
      runas: root

 

 

 

 

참조를 했다

https://twofootdog.tistory.com/38