Cloud Build では、ビルドの作成時、ビルドの動作状態への移行時、ビルドの完了時など、ビルドの状態が変化したときに Google Pub/Sub トピックにメッセージを公開します。
Cloud Build がビルド更新メッセージを公開する Pub/Sub トピックは cloud-builds
です。各メッセージでは、base64 でエンコードされたビルドリソースの JSON 文字列表現が message.data
属性に含まれています。ビルドの一意の ID とビルドのステータスは message.attributes
フィールドで確認できます。
Pub/Sub サブスクリプションに push または pull モデルを使用できます。
ビルド通知の受信
ビルド通知を受信するには、次のようにします。
Cloud Build API を有効にします。
Cloud Build API を有効にすると、Cloud Build サービス エージェント サービス アカウントがプロジェクトに自動的に追加されます。サービス アカウントを使用すると、Pub/Sub 経由でビルド通知を受信できます。
サービス アカウントの形式は次のとおりです。ここで project-number はプロジェクト番号です。
service-project-number@gcp-sa-cloudbuild.iam.gserviceaccount.com
IAM ページに Cloud Build サービス エージェント サービス アカウントが表示されない、または Pub/Sub 経由で通知を受信できない場合は、次の手順に従ってプロジェクトに Cloud Build サービス エージェントサービス アカウントを追加します。
Google Cloud コンソールで IAM ページを開きます。
[アクセス権を付与] をクリックします。
次のプリンシパルを追加します。ここで、project-number はプロジェクト番号です。
service-project-number@gcp-sa-cloudbuild.iam.gserviceaccount.com
ロールは [サービス エージェント] > [Cloud Build サービス エージェント] の順に選択します。
[保存] をクリックします。
Pub/Sub API を有効にします。
cloud-builds
トピックを作成します:gcloud pubsub topics create cloud-builds
Pub/Sub トピックの管理の詳細については、トピックとサブスクリプションの管理をご覧ください。
プッシュ
push サブスクリプションは、定義した HTTP エンドポイントにメッセージを配信します。メッセージは、トピックに公開されるとすぐに配信されます。
push サブスクリプションから送信されるメッセージは、次のようになります。
{
"message": {
"attributes": {
"buildId": "abcd-efgh...",
"status": "SUCCESS"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"message_id": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
pull
pull サブスクリプションは、サブスクライブされたアプリケーションによってポーリングされたときにメッセージを配信します。サブスクリプションがポーリングされると、メッセージが配信されます。
pull サブスクリプションから送信されるメッセージは次のようになります。
{
"receivedMessages": [
{
"ackId": "dQNNHlAbEGEIBERNK0EPKVgUWQYyODM2LwgRHFEZDDsLRk1SK...",
"message": {
"attributes": {
"buildId": "abcd-efgh-...",
"status": "SUCCESS"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"messageId": "19917247034"
}
}
]
}
ビルドの更新通知の登録方法
ビルドの更新通知に登録するには、さまざまな方法があります。 たとえば、メッセージをエンドポイントに push できます。また、サブスクリプションをポーリングする Python アプリを作成することもできます。
ビルドの更新用に Pub/Sub サブスクリプションを設定する方法については、Pub/Sub サブスクライバー ガイドをご覧ください。また、Pub/Sub クライアント ライブラリを使用すると、サブスクライバー アプリケーションをより簡単に開発できます。
Pub/Sub を使用して Slack やメールなどのサービスにビルドの更新を通知する方法については、Cloud Build Notifier をご覧ください。