Among Us - Yellow Crewmate [CI/CD] Git과 연동하여 AWS Pipeline 생성하기

DevOps/CI CD

[CI/CD] Git과 연동하여 AWS Pipeline 생성하기

감쟈! 2021. 2. 22. 23:44

이번에 해볼 실습은 AWS에서 제공하고 있는 실습이다.

aws.amazon.com/ko/getting-started/hands-on/create-continuous-delivery-pipeline/

 

AWS에서 지속적 전달 파이프라인을 생성

아래의 다이어그램은 이 자습서에서 사용되는 서비스와 그 연결 방식을 시각적으로 보여줍니다. 이 애플리케이션은 아래 그림과 같이 GitHub, AWS Elastic Beanstalk, AWS CodeBuild 및 AWS CodePipeline을 사용

aws.amazon.com

Pipeline 아키텍처

 

이번 실습의 목적은 Git 리포지토리에 저장되있는 소스 코드가 업데이트 되면 소스 코드를 빌드 및 검토한 후, 애플리케이션을 자동으로 배포하는 Pipeline을 생성하는 것이다.

 

 

 

이번 실습을 위해 알아야 할 AWS 서비스

- AWS Elastic Beantalk

- AWS codeBuild 

- AWS CodePipeline

그 외

- Git

 

 

실습 순서

1. Git 리포지토리 설정

2. Elastic Beanstalk 생성

3. CodeBuild 생성

4. CodePipeline 생성

5. Pipeline 테스트


1. Git 레포지토리 설정

Git 레포지토리를 설정하는 단계

 

 

 

 

1. 다음 git 레포지토리에서 예제 소스를 Fork 해서 내 Git의 레포지토리로 가져오자 

github.com/aws-samples/aws-elastic-beanstalk-express-js-sample

 

aws-samples/aws-elastic-beanstalk-express-js-sample

Sample web application for the AWS DevOps Engineer Learning Path. - aws-samples/aws-elastic-beanstalk-express-js-sample

github.com

 

 

 

2. git bash 를 실행하고 예제 소스가 담긴 레포지토리를 clone 해주자.

git clone

 

 

3. git 레포지토리와 연동이 되었는지 확인하기 위해서 app.js 파일의 'Hello world!' 부분을 수정해주었다.

app.js 수정 후 push

 

 

4. app.js 파일이 수정된 것을 보니 제대로 연동되어 있다.

이제 이 git 레포지토리를 AWS에서 사용해보자 

 

 


현재 단계의 아키텍처

 

 

Elastic Beanstalk란?

Elastic Beanstalk를 사용하면 애플리케이션을 실행하는 인프라에 대해 자세히 알지 못해도 AWS에서 애플리케이션을 신속하게 배포하고 관리할 수 있다. 애플리케이션을 업로드 하기만 하면 Elastic Beanstalk에서 용량 프로비저닝, 로드밸런싱, Scaling, 모니터링에 대한 정보를 자동으로 처리한다.

 

Elastic Beanstalk는 Go, Java, .NET, Node.js, PHP, Python, Ruby에서 개발한 애플리케이션을 지원한다.


2. Elastic Beanstalk 생성

 

1. Elastic Beanstalk 콘솔로 접속해 'Create Application' 을 클릭해 Elastic Beanstalk를 생성해주자

Create Application

 

 

2. Application name을 정해주고 Platform은 Node.js로 선택해주었다

소스코드는 Sample Application.

 Application 설정

 

 

 

3. 애플리케이션이 생성되기까지 몇분의 시간이 걸리니 기다려주자

Application 생성중

 

 

 

4. 이렇게 Health가 초록색으로 나타나면 생성완료!

 

 

 

5. 생성된 애플리케이션의 URL 주소를 눌러서 테스트 페이지가 뜨면 샘플 앱 배포 성공!

샘플 페이지


현재 단계의 아키텍처

 

 

 

CodeBuild란 ?

AWS CodeBuild는 소스 코드를 컴파일하는 단계부터 테스트 실행 후 소프트웨어 패키지를 개발하여 배포하는 단계까지 마칠 수 있는 서비스입니다. CodeBuild를 사용하면 서버를 직접 프로비저닝, 관리 및 확장할 필요가 없습니다


3. CodeBuild 생성

 

 

1. CodeBuild 콘솔로 접속해 'Create build project' 눌러 새 프로젝트를 생성해주자.

Create build project

 

 

 

2. Source를 Github로 선택해주고 내 깃허브 레포지토리 사용해주자.

Repository in my github account를 체크하면 Git과 연동하라는 인증창이 뜨는데, Git의 패스워드를 입력해서 인증해주자.

그럼 아래 처럼 내 깃허브의 레포지토리를 받아올 수 있다.

 

 

 

