CI/CD

Github Actions, AWS Code Deploy

WEB(API Server)은 IoT와 App과 데이터를 주고받고 저장하는 역할을 하므로 다른 분야와의 협업과 연동을 위해서 API Server는 빠르게 개발되어야 하고 다른 분야에 제공하는 API의 코드가 최신 상태여야 한다. 따라서 아래와 같은 CI/CD 도구를 이용하여 협업 간의 효율을 높였다.

Github Actions
AWS Code Deploy

Github Actions

프로젝트에서 Github Actions과 AWS CodeDeploy를 이용하여 CI(지속적 통합)/CD(지속적 제공)를 적용하여 리포지토리에 커밋과 동시에 빌드를 진행하고 PR의 머지가 될 때 원격 서버에 자동으로 배포가 되게 하여 짧은 주기로 다른 분야 개발자들에게 제공하였다.

CI/CD Pipeline
  1. Github에서 push 이벤트가 발생하면 Github Actionstrigger를 한다.

  2. Github Actions에서는 정해진 JobStep에 따라 빌드를 하고 소스 코드를 *.jar 파일로 만들어 소스 코드와 함께 압축하여 AWS S3에 저장한다.

  3. AWS CodeDeploy에 배포 요정을 하면 AWS S3에 저장되어 있는 압축된 소스 코드와 *.jar 파일을 가져와 원격 서버(AWS EC2)에 배포한다.

Github Actions workflow

deploy.yml

AWS CodeDeploy

appsepc.yml

deploy.sh

AWS EC2에서 현재 동작하고 있는 Spring Boot ApplicationPID값을 찾아 종료하고 새로운 Spring Boot Application을 실행한다.

Last updated

Was this helpful?