AWS에서 CI/CD 환경 구성 #4 - 파이프라인 구성(Rolling Update), CodePipeline
지금까지 구성한 CodeCommit, CodeBuild, CodeDeploy 및 CodePipeline 서비스를 활용하여 코드를 통합, 빌드 및 배포하는 방법을 알아보겠습니다.
이 문서에서는 배포 방식으로 Rolling Update를 활용하겠습니다.
사전 준비
ECS(Elastic Container Service) 구성
이 문서에서는 애플리케이션을 배포할 서버로 ECS(Elastic Container Service) 서비스를 사용합니다.
아래 문서를 참고하여 ECS 환경을 구성할 수 있습니다.
AWS ECS 구성 및 활용하기 #1 - 사전 준비 및 클러스터 생성하기
AWS ECS 구성 및 활용하기 #2 - 작업 정의 구성하기(ECS Task)
AWS ECS 구성 및 활용하기 #3 - 서비스(ECS Service) 구성하기
경고
이 문서에서는 서비스(ECS Service) 구성하기에서 배포 방식을 Rolling Update로 선택해야합니다.
Build spec 변경
-
CodeCommit Console 접속 > 왼쪽 메뉴의 소스 > 리포지토리
-
리포지토리 리스트 > cicd-demo 선택
-
buildspec.yaml
파일 아래와 같이 편집
<buildspec.yaml>
version: 0.2
phases:
install:
runtime-versions:
java: openjdk8
docker: 18
pre_build:
commands:
- echo Logging in to Amazon ECR...
- $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION)
build:
commands:
- echo Build started on `date`
- echo Building the Docker image...
- mvn clean package
- docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
- docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
post_build:
commands:
- echo Build completed on `date`
- echo Pushing the Docker image...
- docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
- printf '[{"name":"cicd-demo","imageUri":"%s"}]' $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG > imagedefinitions.json
artifacts:
files:
- imagedefinitions.json
cache:
paths:
- '/root/.m2/**/*'
추가된 내용은 아래와 같습니다.
- 이미지의 이름과 주소를
imagedefinitions.json
파일에 쓰기 및 생성 imagedefinitions.json
파일을 artifacts file에 추가
파이프라인 구성(Rolling Update)
- CodePipeline 콘솔에 접속 > 왼쪽 메뉴의 파이프라인 > 파이프라인 선택
- 메인 화면 >
파이프라인 생성
버튼 선택
파이프라인 설정 선택
- 파이프라인 이름 > cicd-demo 입력
- 서비스 역할 > 새 서비스 역할 선택
- 역할 이름 > codepipeline-cicd-demo-role > 다음 버튼 선택
소스 스테이지 추가
- 소스 공급자 > AWS CodeCommit 선택
- 리포지토리 이름 > cicd-demo 선택
- 브랜치 이름 > master 선택 > 다음 버튼 선택
빌드 스테이지 추가
- 빌드 공급자 > AWS CodeBuild 선택
- 프로젝트 이름 > cicd-demo 검색 및 선택 > 다음 버튼 선택
배포 스테이지 추가
- 배포 공급자 > Amazon ECS 선택
- 클러스터 이름 > cicd-demo 선택
- 서비스 이름 > cicd-demo 선택
- 이미지 정의 파일 > imagedefinitions.json 입력 > 다음 버튼 선택
검토
- 파이프라인 검토 후 다음 파이프라인 생성 버튼 선택
파이프라인 실행
파이프라인을 생성하면 자동으로 소스코드 통합 > 빌드 > 배포 과정이 발생합니다.
이 후에는 1)수동으로 파이프라인을 실행하거나 2)CodeCommit의 소스코드 변경사항을 감지해 실행됩니다.
수동으로 파이프라인 실행
-
CodePipeline Console > 왼쪽 메뉴의 파이프라인 > 파이프라인 선택
-
메인 화면의 파이프라인 리스트 > cicd-demo 선택
-
변경사항 릴리스 버튼을 선택
변경사항에 의해 자동으로 실행
-
CodeCommit Console 접속 > 왼쪽 메뉴의 소스 > 리포지토리
-
리포지토리 리스트 > cicd-demo 선택
-
src/main/resources/messages/messages.properties
파일 아래와 같이 편집메세지의 welcome 프로퍼티를
Welcome
에서Welcome(Version 2)
로 변경 >변경 사항 커밋
버튼 선택 -
CodePipeline Console > 왼쪽 메뉴의 파이프라인 > 파이프라인 선택
-
메인 화면의 파이프라인 리스트 > cicd-demo 선택
소스코드 변경을 감지하고 자동으로 빌드와 배포 파이프라인이 실행됨
-
파이프라인의 배포 단계까지 완료되면 로드밸런서 주소로 접속해서 변경한 메세지가 반영되었는지 확인
다음으로 AWS에서 CI/CD 환경 구성 #5 - 파이프라인 구성(Blue/green), CodePipeline 문서에서 Blue/green deployment 방식의 파이프라인을 구성하는 방법을 살펴보겠습니다.