CircleCI Orbs에서 배포 승인 버튼을 만들어 Slack에 알리기

개요



이전에 CircleCI Orbs로 ECS Fargate 배포 자동화 이라는 기사를 썼는데,
이 구조라면 특정 브랜치에 병합한 타이밍에 자동 배포가 달려 버립니다.

프로덕션 환경만은.
CircleCI Orbs를 사용하여 그 근처를 제어하고 싶습니다.

이미지로서는, 특정의 브랜치에 병합한 단계에서

Slack 알림이 와서 マージ=デプロイ 링크를 밟으면

가 표시되고 Visit Workflow 를 클릭하여 배포할 수 있는 메커니즘을 만들 수 있습니다.

전제 조건


  • CircleCI와 Github의 통합을 설정하십시오.

    설정



    지난번의 config.yaml을 기반으로 설정해보십시오.
    이전부터의 차이만 코멘트를 넣고 있습니다.
    
    version: 2.1
    orbs:
      aws-ecr: circleci/[email protected]
      aws-ecs: circleci/[email protected]
      slack: circleci/[email protected] # (1)circleci/slack 設定
    
    executors:
      docker_build:
        machine:
          docker_layer_caching: true
    
    workflows:
      build-and-deploy:
        jobs:
          - build
          - aws-ecr/build_and_push_image:
              executor: docker_build
              name: 'build-staging'
              account-url: AWS_ECR_ACCOUNT_URL
              region: AWS_REGION
              repo: '<ECRのリポジトリ名>'
              tag: "${CIRCLE_SHA1}"
              path: ./
              dockerfile: Dockerfile-staging
              requires:
                - build
              filters:
                branches:
                  only:
                    - staging
          - slack/approval-notification: #(2)Slack通知用jobを追加
              message: "<Your APP NAME>ステージング環境へのデプロイを承認してください。"
              color: "#F5E911"
              requires:
                - build-staging
          - approval-deploy: #(3)承認用jobを追加
              type: approval
              requires:
                - build-staging
          - aws-ecs/deploy-service-update:
              requires:
                - build-staging
                - approval-deploy #(4) approval-deployで承認されるないと走らない
              family: '<Fargateのタスク定義名>'
              service-name: '<Fargateのサービス名>'
              cluster-name: '<Fargateのクラスタ名>'
              container-image-name-updates: 'container=<タスク定義で設定したコンテナ名>,image-and-tag=${AWS_ECR_ACCOUNT_URL}/<ECRのリポジトリ名>:${CIRCLE_SHA1}'
              filters:
                branches:
                  only:
                    - staging
    

    자꾸 해설하면,
  • (2)에서 Slack 알림을위한 고급 설정을 넣습니다.
  • (3) 위의 예로 표시된 승인 버튼을 만듭니다.
  • (4) 로 배포합니다만 Approverequires 를 넣기 때문에 승인 버튼을 누를 때까지 배포가 실행되지 않습니다.

  • (2)에 관해서는, 멘션도 붙이는 것이 가능하므로 자세한 것은, 공식 문서 를 참고해 주세요.

    기본적으로 해당 리포지토리에 대한 권한이있는 사람 만 승인 버튼을 누를 수 있다고 생각하므로,
    어느 정도는 보안은 담보할 수 있을까. 그건 그렇고, 누가 승인했는지 알 수 있습니다.

    참고문헌



    이 기사는 다음 정보를 참고로 작성했습니다.

    CircleCI의 Manual Approval 기능을 시도했습니다.

    좋은 웹페이지 즐겨찾기