当构建状态发生更改时(例如,创建构建时、构建转换到工作状态时、构建完成时),Cloud Build 会在 Google Pub/Sub 主题上发布消息。
Cloud Build 会将这些构建更新消息发布到名为 cloud-builds
的 Pub/Sub 主题。每条消息均在 message.data
特性中包含构建资源的 base64 JSON 字符串表示法。您可以在 message.attributes
字段找到构建的唯一 ID 以及构建的状态。
您可以将推送或拉取模型用于 Pub/Sub 订阅。
接收构建通知
要接收构建通知,请执行以下操作:
启用 Cloud Build API
启用 Cloud Build API 后,Cloud Build Service Agent 服务账号会自动添加到您的项目中。该服务账号允许您通过 Pub/Sub 接收构建通知。
该服务账号采用以下格式,其中 project-number 是您的项目编号:
service-project-number@gcp-sa-cloudbuild.iam.gserviceaccount.com
如果您没有看到 Cloud Build 服务代理服务账号,或者无法通过 Pub/Sub 接收通知,请按照以下步骤添加 Cloud Build 服务代理服务账号:
在 Google Cloud 控制台中打开 IAM 页面:
点击授予访问权限。
添加以下主账号,其中 project-number 是您的项目编号:
service-project-number@gcp-sa-cloudbuild.iam.gserviceaccount.com
选择服务代理 Cloud Build Service Agent 作为您的角色。
点击保存。
启用 Pub/Sub API:
创建
cloud-builds
主题:gcloud pubsub topics create cloud-builds
如需详细了解如何管理 Pub/Sub 主题,请参阅管理主题和订阅。
推送
推送订阅将消息传送到您定义的 HTTP 端点。消息会在发布到主题后立即传送。
从推送订阅发送的消息如下所示:
{
"message": {
"attributes": {
"buildId": "abcd-efgh...",
"status": "SUCCESS"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"message_id": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
拉取
拉取订阅在已订阅的应用轮询时传送消息。轮询订阅时会传送消息。
从拉取订阅发送的消息如下所示:
{
"receivedMessages": [
{
"ackId": "dQNNHlAbEGEIBERNK0EPKVgUWQYyODM2LwgRHFEZDDsLRk1SK...",
"message": {
"attributes": {
"buildId": "abcd-efgh-...",
"status": "SUCCESS"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"messageId": "19917247034"
}
}
]
}
如何订阅构建更新通知?
您可以通过各种方式订阅构建更新通知。 例如,您可以将消息推送到端点或编写 Python 应用来轮询订阅。
如需了解如何为构建更新设置 Pub/Sub 订阅,请参阅 Pub/Sub 订阅者指南。您还可以了解 Pub/Sub 客户端库,以便更轻松地开发订阅者应用。
如需了解如何使用 Pub/Sub 向 Slack 等服务发送构建更新或通过电子邮件发送,请参阅 Cloud Build 通知程序。