Home - hoho4190/aws-ec2-cicd-with-github-actions GitHub Wiki

AWS EC2 CI/CD

AWS와 GitHub Actions을 이용하여 AWS EC2에 CI/CD 적용하기

GitHub 저장소에 소스를 Push하면 test, build 후 클라우드 서버에 배포하고 서비스 재시작하기

흐름

GitHub 저장소의 main 브런치에 Push가 발생하면 GitHub Actions에서 아래의 워크플로우가 실행됨

  1. gradle build 실행

  2. AWS IAM 사용자 엑세스 키로 AWS 인증

  3. AWS S3에 파일을 압축하여 업로드

  4. AWS CodeDeploy로 S3의 파일을 EC2에 배포

    • hook을 이용하여 App 재시작 스크립트 실행

사전 준비

  • 배포할 앱

    • http://IP:8080/으로 앱 빌드 버전을 리턴하는 간단한 REST API 서버
    • Spring boot, Gradle, java 1.8
  • AWS EC2

    • OS: Amazon linux 2
    • 리전: ap-northeast-2(서울)
    • user: ec2-user(기본 사용자 /home/ec2-user 그대로)
    • 보안 그룹: REST API TCP 포트 18080(local)번, 8080(prod)번 인바운드 규칙에 추가

위처럼 생성하였다는 가정 하에 설정 진행할 예정

설정

아래 설정 과정에서

  • [인스턴스 이름]을 cicd라고 하겠음
  • [앱 이름]을 cicd라고 하겠음
  1. EC2 설정
  2. S3 설정
  3. CodeDeploy 설정
  4. Github Actions에서 사용할 IAM 사용자 설정
  5. (REST API 서버 구동을 위한 EC2 사전 작업)
  6. CodeDeploy AppSpec 파일 설정
  7. Github Actions 설정
  8. 확인
  9. Issue