3. OS 이미지 설정은 다음과 같이 해주었다.

 

 

 

4. 생성한 프로젝트에 Edit > Buildspec 을 눌러서 Buildspec파일을 생성해줍니다.

 

Insert build commands를 체크해주자

Switch to editor를 클릭하고 다음과 같이 코드를 작성해주자.

 

 

5. 생성한 CodeBuild를 스타트 해주면 아래에 Succeeded가 뜬것을 확인할 수 있다.

 

 

 

 

이제 Git 레포지토리에서 받아온 소스 코드를 CodeBuild를 통해 빌드할 수 있습니다.


현재 단계의 아키텍처

 

 

CodePipeline ?

Pipeline을 사용하면 데이터 중심 워크플로우를 정의할 수 있어 성공적으로 완료한 이전 작업을 바탕으로 작업을 수행할 수 있습니다.

이번 실습에서 Pipeline의 역할은 Git에서 소스를 받아와서 CodeBuild에서 빌드시키고 Elastic Beanstalk에서 배포시키도록 워크플로우를 구성합니다.

 

 


4. Pipeline 생성

 

1. AWS CodePipeline 콘솔에 접속해 파이프라인을 생성해주자.

Create pipeline

 

 

 

2. pipeline에서 사용할 Git 레포지토리를 선택해주자

GitHub webhooks 을 선택하여 Push 될때마다 파이프라인이 실행되게끔 해주자

Source 설정

 

 

3. pipeline에서 사용할 CodeBuild 프로젝트를 선택해주자

Build 설정

 

 

 

3. pipeline에서 사용할 Elastic Beanstalk에서 배포한 애플리케이션을 선택해주자

Deploy 설정

 

 

 

 

4. Pipeline이 생성되었으면 Source > Build > Deploy 순서로 녹색불이 들어온다.

Git에서 Push 된것을 확인하고 소스 코드를 빌드하여 배포하는 일련의 과정을 하나의 파이프라인에서 작업한다.

 

 

 

5. Deploy까지 녹색이 된것을 확인했으면 Elastic Beanstalk에서 배포된 애플리케이션의 URL을 눌러주자

이전에 바꾸어주었던 문구로 변한것을 확인할 수 있다.


마지막 단계 아키텍처

 

 

 

 

마지막 실습 단계에서는 파이프라인에 Manual Approval 단계를 추가해 애플리케이션이 배포되기 전에 수동으로 관리자가 승인하는 과정을 추가해보았다. 작업이 승인 거부되거나 7일 동안 승인요청을 받지않으면 파이프라인 실행이 취소된다.


5. Pipeline 검토 단계 생성

 

1. pipeline에 수동으로 승인해주는 단계를 추가해준다. Edit 눌러주자

Pipeline 검토 단계 추가

 

 

 

2. 검토 단계는 소스코드를 빌드하고 배포해주는 과정 중간에 넣어주자

Source > Build > Review > Deploy 순서가 되도록 해주자

Review 추가

 

 

 

3.  stage name은 Review

Action name은 Manual_Review

Action provider는 Manual_approval (수동 승인) 으로 설정하고 SAVE줄러주자 

Review 단계 추가

 

 

 

4. 파이프라인에 Review단계가 추가되었지만 아직 소스 코드가 빌드된 적이 없기때문에 회색으로 표시될 것이다.

app.js 소스 코드를 변경해준뒤 다시 Git push 해주자

파이프라인 Review 추가 완료

 

 

5. Git 내용이 수정되면서 소스를 빌드하고 수동 검토단계를 기다리는 중이다. Review를 눌러서 승인해주도록 하자.

파이프라인 수동 승인

 

 

 

6. Git이 push가 될 때마다, Build, Review, Deploy가 연속으로 작업이 되게끔 파이프라인이 생성되었다.

제대로 배포되었는지 Deploy된 Elastic beanstalk로 들어가서 URL 눌러주자

 

 

 

 

7. 수정한 app.js 파일의 문구가 등장했다. Elastic Beanstalk로 제대로 배포된 것을 확인할 수 있다.

 

8. 이제 등록한 Git 레포지토리에서 새로운 내용이 Push될 때마다 이 AWS CodePipeline은 자동으로 CodeBuild를 통해 소스코드를 빌드하고 관리자가 수동으로 승인해주면 Elastci Beanstalk의 등록된 애플리케이션이 자동으로 배포되는 하나의 과정으로 진행된다.

 

Pipeline을 사용하면 소프트웨어가 릴리즈 될 때마다 자동으로 빌드하고 배포시킬 수 있게 된다.

즉, 개발자들에게 굉장히 용이한 기능이 될 것 같다고 생각한다.