この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
CICDのフローへ承認を挟むことで、確認の促進や、不要なプロセスの実行抑止が可能になります。が、何度かやっていて「承認されたのかをチャット通知のみで確認ができない」ことに気が付きました。
自身が操作している時には問題ありませんが、問題は他のスタッフが操作しているケースです。
(承認操作完了したんだろうか。。。)
と気になってWorkflowを見に行ったりします。
Workflowを開いて確認すれば済むことですが、チャット通知を見るだけで済むならそれに越したことはありません。既存のWorkflow構成を少し変更して承認したことも通知されるようにしてみました。
ベースのWorkflow
以下の記事のワークフローをベースにしています。
SlackのOrbによる通知
slack/notify
を使ったjobを作成して呼び出します。slack/approval-notification
を使うと数行のjob追加のみで完了しますが、実際の動作とjob名にズレがあることでミスを招きかねません。
jobs:
notice_build_approved:
docker:
- image: circleci/python:3.7.3
resource_class: small
steps:
- checkout
- slack/notify:
message: ${CIRCLE_BRANCH} SHA1:${CIRCLE_SHA1} のBuildを開始しました。
この設定を既存のCI設定にはさみます。
- approve_build:
type: approval
requires:
- test
filters:
tags:
ignore: /.*/
branches:
only: /.*/
- notice_build_approved:
requires:
- approve_build
filters:
tags:
ignore: /.*/
branches:
only: /.*/
- aws-ecr/build-and-push-image:
requires:
- notice_build_approved
filters:
tags:
ignore: /.*/
branches:
only: /.*/
実際の動作
CircleCI上でのワークフローは以下のように変化しました。「notice_build..」のフローが挟まれ、開始時に通知が実行されるようになります。
あとがき
ビルドに用いていたDockerファイル内での記述という手段もありましたが、ワークフローの挙動修正が目的であるため、CircleCI側への修正としました。
承認した事自体の通知は見落としがちな点だと個人的に思っています。念の為に実施しておくと、心の安定につながるかもしれません。