通知の構成の自動化

Cloud Build Notifier を使用して、ビルド通知を Slack、Google Chat、SMTP サーバー、HTTP エンドポイント、BigQuery インスタンスに送信するように Cloud Build を構成できます。このページでは、目的の Notifier の構成処理を自動化する方法について説明します。

通知構成の自動化

Cloud Build には、通知構成の自動化に使用できるセットアップ スクリプトが用意されています。セットアップ スクリプトを使用して通知を構成するには:

Slack

設定

次のセクションでは、Notifier の通知構成を自動化する前に実行が必要な手順について説明します。

API を有効にしています

Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the APIs

認証情報の取得と保存

  1. 通知を送信する対象の Slack ワークスペース用の Slack アプリを作成します。

  2. Cloud Build から Slack にメッセージを投稿するには、受信 Webhook を有効にします。

  3. Slack アプリに移動して、受信 Webhook の URL を探します。URL は次のようになります。

    http://hooks.slack.com/services/...
    
  4. 受信 Webhook URL をシークレット マネージャーに保存します。

    1. Google Cloud コンソールで [Secret Manager] ページを開きます。

      [シークレット マネージャー] ページを開く

    2. [シークレットの作成] をクリックします。

    3. シークレットの名前を入力します。

    4. [シークレットの値] の下に、Slack アプリの受信 Webhook URL を追加します。

    5. シークレットを保存するには、[シークレットの作成] をクリックします。

Notifier 構成ファイルの作成

Notifier 構成ファイルを作成し、ビルドイベントに Slack Notifier とフィルタを構成します。

次の Notifier 構成ファイルの例では、filter フィールドで Common Expression Language を使用し、変数 build を指定し、SUCCESS ステータスでビルドイベントをフィルタリングします。

  apiVersion: cloud-build-notifiers/v1
  kind: SlackNotifier
  metadata:
    name: example-slack-notifier
  spec:
    notification:
      filter: build.status == Build.Status.SUCCESS
      delivery:
        webhookUrl:
          secretRef: webhook-url
      template:
        type: golang
        uri: gs://example-gcs-bucket/slack.json
    secrets:
    - name: webhook-url
      value: projects/project-id/secrets/secret-name/versions/latest

ここで

  • webhook-url は、この例で使用されている構成変数です。シークレット マネージャーに格納されている Slack Webhook URL のパスを参照します。ここで指定する変数名は、secretsname フィールドに一致させる必要があります。
  • project-id は、Google Cloud プロジェクトの ID です。
  • secret-name は Slack Webhook URL を含むシークレットの名前です。
  • uri フィールドは slack.json ファイルを参照します。このファイルは、Cloud Storage でホストされる JSON テンプレートが含まれており、Slack スペースへの通知メッセージを表します。

サンプルについては、Slack Notifier の Notifier 構成ファイルをご覧ください。

自動化スクリプトの実行

Notifier の通知構成を自動化するには:

  1. cloud-build-notifiers リポジトリのクローンを作成します。

  2. プロジェクト ID とリージョンを使用して Google Cloud CLI を構成します。

    gcloud config set project project-id
    gcloud config set run/region region
    

    ここで

    • project-id は Google Cloud プロジェクト ID です。
    • region は、Notifier をデプロイするリージョンです。
  3. リポジトリのルートで次のコマンドを実行します。

    ./setup.sh slack config-path -t template-path -s secret-name

ここで

  • config-path は Notifier 構成ファイルのパスです。
  • template-path は Notifier テンプレートファイルのパスです。 Notifier テンプレート ファイルには、Cloud Storage 上でホストされた JSON テンプレートが含まれており、通知メッセージを表します。この変数を使用して、または Notifier 構成ファイルの uri フィールド内に、Notifier テンプレート ファイルをパスとして含めることができます。
  • secret-name はシークレット マネージャーに保存されているシークレットの名前です。

スクリプトを実行すると、次のメッセージが表示されます。

** NOTIFIER SETUP COMPLETE **

これで、Notifier の設定が完了しました。cloud-build-notifiers リポジトリで完全なスクリプトを表示するか、./setup.sh --help を実行してスクリプトの使用手順を確認できます。

SMTP

設定

次のセクションでは、Notifier の通知構成を自動化する前に実行が必要な手順について説明します。

API を有効にしています

Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the APIs

