通知の構成の自動化

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

通知構成の自動化

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

Slack

設定

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

API を有効にしています

Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager API を有効にします。

API を有効にする

認証情報の取得と保存

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

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

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

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

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

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

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

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

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

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

権限の付与

Cloud Run は、Compute Engine のデフォルトのサービス アカウントによって Notifier イメージを実行します。サービス アカウントが Secret Manager からシークレットを取得できるようにするには、サービス アカウントに Secret Manager のシークレット アクセサーのロールを付与する必要があります。

Cloud Run サービス アカウントにシークレットのアクセス権を付与します。

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

    [IAM] ページを開く

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

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

    project-number-compute@developer.gserviceaccount.com
    

    Compute Engine のデフォルトのサービス アカウントをメモしておきます。

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

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

  4. シークレットを含むシークレット名をクリックします。

  5. [権限] タブで、[プリンシパルを追加] をクリックします。

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

  7. ロールとして Secret Manager のシークレット アクセサーを選択します。

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

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
    secrets:
    - name: webhook-url
       value: projects/project-id/secrets/secret-name/versions/latest

ここで

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

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

自動化スクリプトの実行

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

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

  2. リポジトリのルートで次のコマンドを実行します。

     ./setup.sh notifier config-path secret-name
    

    ここで

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

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

** NOTIFIER SETUP COMPLETE **

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

SMTP

設定

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

API を有効にしています

Cloud Build, Compute Engine, Cloud Run, Pub/Sub, and Secret Manager API を有効にします。

API を有効にする

認証情報を保存する

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

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

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

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

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

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

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

権限の付与

Cloud Run は、Compute Engine のデフォルトのサービス アカウントによって Notifier イメージを実行します。サービス アカウントが Secret Manager からシークレットを取得できるようにするには、サービス アカウントに Secret Manager のシークレット アクセサーのロールを付与する必要があります。

Cloud Run サービス アカウントにシークレットのアクセス権を付与します。

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

    [IAM] ページを開く

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

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

    project-number-compute@developer.gserviceaccount.com
    

    Compute Engine のデフォルトのサービス アカウントをメモしておきます。

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

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

  4. シークレットを含むシークレット名をクリックします。

  5. [権限] タブで、[プリンシパルを追加] をクリックします。

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

  7. ロールとして Secret Manager のシークレット アクセサーを選択します。

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

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
   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 は Cloud プロジェクトの ID です。
  • secret-name は、送信者のメールアカウントのパスワードを含むシークレットの名前です。

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

自動化スクリプトの実行

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

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

  2. リポジトリのルートで次のコマンドを実行します。

     ./setup.sh notifier config-path secret-name
    

    ここで

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

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

** NOTIFIER SETUP COMPLETE **

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

BigQuery

設定

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

API を有効にしています

Cloud Build, Cloud Run, Pub/Sub, and BigQuery API を有効にします。

API を有効にする

権限の付与

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

ここで

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

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

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

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

自動化スクリプトの実行

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

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

  2. リポジトリのルートで次のコマンドを実行します。

     ./setup.sh notifier config-path
    

    ここで

    • notifier は、Notifier の名前(slacksmtpbigqueryhttp など)です。
    • config-path は Notifier 構成ファイルのパスです。

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

** NOTIFIER SETUP COMPLETE **

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

HTTP

設定

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

API を有効にしています

Cloud Build, Cloud Run, and Pub/Sub API を有効にします。

API を有効にする

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

ここで

  • url は、この例でリクエストの URL を指定するために使用される構成変数です。
  • url は、受信者サーバーとして指定する URL です。

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

自動化スクリプトの実行

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

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

  2. リポジトリのルートで次のコマンドを実行します。

     ./setup.sh notifier config-path
    

    ここで

    • notifier は、Notifier の名前(slacksmtpbigqueryhttp など)です。
    • config-path は Notifier 構成ファイルのパスです。

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

** NOTIFIER SETUP COMPLETE **

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

次のステップ