[CircleCI]承認済み通知をWorkflowに追加してみた

CircleCIにて承認フローを設けた際に、実際に承認されたことが分かるような通知を挟んでみました。
2020.01.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

CICDのフローへ承認を挟むことで、確認の促進や、不要なプロセスの実行抑止が可能になります。が、何度かやっていて「承認されたのかをチャット通知のみで確認ができない」ことに気が付きました。

自身が操作している時には問題ありませんが、問題は他のスタッフが操作しているケースです。

(承認操作完了したんだろうか。。。)

と気になってWorkflowを見に行ったりします。

Workflowを開いて確認すれば済むことですが、チャット通知を見るだけで済むならそれに越したことはありません。既存のWorkflow構成を少し変更して承認したことも通知されるようにしてみました。

ベースのWorkflow

以下の記事のワークフローをベースにしています。

[CircleCI]requiresとfiltersの指定を適切に組み合わせてapprove通知を適正にした記録

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..」のフローが挟まれ、開始時に通知が実行されるようになります。

Before
After

あとがき

ビルドに用いていたDockerファイル内での記述という手段もありましたが、ワークフローの挙動修正が目的であるため、CircleCI側への修正としました。

承認した事自体の通知は見落としがちな点だと個人的に思っています。念の為に実施しておくと、心の安定につながるかもしれません。