認証情報を保存する

  1. 送信者のメール アカウントのパスワードをシークレット マネージャーに保存します。

  2. Google Cloud Console で [シークレット マネージャー] ページを開きます。

    [シークレット マネージャー] ページを開く

  3. [シークレットの作成] をクリックします。

  4. シークレットの名前を入力します。

  5. [シークレットの値] に、送信者のメール アカウントのパスワードを追加します。

  6. シークレットを保存するには、[シークレットの作成] をクリックします。

Notifier 構成ファイルの作成

Notifier 構成ファイルを作成し、ビルドイベントに SMTP Notifier とフィルタを構成します。

次の Notifier 構成ファイルの例では、filter フィールドで Common Expression Language を使用し、変数 build を指定し、SUCCESS ステータスでビルドイベントをフィルタリングします。

 apiVersion: cloud-build-notifiers/v1
 kind: SMTPNotifier
 metadata:
   name: example-smtp-notifier
 spec:
   notification:
     filter: build.status == Build.Status.SUCCESS
     delivery:
       server: server-host-name
       port: "port"
       sender: sender-email
       from: from-email
       recipients:
         - recipient-email
         # optional: more emails here
       password:
         secretRef: smtp-password
      template:
        type: golang
        uri: gs:example-gcs-bucket/smtp.html
   secrets:
   - name: smtp-password
     value: projects/project-id/secrets/secret-name/versions/latest

ここで

  • server-host-name は、SMTP サーバーのアドレスです。
  • port は、SMTP リクエストを処理するポートです。この値は文字列として指定する必要があります。
  • sender-email は、指定された server-host-name に表示される送信者アカウントのメールアドレスです。
  • from-email は、受信者に表示されるメールアドレスです。
  • recipient-email は、送信者からメッセージを受信する 1 つ以上のメールアドレスのリストです。
  • smtp-password は、シークレット マネージャーに保存されている送信者のメール アカウントのパスワードを参照するためにこの例で使用する構成変数です。ここで指定する変数名は、secretsname フィールドに一致させる必要があります。
  • project-id は、Google Cloud プロジェクトの ID です。
  • secret-name は、送信者のメールアカウントのパスワードを含むシークレットの名前です。
  • uri フィールドは smtp.html ファイルを参照します。このファイルは、Cloud Storage でホストされる HTML テンプレートを参照し、通知メールを表します。

サンプルについては、SMTP Notifier の構成ファイルをご覧ください。

自動化スクリプトの実行

Notifier の通知構成を自動化するには:

  1. cloud-build-notifiers リポジトリのクローンを作成します。

  2. プロジェクト ID とリージョンを使用して Google Cloud CLI を構成します。

    gcloud config set project project-id
    gcloud config set run/region region
    

    ここで

    • project-id は Google Cloud プロジェクト ID です。
    • region は、Notifier をデプロイするリージョンです。
  3. リポジトリのルートで次のコマンドを実行します。

    ./setup.sh smtp config-path -t template-path -s secret-name

ここで

  • config-path は Notifier 構成ファイルのパスです。
  • template-path は Notifier テンプレートファイルのパスです。 Notifier テンプレート ファイルには、Cloud Storage 上でホストされた JSON テンプレートが含まれており、通知メッセージを表します。この変数を使用して、または Notifier 構成ファイルの uri フィールド内に、Notifier テンプレート ファイルをパスとして含めることができます。
  • secret-name はシークレット マネージャーに保存されているシークレットの名前です。

スクリプトを実行すると、次のメッセージが表示されます。

** NOTIFIER SETUP COMPLETE **

これで、Notifier の設定が完了しました。cloud-build-notifiers リポジトリで完全なスクリプトを表示するか、./setup.sh --help を実行してスクリプトの使用手順を確認できます。

BigQuery

設定

次のセクションでは、Notifier の通知構成を自動化する前に実行が必要な手順について説明します。

API を有効にしています

Enable the Cloud Build, Cloud Run, Pub/Sub, and BigQuery APIs.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the APIs

権限の付与

