Cloud Build Notifier

Cloud Build Notifier は Cloud Run でコンテナとして実行される Docker イメージです。サブスクライバー アプリケーションによってポーリングされると、Cloud Build Notifier は push サブスクリプションを使用して、Slack や SMTP サーバーなどの構成済みのサービスにメッセージを配信します。

このページでは、Cloud Build 通知システムの概要について説明します。

Cloud Build Notifier

Cloud Build は、すべてのビルドイベントの更新とビルド メタデータを cloud-builds トピックまたはユーザー定義トピックの Pub/Sub に送信します。Cloud Build Notifier は、そのトピックをリッスンし、受信したメッセージをフィルタして、Cloud Run 経由でサービスにメッセージを送信するように構成できます。

どの Notifier も Cloud Storage に格納された構成に共通の YAML 仕様を使用します。選択したサービスに認証が必要な場合、その認証情報は Secret Manager に保存されます。Cloud Run はメッセージをルーティングし、通知をサービスに送信します。

次の図は、Cloud Build が Pub/Sub や Cloud Run などの他の Google Cloud プロダクトと連携して通知を送信する方法を示しています。

Cloud Build Notifier の図

ビルド通知の Pub/Sub トピック

デフォルトでは、Cloud Build は、cloud-builds という名前の Pub/Sub トピック(存在する場合)にビルド通知を送信します。カスタム Pub/Sub トピックを作成して、ビルド通知を受け取ることもできます。ビルド構成ファイルの options.pubsubTopic フィールドには、Cloud Build が通知を送信するトピックの名前を定義します。

  • options.pubsubTopic を空白のままにすると、Cloud Build は、そのファイルからのビルドのトピック名としてデフォルト値の cloud-builds を使用します。そのため、cloud-builds トピックを作成し、すべてのビルド構成ファイルで options.pubsubTopic を未定義のままにすると、そのトピックがすべてのビルド通知を受信します。

  • options.pubsubTopic でカスタム トピック名を指定すると、Cloud Build はそのビルド構成ファイルの通知をそのトピックに送信します。カスタム トピック名は、すべてのビルド通知を同じトピックに公開したくない場合に便利です。

    ビルド構成ファイルでカスタム トピック名を使用する場合は、デフォルトの Cloud Build サービス アカウント以外のサービス アカウントにも roles/pubsub.publisher ロールを割り当てる必要があります。

プロジェクト間で Pub/Sub トピックにビルド通知をパブリッシュする

ビルドが実行されたプロジェクトとは異なるプロジェクトの Pub/Sub トピックにビルド通知をパブリッシュするには、ターゲット プロジェクトのサービス アカウントに roles/pubsub.publisher ロールを付与します。

たとえば、プロジェクト A とプロジェクト B があるとします。サービス アカウント A を使用してプロジェクト A でビルドを実行し、プロジェクト B の Pub/Sub トピックにビルド通知をパブリッシュする場合。これを行うには、次のコマンドを実行して、サービス アカウント A にプロジェクト B の roles/pubsub.publisher ロールを付与します。

  gcloud projects add-iam-policy-binding ProjectB --member 'serviceAccount:ServiceAccountA' --role 'roles/pubsub.publisher'

次のようなビルド構成を使用すると、プロジェクト A でビルドを実行し、ビルド通知をプロジェクト B にパブリッシュできます。

  steps:
    - name: ubuntu
      args:
        - pwd
  serviceAccount: projects/ProjectA/serviceAccounts/ServiceAccountA
  options:
    pubsubTopic: projects/ProjectB/topics/CustomTopic
    logging: desired-logging-option

Cloud Build が提供するサポート対象の Notifier

Cloud Build では、デプロイ可能な Notifier イメージが cloud-build-notifiers リポジトリで管理されています。次の表に、使用可能な Notifier を示します。

Notifier 説明
bigquery BigQuery テーブルにビルドデータを書き込みます。
githubissues GitHub Webhook を使用して、GitHub リポジトリに対して問題を作成します。
googlechat Google Chat Webhook を使用して Google Chat スペースにメッセージを投稿します。
http 別の HTTP エンドポイントに JSON ペイロードを送信します。
slack Slack Webhook を使用して、Slack チャンネルにメッセージを投稿します。
smtp SMTP サーバー経由でメールを送信します。

各通知ツールの構成方法の詳細については、各サービスの対応するページをご覧ください。

通知構成を自動化する

Cloud Build には、Cloud Build でサポートされている Notifier の通知構成を自動化するための設定スクリプトが用意されています。

Cloud Build でサポートされている Notifier の通知を構成する方法については、通知の構成の自動化をご覧ください。

独自の Notifier を作成する

Cloud Build によって管理される通知機能(SlackSMTP など)に加えて、cloud-build-notifiers リポジトリを使用して独自の Notifier を作成することもできます。

独自の Notifier を作成する方法については、独自の Notifier を作成するをご覧ください。

次のステップ