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.
認証情報の取得と保存
通知を送信する対象の Slack ワークスペース用の Slack アプリを作成します。
Cloud Build から Slack にメッセージを投稿するには、受信 Webhook を有効にします。
Slack アプリに移動して、受信 Webhook の URL を探します。URL は次のようになります。
http://hooks.slack.com/services/...
受信 Webhook URL をシークレット マネージャーに保存します。
Google Cloud コンソールで [Secret Manager] ページを開きます。
[シークレットの作成] をクリックします。
シークレットの名前を入力します。
[シークレットの値] の下に、Slack アプリの受信 Webhook URL を追加します。
シークレットを保存するには、[シークレットの作成] をクリックします。
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 のパスを参照します。ここで指定する変数名は、secrets
のname
フィールドに一致させる必要があります。project-id
は、Google Cloud プロジェクトの ID です。secret-name
は Slack Webhook URL を含むシークレットの名前です。uri
フィールドはslack.json
ファイルを参照します。このファイルは、Cloud Storage でホストされる JSON テンプレートが含まれており、Slack スペースへの通知メッセージを表します。
サンプルについては、Slack Notifier の Notifier 構成ファイルをご覧ください。
自動化スクリプトの実行
Notifier の通知構成を自動化するには:
cloud-build-notifiers リポジトリのクローンを作成します。
プロジェクト ID とリージョンを使用して Google Cloud CLI を構成します。
gcloud config set project project-id gcloud config set run/region region
ここで
project-id
はユーザーの Google Cloud プロジェクト ID です。region
は、Notifier をデプロイするリージョンです。
リポジトリのルートで次のコマンドを実行します。
./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.
認証情報を保存する
送信者のメール アカウントのパスワードをシークレット マネージャーに保存します。
Google Cloud Console で [シークレット マネージャー] ページを開きます。
[シークレットの作成] をクリックします。
シークレットの名前を入力します。
[シークレットの値] に、送信者のメール アカウントのパスワードを追加します。
シークレットを保存するには、[シークレットの作成] をクリックします。
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
は、シークレット マネージャーに保存されている送信者のメール アカウントのパスワードを参照するためにこの例で使用する構成変数です。ここで指定する変数名は、secrets
のname
フィールドに一致させる必要があります。project-id
は、Google Cloud プロジェクトの ID です。secret-name
は、送信者のメールアカウントのパスワードを含むシークレットの名前です。uri
フィールドはsmtp.html
ファイルを参照します。このファイルは、Cloud Storage でホストされる HTML テンプレートを参照し、通知メールを表します。
サンプルについては、SMTP Notifier の構成ファイルをご覧ください。
自動化スクリプトの実行
Notifier の通知構成を自動化するには:
cloud-build-notifiers リポジトリのクローンを作成します。
プロジェクト ID とリージョンを使用して Google Cloud CLI を構成します。
gcloud config set project project-id gcloud config set run/region region
ここで
project-id
はユーザーの Google Cloud プロジェクト ID です。region
は、Notifier をデプロイするリージョンです。
リポジトリのルートで次のコマンドを実行します。
./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.
権限の付与
Cloud Run サービス アカウントに、BigQuery テーブルの作成と書き込みを行うための権限と、ビルドに関連する Artifact Registry データを取得する権限を付与します。
Google Cloud Console の IAM ページに移動します。
プロジェクトに関連付けられている Compute Engine のデフォルトのサービス アカウントを見つけます。
Compute Engine のデフォルトのサービス アカウントは次のようになります。ここで project-number はプロジェクト番号です。
project-number-compute@developer.gserviceaccount.com
Compute Engine のデフォルトのサービス アカウントを含む行の鉛筆アイコンをクリックします。
[アクセスを編集] タブが表示されます。
[別の役割を追加] をクリックします。
次のロールを追加します。
- Artifact Registry 読み取り
BigQuery データ編集者
Artifact Registry 読み取りロールを使用すると、イメージのデータを取得できます。BigQuery データ編集者は、データへの読み取り / 書き込みアクセス権を付与します。
[保存] をクリックします。
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 の通知構成を自動化するには:
cloud-build-notifiers リポジトリのクローンを作成します。
プロジェクト ID とリージョンを使用して Google Cloud CLI を構成します。
gcloud config set project project-id gcloud config set run/region region
ここで
project-id
はユーザーの Google Cloud プロジェクト ID です。region
は、Notifier をデプロイするリージョンです。
リポジトリのルートで次のコマンドを実行します。
./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.
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 の通知構成を自動化するには:
cloud-build-notifiers リポジトリのクローンを作成します。
プロジェクト ID とリージョンを使用して Google Cloud CLI を構成します。
gcloud config set project project-id gcloud config set run/region region
ここで
project-id
はユーザーの Google Cloud プロジェクト ID です。region
は、Notifier をデプロイするリージョンです。
リポジトリのルートで次のコマンドを実行します。
./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.
認証情報の取得と保存
Google Chat でスペースを作成する
作成したスペースで、受信 Webhook を作成して、Cloud Build から Google Chat にメッセージを投稿します。URL は次のようになります。
https://chat.googleapis.com/v1/spaces/...
受信 Webhook URL をシークレット マネージャーに保存します。
Google Cloud コンソールで [Secret Manager] ページを開きます。
[シークレットの作成] をクリックします。
シークレットの名前を入力します。
[シークレットの値] で、Google Chat スペースの受信 Webhook URL を追加します。
シークレットを保存するには、[シークレットの作成] をクリックします。
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 のパスを参照します。ここで指定する変数名は、secrets
のname
フィールドに一致させる必要があります。project-id
は、Google Cloud プロジェクトの ID です。secret-name
は、Google Chat Webhook URL を含むシークレットの名前です。
サンプルを確認するには、Google Chat Notifier の Notifier 構成ファイルをご覧ください。
自動化スクリプトの実行
Notifier の通知構成を自動化するには:
cloud-build-notifiers リポジトリのクローンを作成します。
プロジェクト ID とリージョンを使用して Google Cloud CLI を構成します。
gcloud config set project project-id gcloud config set run/region region
ここで
project-id
はユーザーの Google Cloud プロジェクト ID です。region
は、Notifier をデプロイするリージョンです。
リポジトリのルートで次のコマンドを実行します。
./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.
認証情報の取得と保存
GitHub 個人アクセス トークンを作成します。
- GitHub の設定に移動して、新しいトークンを作成します。
[
repo
範囲] を選択します。[Generate token] をクリックします
Secret Manager にトークンを保存します。
Google Cloud コンソールで [シークレット マネージャー] ページを開きます。
[シークレットの作成] をクリックします。
シークレットの名前を入力します。
[シークレットの値] で、GitHub トークンを追加します。
シークレットを保存するには、[シークレットの作成] をクリックします。
テンプレート構成ファイルの作成
テンプレート構成ファイルを作成し、作成された 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 トークンを参照します。ここで指定する変数名は、secrets
のname
フィールドに一致させる必要があります。project-id-notifiers-config
は、テンプレートのアップロード先の場所です。バケットがまだ存在しない場合は作成されます。template-file-name
はテンプレート ファイルの名前です。myuser/myrepo
は、問題が作成されるリポジトリの名前です。project-id
は、Google Cloud プロジェクトの ID です。secret-name
は、GitHub トークンを含むシークレットの名前です。
サンプルを確認するには、Google Chat Notifier の Notifier 構成ファイルをご覧ください。
フィルタに使用できるその他のフィールドについては、ビルドリソースをご覧ください。フィルタリングに関するその他の例については、CEL を使用してビルドイベントをフィルタリングするをご覧ください。
自動化スクリプトの実行
Notifier の通知構成を自動化するには:
cloud-build-notifiers リポジトリのクローンを作成します。
プロジェクト ID とリージョンを使用して Google Cloud CLI を構成します。
gcloud config set project project-id gcloud config set run/region region
ここで
project-id
はユーザーの Google Cloud プロジェクト ID です。region
は、Notifier をデプロイするリージョンです。
リポジトリのルートで次のコマンドを実行します。
./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
を実行してスクリプトの使用手順を確認できます。
次のステップ
- Cloud Build Notifier の詳細を確認します。
- ビルド通知をサブスクライブする方法を学習する。
- Cloud Build ビルド構成ファイルを作成する方法を学習する。