CircleCI Orbs에서 배포 승인 버튼을 만들어 Slack에 알리기
6808 단어 devopsCircleCI슬랙CircleCI2.1
개요
이전에 CircleCI Orbs로 ECS Fargate 배포 자동화 이라는 기사를 썼는데,
이 구조라면 특정 브랜치에 병합한 타이밍에 자동 배포가 달려 버립니다.
프로덕션 환경만은.
CircleCI Orbs를 사용하여 그 근처를 제어하고 싶습니다.
이미지로서는, 특정의 브랜치에 병합한 단계에서
Slack 알림이 와서
マージ=デプロイ
링크를 밟으면가 표시되고
Visit Workflow
를 클릭하여 배포할 수 있는 메커니즘을 만들 수 있습니다.전제 조건
설정
지난번의 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
자꾸 해설하면,
Approve
에 requires
를 넣기 때문에 승인 버튼을 누를 때까지 배포가 실행되지 않습니다. (2)에 관해서는, 멘션도 붙이는 것이 가능하므로 자세한 것은, 공식 문서 를 참고해 주세요.
기본적으로 해당 리포지토리에 대한 권한이있는 사람 만 승인 버튼을 누를 수 있다고 생각하므로,
어느 정도는 보안은 담보할 수 있을까. 그건 그렇고, 누가 승인했는지 알 수 있습니다.
참고문헌
이 기사는 다음 정보를 참고로 작성했습니다.
CircleCI의 Manual Approval 기능을 시도했습니다.
Reference
이 문제에 관하여(CircleCI Orbs에서 배포 승인 버튼을 만들어 Slack에 알리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/syogun/items/64084f0290700fa475b9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)