CircleCI Orbsでデプロイ承認ボタンを作ってSlackに通知させる
概要
以前、CircleCI OrbsでECS Fargateのデプロイを自動化という記事を書いたのですが、
この仕組みだと特定のブランチにマージしたタイミングで自動デプロイが走ってしまいます。
本番環境だけは、マージ=デプロイ
でななく、任意のタイミングでデプロイしたいってこともあると思うので、
CircleCI Orbsを使ってそのあたりを制御したい思います。
イメージとしては、特定のブランチにマージした段階で
と言うようなSlack通知が来て、Visit Workflow
のリンクを踏むと
が表示され、Approve
をクリックすると、デプロイできるという仕組みが作れます。
前提条件
- 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) でデプロイするんですが、
requires
にapproval-deploy
を入れてるため、承認ボタンが押されるまではデプロイが走りません。
(2)に関しては、メンションもつけることが可能なので詳細は、オフィシャルドキュメントを参考にしてください。
基本的に当該リポジトリへの権限がある人しか承認ボタンを押せないとと思うので、
ある程度はセキュリティは担保できるかと。ちなみに誰が承認したかも分かります。
参考文献
この記事は以下の情報を参考にして執筆しました。
Author And Source
この問題について(CircleCI Orbsでデプロイ承認ボタンを作ってSlackに通知させる), 我々は、より多くの情報をここで見つけました https://qiita.com/syogun/items/64084f0290700fa475b9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .