자꾸 까먹어서 올려놓는 개발 일지

GitHub과 Node.js Express를 이용한 자동배포 환경 만들기(feat. AWS-EC2, AWS CodeDeploy, AWS CodePipeline) 3편 - 까먹는 개발자 본문

개발관련/AWS

GitHub과 Node.js Express를 이용한 자동배포 환경 만들기(feat. AWS-EC2, AWS CodeDeploy, AWS CodePipeline) 3편 - 까먹는 개발자

하루정도 2021. 4. 14. 15:06

마지막 3편에서는 PM2와 CodePipeline을 활용하여 GitHub 저장소에 이벤트가 발생하면 자동으로 배포가 되는 과정에 대해서 설명하겠습니다.

 

https://aws.amazon.com/ko/codepipeline/

 

AWS CodePipeline | 지속적 통합 및 지속적 전달

AWS CodePipeline은 특정한 요구에 맞게 손쉽게 확장할 수 있습니다. 사전 구축된 플러그인 또는 자체 사용자 지정 플러그인을 릴리스 프로세스 중 원하는 단계에 사용할 수 있습니다. 예를 들면 GitHu

aws.amazon.com

 

 

1. CodePipeline 시작하기

 

AWS 서비스에서 CodePipeline 시작하기 페이지에서 <파이프라인 생성> 버튼을 클릭합니다.

 

[ 그림 1-1 ] CodePipeline - 시작하기

 

 

파이프라인 설정 선택에서는 이름을 입력하고 서비스 역할은 새 서비스 역할을 선택해주면 됩니다.

[ 그림 1-2 ] CodePipeline - 파이프라인 설정 선택

 

 

소스 스테이지 추가에서는 OAuth를 통해 GitHib과 연결할 수 있도록 버전 1을 선택했고, 인증 절차를 통해 연결을 해주시면 됩니다.

[ 그림 1-3 ] CodePipeline - 소스 스테이지 추가 1

 

 

연결을 했다면 아래 그림 처럼 본인의 저장소와 브랜치를 설정해주고, GitHub 웹후크를 선택한 후 <다음> 버튼을 클릭합니다.

[ 그림 1-4 ] CodePipeline - 소스 스테이지 추가 2

 

 

저는 Node Express기반 프로젝트를 사용하기 때문에 따로 빌드 스테이지는 추가하지 않았습니다.

[ 그림 1-5 ] CodePipeline - 빌드 스테이지 추가

 

 

배포 스테이지에서는 CodeDeploy를 선택했고, 2편에서 설정한 배포 애플리케이션 및 배포그룹을 선택했습니다. 

[ 그림 1-6 ] CodePipeline - 배포 스테이지 추가

 

 

마지막 검토 화면에서는 설정한 내용들을 마지막으로 확인 후 <파이프 라인 생성> 버튼을 눌러 완료하시면 됩니다.

 

CodeDeploy와 CodePipeline이 정상적으로 작동하면 다음과 같이 배포 성공이라는 문구를 확인할 수 있습니다.

 

[ 그림 1-7 ] CodePipeline - 배포 성공

 

 

2. 배포 확인 및 PM2 설치

 

이제 연결된 GitHub 저장소에 push를 합니다. push를 하면 파이프라인 화면에서 정상적으로 배포 과정이 진행되고 있는 것을 확인할 수 있습니다.

[ 그림 2-1 ] 터미널

 

 

push를 하게 되면 [ 그림 2-2 ] 처럼 커밋 메세지 및 진행과정을 확인할 수 있습니다.

[ 그림 2-2 ] CodePipeline

 

예를 들어 html파일만 수정했다면 서버를 재시작하지 않아도 브라우저를 새로고침만 하면 반영이 되겠지만, 서버 코드를 수정했다면 재시작을 해주어야 반영이 됩니다.

 

따라서 EC2에 PM2를 설치하여 코드가 수정이 되면 자동으로 서버를 재시작하게 하겠습니다.

 

 

설치

sudo npm install pm2 -g

 

시작

pm2 start ./bin/www --watch

 

확인

pm2 list

 

--watch 옵션으로 서버를 실행했으니 코드가 수정되면 자동으로 서버 재시작을 해줄겁니다. 다시 저장소에 push를 해서 확인해보겠습니다.

 

서버 코드 수정 후 정상적으로 반영이 되는 것을 확인할 수 있습니다.

 

 

#마치며

 

제 글이 도움이 되었기를 바라며 문제가 있거나 궁금한 점이 있으신 분들은 언제든지 질문해주세요. 읽어주셔서 감사합니다 :)

Comments