Cloud Run サービス アカウントに、BigQuery テーブルの作成と書き込みを行うための権限と、ビルドに関連する Artifact Registry データを取得する権限を付与します。

  1. Google Cloud Console の IAM ページに移動します。

    [IAM] ページを開く

  2. プロジェクトに関連付けられている Compute Engine のデフォルトのサービス アカウントを見つけます。

    Compute Engine のデフォルトのサービス アカウントは次のようになります。ここで project-number はプロジェクト番号です。

        project-number-compute@developer.gserviceaccount.com
    
  3. Compute Engine のデフォルトのサービス アカウントを含む行の鉛筆アイコンをクリックします。

    [アクセスを編集] タブが表示されます。

    1. [別の役割を追加] をクリックします。

    2. 次のロールを追加します。

      • Artifact Registry 読み取り
      • BigQuery データ編集者

        Artifact Registry 読み取りロールを使用すると、イメージのデータを取得できます。BigQuery データ編集者は、データへの読み取り / 書き込みアクセス権を付与します。

    3. [保存] をクリックします。

Notifier 構成ファイルの作成

Notifier 構成ファイルを作成し、ビルドイベントに BigQuery Notifier とフィルタを構成します。

次の Notifier 構成ファイルの例では、filter フィールドに Common Expression Language と変数 build を指定し、ビルドイベントを指定したトリガー ID でフィルタリングします。

 apiVersion: cloud-build-notifiers/v1
 kind: BigQueryNotifier
 metadata:
   name: example-bigquery-notifier
 spec:
   notification:
     filter: build.build_trigger_id == "123e4567-e89b-12d3-a456-426614174000"
     delivery:
       table: projects/project-id/datasets/dataset-name/tables/table-name
     template:
       type: golang
       uri: gs://example-gcs-bucket/bq.json

ここで

  • project-id は、Google Cloud プロジェクトの ID です。
  • dataset-name は、データセットに付ける名前です。
  • table-name は、テーブルに付ける名前です。

Notifier 構成ファイルの table-name は、以下を参照できます。

  • 存在しないテーブル
  • スキーマを含まない空のテーブル
  • BigQuery Notifier のスキーマ仕様に一致するスキーマを持つ既存のテーブル

  • uri フィールドは bq.json ファイルを参照します。このファイルは、Cloud Storage でホストされる JSON テンプレートを参照し、BigQuery テーブルに挿入する情報を表します。

サンプルを確認するには、BigQuery Notifier の Notifier 構成ファイルをご覧ください。

自動化スクリプトの実行

Notifier の通知構成を自動化するには:

  1. cloud-build-notifiers リポジトリのクローンを作成します。

  2. プロジェクト ID とリージョンを使用して Google Cloud CLI を構成します。

    gcloud config set project project-id
    gcloud config set run/region region
    

    ここで

    • project-id は Google Cloud プロジェクト ID です。
    • region は、Notifier をデプロイするリージョンです。
  3. リポジトリのルートで次のコマンドを実行します。

     ./setup.sh bigquery -t config-path -t template-path
    

    ここで

    • config-path は Notifier 構成ファイルのパスです。
    • template-path は Notifier テンプレートファイルのパスです。 Notifier テンプレート ファイルには、Cloud Storage 上でホストされた JSON テンプレートが含まれており、通知メッセージを表します。この変数を使用して、または Notifier 構成ファイルの uri フィールド内に、Notifier テンプレート ファイルをパスとして含めることができます。

    スクリプトを実行すると、次のメッセージが表示されます。

    ** NOTIFIER SETUP COMPLETE **
    

    これで、Notifier の設定が完了しました。cloud-build-notifiers リポジトリで完全なスクリプトを表示するか、./setup.sh --help を実行してスクリプトの使用手順を確認できます。

HTTP

設定

次のセクションでは、Notifier の通知構成を自動化する前に実行が必要な手順について説明します。

API を有効にしています

Enable the Cloud Build, Cloud Run, and Pub/Sub APIs.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the APIs

Notifier 構成ファイルの作成

Notifier 構成ファイルを作成し、ビルドイベントに HTTP Notifier とフィルタを構成します。

次の Notifier 構成ファイルの例では、filter フィールドで Common Expression Language を使用し、変数 build を指定し、SUCCESS ステータスでビルドイベントをフィルタリングします。

    apiVersion: cloud-build-notifiers/v1
    kind: HTTPNotifier
    metadata:
      name: example-http-notifier
    spec:
      notification:
        filter: build.status == Build.Status.SUCCESS
        delivery:
          # The `http(s)://` protocol prefix is required.
          url: url
        template:
          type: golang
          uri: gs://example-gcs-bucket/http.json

