AWS S3 버킷을 이용한 CI/CD Pipeline 구축

2020. 2. 17. 23:42IT/AWS

728x90

1. 구성 소개

본문에서는 Amazon S3 버킷과 CodeDeploy를 사용하여 애플리케이션을 릴리스하는 두 단계 파이프라인을 생성한다. Amazon S3 소스가 포함된 파이프라인의 경우 Amazon CloudWatch Events가 소스 업데이트를 감지하고 변경이 발생할 때 파이프라인을 시작하게 된다.

AWS S3 기반 Pipeline 구성

2. 구성 방법

2.1. Amazon S3 버킷 생성

 소스 파일을 업로드할 S3를 생성한다.  버킷의 버전 관리 활성화하고, 버전이 지정된 위치에 소스 파일이나 애플리케이션을 저장할 수 있게 한다. 고유한 버킷 이름을 지정하고, Keep all versions of an object in the same bucket (객체의 모든 버전을 동일한 버킷에 보관)을 선택한다.

 

버킷 생성 (이름과 리전 설정)
버킷 옵션 구성 (퍼블릭 액세스 차단)
버킷 설정 검토

 애플리케이션 개정에 허용되는 파일 유형은 확장명이 .zip 또는 .tar인 아카이브 파일 및 확장명이 .tar.gz인 압축된 아카이브 파일이다. 또한 CodeDeploy와 호환 가능한 아카이브 파일 또는 압축된 아카이브 파일에는 파일 이름이 appspec.yml인 단일 application specification file(AppSpec file)이 포함되어야 한다.

 

다음은 본문에서 적용한 appspec.yml이다.

version: 0.0
os: linux
files:
  - source: /src/main/webapp/WEB-INF/views/login.jsp
    destination: /var/www/html/
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies
      timeout: 300
      runas: root
    - location: scripts/start_server
      timeout: 300
      runas: root
  ApplicationStop:
    - location: scripts/stop_server
      timeout: 300
      runas: root

 

2.2. Amazon EC2 인스턴스 생성 및 CodeDeploy 에이전트 설치

 Amazon EC2를 생성한다. 또한 인스턴스에 CodeDeploy 에이전트를 설치한다. [Add Tags]에서 지정할 Name과 Value를 입력한다. 

 

CodeDeply가 설치될 EC2 인스턴스 생성

 

인스턴스를 생성 후, CodeDeploy 에이전트를 설치한다. 설치는 다음 명령으로 할 수 있다.

sudo yum update

sudo yum install ruby

sudo yum install wget

cd /home/ec2-user

wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install

chmod +x ./install

sudo ./install auto

 

설치 후, 마지막으로 sudo service codedeploy-agent status을 통하여 CodeDeploy 에이전트가 실행 중인지 확인한다.

실행 중이라면, 실행 중이면 The AWS CodeDeploy agent is running과 같은 메시지가 표시된다.

 

2.3. CodeDeploy 애플리케이션 생성

CodeDeploy에서 애플리케이션을 생성한다. CodeDeploy에서 애플리케이션은 배포할 코드를 식별한다.

컴퓨팅 플랫폼에서 EC2/On-premises를 선택하고, 배포 구성은 CodeDeployDefault.OneAtaTime(한 번에 한 인스턴스에만 애플리케이션 개정 배포)을 선택한다.

 

애플리케이션 생성 (이름, 컴퓨팅 플랫폼 선택)
애플리케이션 환경구성
애플리케이션 내 배포그룹 생성

 

2.4. CodePipeline 생성

마지막으로 파이프라인을 생성한다. 파이프라인은 업로드한 파일을 자동으로 실행하게 도와준다.

 

파이프라인 설정

소스 스테이지 추가에서는 소스 파일을 업로드할 버킷을 입력한다.

 

소스 스테이지 설정

업로드할 파일은 빌드 스테이지를 건너뛰고, 배포할 수 있도록 한다.

배포 스테이지에서는 해당하는 애플리케이션 이름과 배포 그룹을 지정한다.

 

빌드 스테이지 설정 (선택사항)
배포 스테이지 설정

설정한 파이프라인 및 스테이지들이 올바르게 설정되어 있는지 최종적으로 검토한다.

 

스테이지 최종 검토

3. 구현 결과

완료 후 실행한다. 파이프라인에서 S3에 코드를 업로드하면 성공적으로 배포됨을 확인할 수 있다.

 

파이프라인 대시보드

300x250