ワークフローの停止を Slack チャンネルに通知する

1+ year ago1 min read
Last updated • Read time
クラウド
This document is applicable to CircleCI クラウド
Server v4.x
This document is applicable to CircleCI Server v4.x
Server v3.x
This document is applicable to CircleCI Server v3.x

Slack は、リアルタイムコラボレーション アプリケーションです。チームメンバーは、カスタマイズされたチャンネルやワークスペースを通じて、定型業務やプロジェクトに協力して取り組むことができます。 CircleCI プラットフォームを使用する際は、チームのニーズや要件に基づき Slack アプリのカスタム通知を有効にしておくと便利です。

CircleCI Slack Orb により、さまざまな通知やメッセージを作成し、任意の受信者に送信できます。

承認待ちのワークフローが停止している場合に、Slack Orb の定義済みジョブを使って Slack チャンネルに通知する方法を紹介します。 承認に関する詳細は、 ワークフローを使ったジョブのオーケストレーション のページを参照してください。

Slack Orb の使い方に関するフルチュートリアルは、 Slack Orb を使って Slack の通知を設定する をご覧下さい。

設定ファイルの詳細

すべての CircleCI プロジェクトには、 .circleci/config.yml という設定ファイルが必要です。 以下の手順に従って、完全な config.yml ファイルを作成してください。

1. バージョンの指定

すべての CircleCI config.yml は、最初にバージョンキーを指定します。 このキーは、互換性を損なう変更に関する警告を表示するために使用します。

version: 2.1

2. Slack Orb の使用

Slack Orb には、事前にパッケージ化された一連の CircleCI 設定ファイルが含まれており、CI/CD パイプラインにイベントベースの通知を実装するために使用できます。

この Orb をご自身の設定ファイルに追加するには、下記を挿入します。

orbs:
  slack: circleci/slack@4.10.1

3. ジョブの作成

ジョブは設定の構成要素です。 また、必要に応じてコマンド / スクリプトを実行するステップの集まりです。 ジョブ内のステップは、すべて 1 単位として新しいコンテナまたは仮想マシン内で実行されます。 ジョブに関する詳細は、 ジョブとステップ のページを参照してください。

このガイドでは、プロジェクトのテストおよびデプロイ用のジョブがあることを前提としています。 以下のセクションでは、testdeploy がこれらのジョブになります。

4. ワークフローの作成

ワークフローは、一連のジョブとその実行順序を定義するためのルールです。 ワークフローを使用すると、設定キーを組み合わせて複雑なジョブオーケストレーションを構成でき、問題の早期解決に役立ちます。 ワークフロー内で、実行したいジョブを定義します。 このワークフローはコミットのたびに実行されます。 詳細は、 ワークフローの設定 を参照して下さい。

workflows:
  test-hold-deploy: # this can be any name you choose

5. ワークフローへのジョブの追加

ワークフロー、test-hold-deploy が作成されたので、それを使って手動承認を要求する一時停止を間に入れた test ジョブと deploy ジョブの実行をオーケストレーションします。 同時実行、順次実行、および手動承認ワークフローを含むジョブのオーケストレーションの詳細については、 ワークフローを使ったジョブのオーケストレーション を参照して下さい。

approval ジョブを追加して、手動承認が得られるまでワークフローを一時停止することもできます。 このワークフローは、requires キーを使ってジョブを順次実行するように設定されていることにご注意ください。

workflows:
  test-hold-deploy:
    jobs:
      - test
      - pause_workflow:
          requires:
            - test
          type: approval
      - deploy:
          requires:
            - pause_workflow

6. Slack チャンネルへの通知ジョブの追加

Slack Orb には定義済みのジョブ、 on-hold が含まれており、ワークフローが承認を待つために一時停止すると、Slack チャンネルに通知を送信します。 デフォルトの通知テンプレートの詳細については、Orb に関するリンク、 README を参照して下さい。 このジョブを使った様々なオプションの詳細については、 リンク Orb レジストリ を参照して下さい。

workflows:
  test-hold-deploy:
    jobs:
      - test
      - slack/on-hold:
          context: slack-secrets
          requires:
            - test
      - pause_workflow:
          requires:
            - test
            - slack/on-hold
          type: approval
      - deploy:
          requires:
            - pause_workflow

設定ファイルの全文

version: 2.1

orbs:
  slack: circleci/slack@4.10.1

jobs:
  test:
  ... # define your test job

  deploy:
  ... # define your deploy job

workflows:
  test-hold-deploy:
    jobs:
      - test
      - slack/on-hold:
          context: slack-secrets
          requires:
            - test
      - pause_workflow:
          requires:
            - test
            - slack/on-hold
          type: approval
      - deploy:
          requires:
            - pause_workflow

次のステップ

独自の Orb の作成については、 Orb の作成方法 を参照して下さい。