ここで

  • url は、この例でリクエストの URL を指定するために使用される構成変数です。
  • url は、受信者サーバーとして指定する URL です。
  • uri フィールドは http.json ファイルを参照します。このファイルは、Cloud Storage でホストされる JSON テンプレートを参照し、Webhook エンドポイントへの JSON ペイロードを表します。

サンプルについては、HTTP Notifier の Notifier 構成ファイルをご覧ください。

自動化スクリプトの実行

Notifier の通知構成を自動化するには:

  1. cloud-build-notifiers リポジトリのクローンを作成します。

  2. プロジェクト ID とリージョンを使用して Google Cloud CLI を構成します。

    gcloud config set project project-id
    gcloud config set run/region region
    

    ここで

    • project-id は Google Cloud プロジェクト ID です。
    • region は、Notifier をデプロイするリージョンです。
  3. リポジトリのルートで次のコマンドを実行します。

     ./setup.sh http -t config-path
    

    ここで

    • config-path は Notifier 構成ファイルのパスです。

スクリプトを実行すると、次のメッセージが表示されます。

** NOTIFIER SETUP COMPLETE **

これで、Notifier の設定が完了しました。cloud-build-notifiers リポジトリで完全なスクリプトを表示するか、./setup.sh --help を実行してスクリプトの使用手順を確認できます。

Google Chat

設定

次のセクションでは、Notifier の通知構成を自動化する前に実行が必要な手順について説明します。

API を有効にしています

Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the APIs

認証情報の取得と保存

  1. Google Chat でスペースを作成する

  2. 作成したスペースで、受信 Webhook を作成して、Cloud Build から Google Chat にメッセージを投稿します。URL は次のようになります。

    https://chat.googleapis.com/v1/spaces/...

  3. 受信 Webhook URL をシークレット マネージャーに保存します。

    1. Google Cloud コンソールで [Secret Manager] ページを開きます。

      [シークレット マネージャー] ページを開く

    2. [シークレットの作成] をクリックします。

    3. シークレットの名前を入力します。

    4. [シークレットの値] で、Google Chat スペースの受信 Webhook URL を追加します。

    5. シークレットを保存するには、[シークレットの作成] をクリックします。

Notifier 構成ファイルの作成

Notifier 構成ファイルを作成し、ビルドイベントに Google Chat Notifier とフィルタを構成します。

次の Notifier 構成ファイルの例では、filter フィールドで Common Expression Language を使用し、変数 build を指定し、SUCCESS ステータスでビルドイベントをフィルタリングします。

  apiVersion: cloud-build-notifiers/v1
  kind: GoogleChatNotifier
  metadata:
    name: example-googlechat-notifier
  spec:
    notification:
      filter: build.status == Build.Status.SUCCESS
      delivery:
        webhookUrl:
          secretRef: webhook-url
    secrets:
    - name: webhook-url
      value: projects/project-id/secrets/secret-name/versions/latest

ここで

  • webhook-url は、この例で使用されている構成変数です。Secret Manager に格納されている Slack Webhook URL のパスを参照します。ここで指定する変数名は、secretsname フィールドに一致させる必要があります。
  • project-id は、Google Cloud プロジェクトの ID です。
  • secret-name は、Google Chat Webhook URL を含むシークレットの名前です。

サンプルを確認するには、Google Chat Notifier の Notifier 構成ファイルをご覧ください。

自動化スクリプトの実行

Notifier の通知構成を自動化するには:

  1. cloud-build-notifiers リポジトリのクローンを作成します。

  2. プロジェクト ID とリージョンを使用して Google Cloud CLI を構成します。

    gcloud config set project project-id
    gcloud config set run/region region
    

    ここで

    • project-id は Google Cloud プロジェクト ID です。
    • region は、Notifier をデプロイするリージョンです。
  3. リポジトリのルートで次のコマンドを実行します。

./setup.sh googlechat config-path -s secret-name

ここで

  • config-path は Notifier 構成ファイルのパスです。
  • secret-name はシークレット マネージャーに保存されているシークレットの名前です。

スクリプトを実行すると、次のメッセージが表示されます。

** NOTIFIER SETUP COMPLETE **

これで、Notifier の設定が完了しました。cloud-build-notifiers リポジトリで完全なスクリプトを表示するか、./setup.sh --help を実行してスクリプトの使用手順を確認できます。

GitHub Issues

設定

次のセクションでは、Notifier の通知構成を自動化する前に実行が必要な手順について説明します。

API を有効にしています

Enable the Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager APIs.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the APIs

