안녕하세요
Rosa
입니다. 이번 주 주말에 진행했던 Github actions 와 codeDeploy 를 활용한 CI / CD 를 Poogle
에게 배웠을 때, 이 내용을 모두가 들으면 도움이 될만하다 생각해서 정리해 봤습니다.EC2와 S3 버킷 생성은 이미 알고있을 듯 하여 내용에서 뻈습니다.
과정을 다음과 같습니다.

Github actions
github actions 는 푸시등의 레포지토리를 변경하는 작업이 일어날 때, 깃허브에서 제공해주는 컴퓨터를 통해서 빌드 등의 작업을 하는 것을 말합니다.
github actions 를 사용하려면 아래 사진같이
Actions
에 들어가서 Set up a workflow yourself
버튼을 누른 뒤에 생기는 ./.github/workflows/main.yaml
파일을 수정해주시면 됩니다
속성들은 아래와 같습니다.
- name : workflow의 이름을 지정합니다.
- on : 해당 workflow가 언제 실행될건지 트리거를 지정할 수 있습니다.
- job, steps : workflow는 하나 이상의 job을 가지게 되고, job은 여러 step에 따라 단계를 나눌 수 있습니다.
- run-on : 해당 workflow를 어떤 OS 환경에서 실행 할 것인지 지정할 수 있습니다.

이렇게
main.yaml
(다른 이름도 가능, 저희는 deploy.yaml
이라는 이름을 사용했습니다) 을 만들면 on에서 지정한 트리거가 일어날 경우 main.yaml
파일에 적어놓은 steps 가 실행되게 됩니다.저희의 yaml 파일은 아래 내용이 더 추가되었습니다.

codeDeploy
CodeDeploy는 아래와 같은 단계로 수행됩니다.
- 소스코드와
appspec.yaml
을 리포지토리에 push 한다.
- github actions를 이용하여 deployment를 트리거 한다.
- CodeDeploy를 polling 하고 있던 EC2 인스턴스는 트리거를 확인한다.
polling
폴링(polling)이란 하나의 장치(또는 프로그램)가 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치(또는 프로그램)의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다.
- 리포지토리에서 소스코드와
appspec.yaml
파일을 받아와 deployment 명령을 수행한다.
deploy 명령을 수행하기 위해서는 EC2 내의 명령을 받아줄
CodeDeploy-agent
라는 프로그램이 필요합니다. 따라서 아래와 같은 명령어를 통해서 설치해줘야합니다.그 다음, AWS CodeDeploy 어플리케이션을 생성해서 EC2 와 연결해줘야합니다.
세부 이미지
CodeDeploy -> 어플리케이션
에 들어가 생성을 해줍니다.

- 어플리케이션 생성 후
배포 그룹 생성
버튼을 눌러 배포그룹을 생성해줘야합니다.

서비스 역할은 IAM 계정을 통해서 codeDeploy access 를 얻은 사용자이 있어야합니다.

그 후, 만들었던 EC2 인스턴스와 연결해줘야합니다.

많은 요청이 들어오지 않기 때문에 로드 벨런서는 껐습니다.

위에서 말한 것 처럼,
appspec.yaml
파일을 통해서 배포 설정을 해줘야합니다. appspec.yaml
파일은 프로젝트 최상단에 생성시키면 됩니다.마지막으로 shell script를 작성하여, 구체적인 배포 스크립트를 만들면 되겠습니다. 이 부분은 아직 하지못했기 때문에 차후에 진행하여 업로드 하겠습니다.
이번 내용은 설명을 위해 몇가지 단계를 빠르게 이야기 했습니다. 좀 더 자세한 단계를 알고 싶다면 아래 블로그를 통해서 확인하면 될 것 같습니다!