本页介绍了如何使用 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 部署到目标(
Start
、Succeed
、Failure
、Terminated
[作业运行]、Cancelled
[发布])时。
clouddeploy-approvals
- Cloud Deploy 需要批准(或拒绝)发布时。
- 发布被批准或拒绝时。
clouddeploy-advances
- Cloud Deploy 发布从一个阶段推进到下一个阶段时。
- 当某个发布版本准备好推广时。
您可以将推送或拉取模型用于 Pub/Sub 订阅。
接收 Cloud Deploy 服务通知
如需接收 Cloud Deploy 服务通知,请执行以下操作:
启用 Cloud Deploy API:
当您首次调用 Cloud Deploy API 时,Cloud Deploy Service Agent 服务账号会自动添加到您的项目中。借助此服务账号,您可以使用 Pub/Sub 接收 Cloud Deploy 服务通知。
服务账号名称采用以下格式,其中 project-number 是您的项目编号:
service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
如果您仍未在 IAM 页面上看到 Cloud Deploy Service Agent 服务账号,或者无法接收 Pub/Sub 通知,请将此服务账号添加到您的项目:
在 Google Cloud 控制台中打开 IAM 页面:
点击添加。
添加以下主账号,其中 project-number 是您的项目编号:
service-project-number@gcp-sa-clouddeploy.iam.gserviceaccount.com
选择服务管理 > Cloud Build Service Agent 作为您的角色。
点击保存。
启用 Pub/Sub API:
根据要接收的通知类型创建 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
示例消息
以下示例展示了来自 Cloud Deploy 主题的多种 Pub/Sub 消息类型。
创建交付流水线
以下是作为创建新 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"
}
}
提前发布
以下是发布到 clouddeploy-advances
以通知发布已从一个阶段推进到下一个阶段的 Pub/Sub 消息示例:
{
"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
用于标识已推进到哪个发布阶段。