認証情報の取得と保存

  1. GitHub 個人アクセス トークンを作成します。

    1. GitHub の設定に移動して、新しいトークンを作成します。
    2. [repo範囲] を選択します。

    3. [Generate token] をクリックします

  2. Secret Manager にトークンを保存します。

    1. Google Cloud コンソールで [シークレット マネージャー] ページを開きます。

      [シークレット マネージャー] ページを開く

    2. [シークレットの作成] をクリックします。

    3. シークレットの名前を入力します。

    4. [シークレットの値] で、GitHub トークンを追加します。

    5. シークレットを保存するには、[シークレットの作成] をクリックします。

テンプレート構成ファイルの作成

テンプレート構成ファイルを作成し、作成された GitHub Issues の形式を記述します。

次のテンプレート構成ファイルの例では、title フィールドと body フィールドでビルドの置換変数が使用されています。

{
    "title": "Build {{.Build.BuildTriggerId}}: {{.Build.Status}}",
    "body": "[{{.Build.ProjectId}}] {{.Build.BuildTriggerId}} status: **{{.Build.Status}}**\n\n[View Logs]({{.Build.LogUrl}})"
}

サンプルについては、GitHub Issues Notifier のテンプレート構成ファイルをご覧ください。

問題を作成するための GitHub API エンドポイントの利用可能な本文パラメータから追加のフィールドを設定できます。

Notifier 構成ファイルの作成

Notifier 構成ファイルを作成し、ビルドイベントに Google Chat Notifier とフィルタを構成します。

次の Notifier 構成ファイルの例では、filter フィールドで Common Expression Language を使用し、変数 build を指定し、SUCCESS ステータスでビルドイベントをフィルタリングします。

apiVersion: cloud-build-notifiers/v1
kind: GitHubIssuesNotifier
metadata:
  name: example-githubissues-notifier
spec:
  notification:
    filter: build.status == Build.Status.FAILURE
    template: 
      type: golang
      uri: gs://project-id-notifiers-config/template-file-name
    delivery:
      githubToken:
        secretRef: github-token
      githubRepo: myuser/myrepo
  secrets:
  - name: github-token
    value: projects/project-id/secrets/secret-name/versions/latest

ここで

  • githubToken は、この例で使用されている構成変数です。Secret Manager に格納されている GitHub トークンを参照します。ここで指定する変数名は、secretsname フィールドに一致させる必要があります。
  • project-id-notifiers-config は、テンプレートのアップロード先の場所です。バケットがまだ存在しない場合は作成されます。
  • template-file-name はテンプレート ファイルの名前です。
  • myuser/myrepo は、問題が作成されるリポジトリの名前です。
  • project-id は、Google Cloud プロジェクトの ID です。
  • secret-name は、GitHub トークンを含むシークレットの名前です。

サンプルを確認するには、Google Chat Notifier の Notifier 構成ファイルをご覧ください。

フィルタに使用できるその他のフィールドについては、ビルドリソースをご覧ください。フィルタリングに関するその他の例については、CEL を使用してビルドイベントをフィルタリングするをご覧ください。

自動化スクリプトの実行

Notifier の通知構成を自動化するには:

  1. cloud-build-notifiers リポジトリのクローンを作成します。

  2. プロジェクト ID とリージョンを使用して Google Cloud CLI を構成します。

    gcloud config set project project-id
    gcloud config set run/region region
    

    ここで

    • project-id は Google Cloud プロジェクト ID です。
    • region は、Notifier をデプロイするリージョンです。
  3. リポジトリのルートで次のコマンドを実行します。

    ./setup.sh githubissues config-path -t template-path -s secret-name

ここで

  • config-path は Notifier 構成ファイルのパスです。
  • template-path は Notifier テンプレートファイルのパスです。 Notifier テンプレート ファイルには、Cloud Storage 上でホストされた JSON テンプレートが含まれており、通知メッセージを表します。この変数を使用して、または Notifier 構成ファイルの uri フィールド内に、Notifier テンプレート ファイルをパスとして含めることができます。
  • secret-name はシークレット マネージャーに保存されているシークレットの名前です。

スクリプトを実行すると、次のメッセージが表示されます。

** NOTIFIER SETUP COMPLETE **

これで、Notifier の設定が完了しました。cloud-build-notifiers リポジトリで完全なスクリプトを表示するか、./setup.sh --help を実行してスクリプトの使用手順を確認できます。

次のステップ