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 プロダクトと連携して通知を送信する方法を示しています。
ビルド通知の 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 サーバー経由でメールを送信します。 |
各通知ツールの構成方法の詳細については、各サービスの対応するページをご覧ください。
- BigQuery 通知を構成する
- GitHub Issues の通知を構成する
- Google Chat の通知を構成する
- HTTP 通知を構成する
- Slack 通知を構成する
- SMTP 通知を構成する
通知構成を自動化する
Cloud Build には、Cloud Build でサポートされている Notifier の通知構成を自動化するための設定スクリプトが用意されています。
Cloud Build でサポートされている Notifier の通知を構成する方法については、通知の構成の自動化をご覧ください。
独自の Notifier を作成する
Cloud Build によって管理される通知機能(Slack や SMTP など)に加えて、cloud-build-notifiers
リポジトリを使用して独自の Notifier を作成することもできます。
独自の Notifier を作成する方法については、独自の Notifier を作成するをご覧ください。
次のステップ
- BigQuery、GitHub Issue、Google Chat、HTTP、Slack、または SMTP Notifier を構成する方法を学習する。
- 通知の構成を自動化する方法を学習する。
- 独自の Notifier を作成する方法を学習する。