세번째로 S3에 업로드한 백엔드 프로젝트 빌드파일을 EC2로 배포해줄 CodeDeploy가 필요하다.
사용 사례에서 CodeDeploy
만 선택해주면 끝이다!
이름을 입력해주고,, 컴퓨팅 플랫폼은 EC2/온프레미스
를 선택해주면 끝..!
이름 입력해주고 서비스 역할에 아까 생성했던 IAM 역할을 입력해준다.
Amazon EC2 인스턴스
선택 후 생성해둔 EC2 인스턴스의 태그 그룹을 넣어준다.
로드 밸런싱 활성화
는 해제해 주었다.
애플리케이션 사양 파일(AppSpec file)은 CodeDeploy에서 배포를 관리하는 데 사용하는 YAML 형식 또는 JSON 형식의 파일이다.
프로젝트의 최상단 디렉토리에 위치하도록 하여야 한다!!
version: 0.0
os: linux
files:
- source: /
destination: /home/ubuntu/github_actions
overwrite: yes
permissions:
- object: /home/ubuntu/github_actions
owner: ubuntu
group: ubuntu
mode: 755
hooks:
ApplicationStart:
- location: deploy.sh
timeout: 60
runas: root
appspec.yml
에 대한 자세한 내용은 참고 에서 확인하자..!
추후에 스프링부트의 로그를 보고 싶을 때는
/home/ubuntu/github_actions
경로에서 nohup.out
파일을 확인하면 된다.
배포시 수행될 스크립트 파일을 작성하여 주었다.
appspec.yml
과 마찬가지로 프로젝트 최상단 디렉토리에 작성해준다.
build.gradle
과 동일선상에 위치하면 된다!
#!/bin/bash
REPOSITORY=/home/ubuntu/github_actions
cd $REPOSITORY
APP_NAME=demo
JAR_NAME=$(ls $REPOSITORY/build/libs/ | grep '.jar' | tail -n 1)
JAR_PATH=$REPOSITORY/build/libs/$JAR_NAME
CURRENT_PID=$(pgrep -fl java)
if [ -z "$CURRENT_PID" ]; then
echo "NOT RUNNING"
else
echo "> kill -9 $CURRENT_PID"
kill -15 $CURRENT_PID
sleep 5
fi
echo "> $JAR_PATH 에 실행권한 추가"
chmod +x $JAR_PATH
echo "> $JAR_PATH 배포"
nohup java -jar -Duser.timezone=Asia/Seoul $JAR_PATH > $REPOSITORY/nohup.out 2>&1 &
프로젝트가 실행중이면 kill
후에 새로운 프로젝트를 실행하도록 하였다.
추후에 스프링부트의 로그를 보고 싶을 때는
/home/ubuntu/github_actions
경로에서 nohup.out
파일에서 확인할 수 있다.
배포에대한 자세한 설정은 깊이 공부하지 않아서 필요하다면 그때 자세히 공부해봐야 겠다...