IaaS/퍼블릭클라우드

(AWS) ECR/ECS를 활용한 CI/CD 파이프라인

armyost 2022. 3. 3. 11:35
728x90

AWS에서 기본적으로 가이드하는 ECS/ECR CI/CD Pipeline은 다음과 같다.

 

 

 

사용방법

  1. CI/CD를 적용할 ECR 레파지토리에 buildspec.yml을 PUSH 해줍니다.

    version: 0.2
    
    phases:
      pre_build:
        commands:
          - echo Logging in to Amazon ECR...
          - aws --version
          - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin 012345678910.dkr.ecr.us-west-2.amazonaws.com
          - REPOSITORY_URI=012345678910.dkr.ecr.us-west-2.amazonaws.com/hello-world
          - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
          - IMAGE_TAG=${COMMIT_HASH:=latest}
      build:
        commands:
          - echo Build started on `date`
          - echo Building the Docker image...
          - docker build -t $REPOSITORY_URI:latest .
          - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
      post_build:
        commands:
          - echo Build completed on `date`
          - echo Pushing the Docker images...
          - docker push $REPOSITORY_URI:latest
          - docker push $REPOSITORY_URI:$IMAGE_TAG
          - echo Writing image definitions file...
          - printf '[{"name":"hello-world","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json
    artifacts:
        files: imagedefinitions.json


  2. [AWS Console]-[CodePipeline] 을 접속
  3. [Welcome] 페이지에서 [Create pipeline]을 선택합니다.
  4. 이름대상 페이지파이프라인 이름에서 파이프라인 이름을 입력
  5. 소스 단계 추가대상 페이지소스 공급자, AWS CodeCommit 선택
    1. 파이프라인의 소스 위치로 사용할 CodeCommit 리포지토리의 이름을 선택합니다.
    2. 브랜치 이름에서 사용할 브랜치를 선택한 후 다음을 선택합니다.
  6. 페이지빌드 제공자를 AWS CodeBuild를 선택합니다
    1. 프로젝트 이름에서 고유한 빌드 프로젝트 이름을 선택합니다. 이 자습서에서 프로젝트 이름은 hello-world입니다.
    2. 환경 이미지에서 이미지 관리를 선택합니다.
    3. 운영 체제에서 Amazon Linux 2를 선택합니다.
    4. 런타임에서 표준을 선택합니다.
    5. 이미지, 선택aws/codebuild/amazonlinux2-x86_64-standard:3.0.
    6. 이미지 버전 및 환경 유형의 경우 기본값을 사용합니다.
    7. Docker 이미지를 빌드하거나 빌드에서 승격된 권한을 얻으려는 경우 이 플래그 활성화를 선택합니다.
    8. CloudWatch 로그를 선택 취소합니다. 확장해야 할 수도 있습니다.Advanced.
    9. Continue to CodePipeline(CodePipeline으로 계속)을 선택합니다.
    10. 다음(Next)을 선택합니다.
    11.  

      마법사는 빌드 프로젝트에 대한 CodeBuild 서비스 역할을 만듭니다.CodeBuild빌드 프로젝트 이름-서비스 역할. 이 역할 이름은 나중에 Amazon ECR 권한을 역할에 추가할 때 필요하므로 메모해 둡니다.

    12. 참고
  7. 추가대상 페이지배포 제공자를 Amazon ECS로 설정합니다
    1. 클러스터 이름를 선택합니다. 서비스가 실행 중인 Amazon ECS 클러스터를 선택합니다. 이 자습서에서는 클러스터가 default입니다.
    2. 서비스 이름에서 업데이트할 서비스를 선택한 후 다음을 선택합니다. 이 자습서에서 서비스 이름은 hello-world입니다.
  8. 파이프라인 구성을 검토하고 생성합니다. 완료.

'IaaS > 퍼블릭클라우드' 카테고리의 다른 글

(AWS) CloudTrail 이란?  (0) 2022.03.04
(AWS) Opsworks 란?  (0) 2022.03.04
(AWS) ECS에 CloudWatch를 적용  (0) 2022.03.03
(AWS) ECS와 Capacity Provider에 대해서  (0) 2022.03.02
(AWS) ElasticBeanstalk와 ECS  (0) 2022.03.02