CI/CD 적용해보기 (2) : AWS CodeDeploy

정재헌·2023년 3월 20일
0

CI/CD

목록 보기
2/2

개발자에게 있어서 CI/CD는 굉장히 중요하다고 한다. CI/CD를 통해 자동화함으로써 개발자의 생산성을 향상시킬 수 있으며, 휴먼 에러 없이 서비스 배포를 관리할 수 있기 때문이라고 생각한다.

실제로 적용해보기 위해서 기존에 진행했던 프로젝트에 Github Actions와 AWS의 CodeDeploy를 사용하여 CI/CD를 해보았다. 오늘은 AWS CodeDeploy에 대해 알아보고자 한다.

Road Map

  1. Node.js Code 작성 및 Github Actions 설정
  2. S3 생성
  3. EC2 생성
  4. CodeDeploy 생성
  5. Workflow Step 추가
    1) appspec.yml 작성
    2) after-deploy.sh 작성
  6. 작동확인

AWS CodeDeploy

AWS CodeDeploy는 Amazon Elastic Compute Cloud(EC2), Amazon Elastic Container Service(ECS), AWS Lambda 및 온프레미스 서버와 같은 다양한 컴퓨팅 서비스에 소프트웨어를 자동으로 배포하는 완전관리형 배포 서비스이다.

AWS CodeDeploy를 사용하면 소프트웨어 배포를 자동화하여 오류가 발생하기 쉬운 수동 작업을 제거할 수 있다.

Github Actions Setting

  • Root 경로에 .github/workflows 파일 추가
  • deploy.yml 파일 생성후 script 작성

AWS S3 생성

  • 생성시 모든 퍼블릭 액세스 차단 유지
    • IAM을 이용하여 권한 부여하기 때문
  • S3 IAM 사용자 생성
    • AWS [IAM] → 사용자 추가
  • Github Secrets 저장
    • 발급받은 IAM User 정보 저장

AWS EC2 생성

  • EC2의 IAM 접근권한 설정

EC2 내에 프로그램 설치

  • CodeDeploy agent 설치
    • EC2 에배포를 위한 수신기 정도라고 생각하면된다.

→ 해당 EC2 선택하여 보안 → IAM 역할수정
→ 새역할 부여

CodeDeploy 설정 및 생성

  • IAM 설정
  • Application 생성
    • EC2/ 온프레미스

Actions deploy.yml 추가 기능

  • Github Secrets에 등록된 정보를이용하여
    env file 생성
  • build 하여 Javascript 로 Compile
    (브라우저 아직까지 타입스크립트 코드를 그대로 해석할 수가 없기 때문)
  • hous.zip 파일로 압축
  • Upload to S3 : hous.zip → S3
  • AWS CodeDeploy
    • AWS CodeDeploy 실행됌
    • 압축파일을 풀어서 EC2에 배포

appspec.yml 파일 작성

  • file.source
    • 어느 경로를 다운받을지 결정
      ( / = 전체 파일을 받음)
  • file.destination
    • ec2 서버에서 어느 경로에 해당 코드를 저장할지 결정
  • hook.Afterinstall
    • CodeDeploy 수명주기 중 하나인 AfterInstall 발생 시 코드에서 scripts 폴더안ㅇ에 있는 after-deploy.sh를 실행하라는 이벤트

CodeDeploy Agent설치 참조
https://velog.io/@orijoon98/Github-Actions-AWS-CodeDeploy를-활용한-CICD-Node.js2

profile
백엔드 개발자

0개의 댓글