订阅构建通知

当构建状态发生更改时(例如,创建构建时、构建转换到工作状态时、构建完成时),Cloud Build 会在 Google Pub/Sub 主题上发布消息。

Cloud Build 会将这些构建更新消息发布到名为 cloud-builds 的 Pub/Sub 主题。每条消息均在 message.data 特性中包含构建资源的 base64 JSON 字符串表示法。您可以在 message.attributes 字段找到构建的唯一 ID 以及构建的状态

您可以将推送或拉取模型用于 Pub/Sub 订阅。

接收构建通知

要接收构建通知,请执行以下操作:

  1. 启用 Cloud Build API

    启用 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 服务代理服务账号:

    1. 在 Google Cloud 控制台中打开 IAM 页面:

      打开 IAM 页面

    2. 点击授予使用权限

    3. 添加以下主账号,其中 project-number 是您的项目编号:

      service-project-number@gcp-sa-cloudbuild.iam.gserviceaccount.com
      
    4. 选择服务代理 Cloud Build Service Agent 作为您的角色。

    5. 点击保存

  2. 启用 Pub/Sub API:

    启用 Pub/Sub API

  3. 创建 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 通知程序