개발자에게 있어서 CI/CD는 굉장히 중요하다고 한다. CI/CD를 통해 자동화함으로써 개발자의 생산성을 향상시킬 수 있으며, 휴먼 에러 없이 서비스 배포를 관리할 수 있기 때문이라고 생각한다.
실제로 적용해보기 위해서 기존에 진행했던 프로젝트에 Github Actions와 AWS의 CodeDeploy를 사용하여 CI/CD를 해보았다. 오늘은 AWS CodeDeploy에 대해 알아보고자 한다.
Road Map

- Node.js Code 작성 및 Github Actions 설정
- S3 생성
- EC2 생성
- CodeDeploy 생성
- Workflow Step 추가
1) appspec.yml 작성
2) after-deploy.sh 작성
- 작동확인
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 생성
- 생성시 모든 퍼블릭 액세스 차단 유지
- S3 IAM 사용자 생성
- Github Secrets 저장
AWS EC2 생성
EC2 내에 프로그램 설치
- CodeDeploy agent 설치
- EC2 에배포를 위한 수신기 정도라고 생각하면된다.
→ 해당 EC2 선택하여 보안 → IAM 역할수정
→ 새역할 부여
CodeDeploy 설정 및 생성
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