使用 Cloud Deploy 通知

本页面介绍了如何使用 Cloud Deploy 服务通知, 包括如何订阅这类视频

Cloud Deploy 使用 Pub/Sub 来发布通知的目的有两个:

  • 让您可以将 Cloud Deploy 与第三方工具 Google 工具,例如工作流工单或测试基础架构的工具。

  • 使用补充的业务逻辑扩展 Cloud Deploy。

可用的主题

Cloud Deploy 会将消息发布到 Google Pub/Sub 主题:

  • clouddeploy-resources

    当对任何对象执行操作(创建、更新、删除)时, Cloud Deploy 核心资源(自动化、自定义目标类型、 交付流水线、作业运行、发布、发布、目标)。

  • clouddeploy-operations

    • Cloud Deploy 渲染 Skaffold 配置的时间。
    • 当 Cloud Deploy 部署到目标(StartSucceedFailureTerminated(作业运行)、Cancelled(发布)。
  • clouddeploy-approvals

    • 当 Cloud Deploy 需要批准(或拒绝)发布时。
    • 发布被批准或拒绝时。
  • clouddeploy-advances

    • Cloud Deploy 的发布从一个阶段推进到 下一个。
    • 当发布已准备好推进发布时。

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

接收 Cloud Deploy 服务通知

如需接收 Cloud Deploy 服务通知,请执行以下操作:

  1. 启用 Cloud Deploy API:

    启用 Cloud Deploy API

    Cloud Deploy Service Agent 服务账号会自动添加到 项目。此服务 可用于接收 Cloud Deploy 服务通知 使用 Pub/Sub

    服务账号名称采用以下格式,其中 project-number 是您的项目编号:

     service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
    

    如果您仍未在 IAM 页面上看到 Cloud Deploy Service Agent 服务账号,或者无法接收 Pub/Sub 通知,请将此服务账号添加到您的项目:

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

      打开 IAM 页面

    2. 点击添加

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

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

    5. 点击保存

  2. 启用 Pub/Sub API:

    启用 Pub/Sub API

  3. 根据要接收的通知类型创建 Pub/Sub 主题:

    gcloud pubsub topics create clouddeploy-resources
    gcloud pubsub topics create clouddeploy-operations
    gcloud pubsub topics create clouddeploy-approvals
    gcloud pubsub topics create clouddeploy-advances
    

    如需详细了解如何管理 Pub/Sub 主题,请参阅管理主题和订阅

订阅 Cloud Deploy 服务通知

您可以通过多种方式订阅通知。例如,您可以将消息推送到端点编写 Python 应用来轮询订阅

了解如何为 Cloud Deploy 设置 Pub/Sub 订阅 服务通知,请阅读 Pub/Sub 订阅者指南。 您还可以了解 Pub/Sub 客户端库以使开发订阅者应用更加简单。

字段值

本部分列出了 Cloud Deploy 中字段的可能值 Pub/Sub 消息。

对于 Action

在这些通知中,Action 的可能值如下。

  • 对于资源

    • Create
    • Update
    • Delete
  • 对于操作:

    • Start
    • Succeed
    • Failure
    • Terminated
    • Cancelled
  • 对于批准:

    • Required
    • Approved
    • Rejected
  • 对于高级方案:

    • Required
    • Advanced

对于 ResourceType

ResourceType 的可能值如下所示:

  • DeliveryPipeline
  • Target
  • Release
  • Rollout
  • JobRun

示例消息

以下示例展示了来自不同来源的多种 Pub/Sub 消息 Cloud Deploy 的主题。

创建交付流水线

以下是作为创建新 deliveryPipeline 的响应而发布到 clouddeploy-resources 的 Pub/Sub 消息示例:

{
  "ackId":   "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQBQgUBXx9cEFMdVhddmhRDRlyfWByY11AAgVMVnldURsHaE5tdR_Wg6LHS0NVaF4TBgpGVX5fXx0IYVtedi_m7r_2wPXOXkAvOYXL6Mtpe735h9xvZiM9XxJLLD5-IzRFQV5AEkwoAURJUytDCypYEU4EISE-MD5FUw",
  "message": {
    "attributes": {
      "Action": "Create",
      "Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest",
      "ResourceType": "DeliveryPipeline",
      "Location": "us-central1",
      "DeliveryPipelineId": "etest",
      "ProjectNumber": "120123456789",

    },
    "messageId": "2407836004659723",
    "publishTime": "2021-05-17T21:24:48.204Z"
  }
}

渲染开始

以下是发布到 clouddeploy-operations 以通知版本已渲染的 Pub/Sub 消息示例:

{
  "ackId": "U0RQBhYsXUZIUTcZCGhRDk9eIz81IChFFwYIFAV8fXBBTHVeXHRoUQ0Zcn1gcmNfR1MLFlN5WFEaB2hObXUfioKix0tDVWheEwYKRVZ3W1kdBGFVXH0v_qD5rMP1zl5AKDnZyujLaXudkqxfZiM9XxJLLD5-PTNFQV5AEkw2BkRJUytDCypYEU4EISE-MD5F",
  "message": {
    "attributes": {
      "Action": "Start",
      "Resource": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2",
      "ResourceType": "Release"
      "Location": "us-central1",
      "DeliveryPipelineId": "etest",
      "ProjectNumber": "120123456789",
      "ReleaseId": "f2",
    },
    "messageId": "2407805942699908",
    "publishTime": "2021-05-17T21:28:04.201Z"
  }
}

需要获得批准

以下是发布到 clouddeploy-approvals 以通知发布需要批准的 Pub/Sub 消息示例:

{
   "ackId": "RVNEUAYWLF1GSFE3GQhoUQ5PXiM_NSAoRRILUxNRXHQBWhBpWF8aB1ENGXJ8ZnxtCRBVU0FWf1VbEQ16bVxti6C2rERfQXduWhQJBkBXd11aHQhoXF9dotnkpeTv2kFwYSuN8_7mSH_Mo6AYZiA9XBJLLD5-IzZFQV5AEkwoA0RJUytDCypYEU4EISE-MD4",
   "message": {
     "attributes": {
       "Action": "Required",
       "Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123"
       "ReleaseId": "f2",
       "RolloutId": "rollout-123",
       "TargetId": "prod",
       "Location": "us-central1",
       "ProjectNumber": "120123456789",
     },
     "messageId": "2407845492165003",
     "publishTime": "2021-05-17T21:31:25.143Z"
   }
 }

提前发布

以下是一个将 Pub/Sub 消息发布到 clouddeploy-advances,用于通知发布已从一个阶段推进 继续:

{
  "ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUSAwVPAihdeTFXKkFZdWhRDRlyfWB9bV4UUFZMV38OURoHaE5tdR_z4ILjS0NVbVkQBApEUHldXhkEa1RcfC-a0fmv1OzMV0AvOaCoyO9pe77r3NluZiM9XhJLLD5-Jz1FQV5AEkwsCERJUytDCypYEU4EISE-MD5FUw",
  "message": {
    "attributes": {
      "Action": "Advanced",
      "Location": "us-central1",
      "PhaseId": "stable",
      "ProjectNumber": "120123456789",
      "ReleaseId": "rollout-123",
      "Rollout": "projects/120123456789/locations/us-central1/deliveryPipelines/etest/releases/f2/rollouts/rollout-123",
      "RolloutId": "rollout-123",
      "TargetId": "prod"
    },
    "messageId": "7335813725293809",
    "publishTime": "2023-04-03T15:16:30.425Z"
  }
}

在此消息中,PhaseId 标识发布完成的阶段 。

后续步骤