您可以将 Cloud Deploy 与用于软件交付的一些其他系统集成。本页介绍了如何将 Cloud Deploy 与以下各项集成:
- 测试工具
- 工作流管理
请参阅与 CI 系统集成,了解如何从 CI 流水线调用 Cloud Deploy。
准备工作
本页面中的说明假定您已满足以下条件:
您定义了至少一个目标,并且交付流水线引用了该目标。
您已设置 Pub/Sub 通知,以接收以下主题的通知:
clouddeploy-operations
clouddeploy-approvals
与自动化测试集成
您可以将 Cloud Deploy 与 Pub/Sub 搭配使用,将测试与交付流水线相集成,以便自动提升版本以实现持续交付。
您还可以在发布中使用注释来提供测试结果的链接。如需了解详情,请参阅将标签和注释与 Cloud Deploy 搭配使用。
使用 Pub/Sub 自动执行提升
侦听来自
clouddeploy-operations
主题的 Pub/Sub 消息。该消息包含以下特性:
Action: SUCCEED
ResourceType: Rollout
Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...
当您收到部署成功的通知时,请在已部署的应用上运行测试。
测试成功后,调用 Cloud Deploy 以自动提升到下一阶段:
gcloud deploy releases promote RELEASE_NAME \ --delivery-pipeline=PIPELINE_NAME \ --region=REGION \ --annotations=KEY=VALUE,...
其中:
RELEASE_NAME
是版本的名称。必须提供此值。
PIPELINE_NAME
是管理此版本的交付流水线的名称。此值为必填项。
REGION
是流水线在其中运行的区域。如果您设置了属性
deploy/region
,则可以省略此标志。KEY=VALUE,...
是一个或多个键值对的列表,以英文逗号分隔,可包含测试结果的相关信息和其他测试信息。示例如下:
gcloud deploy releases promote --annotations="from_target=test,status=stable"
发布的注释是不可变的,因此,如果您添加状态注释,则无法在同一次发布中更新该状态。
使用注释提供对测试结果的访问权限
如果您的网址指向可访问测试结果的位置,则可以使用 --annotations
标志以发布的注释形式提供该网址。示例如下:
gcloud deploy releases promote --delivery-pipeline=my-demo-app-1 --region=us-central1 --project=my-demo-app-1-project --release=test-release-001 --annotations="test_results_url=https://example.com/results/my-demo-app-test-results-dev"
如需了解详情,请参阅将标签和注释与 Cloud Deploy 搭配使用。
集成第三方工作流管理
Cloud Deploy 将操作消息发布到 Pub/Sub。您的工作流管理工具可以订阅这些 Pub/Sub 主题,并使用它们来触发特定工作流。
对于批准
clouddeploy-approvals
主题会在发布需要批准时通知您系统。然后,您的外部工作流系统可以发挥它的能力来获取批准,然后调用 gcloud deploy rollouts approve
。
发出 rollouts approve
命令的账号必须具有预定义的 IAM 角色 roles/clouddeploy.approver
。
如需设置外部批准工作流,请执行以下操作:
-
在该目标的定义中,添加
requireApproval: true
。 如需使用这些消息,请订阅
clouddeploy-approvals
Pub/Sub 主题并设置工作流管理系统。当您的工作流管理系统收到来自
clouddeploy-approvals
主题且包含"Action": "Required"
的消息时,它会启动一个批准工作流,该工作流根据贵组织的要求进行配置。该消息还包含对要批准的发布的引用,格式如下:
Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...
批准工作流的输出是批准或拒绝发布。
工作流管理系统通过以下命令的形式向 Cloud Deploy 返回批准或拒绝:
用于批准发布的命令如下所示:
gcloud deploy rollouts approve ROLLOUT \ --delivery-pipeline=PIPELINE_NAME \ --region=REGION \ --release=RELEASE_NAME
用于拒绝发布的命令如下所示:
gcloud deploy rollouts reject ROLLOUT \ --delivery-pipeline=PIPELINE_NAME \ --region=REGION \ --release=RELEASE_NAME
其中:
ROLLOUT
是为其请求批准的发布的名称。
PIPELINE_NAME
是管理应用部署的交付流水线。
RELEASE_NAME
是与此发布关联的版本的名称。
REGION
是在其中运行交付流水线的区域。
以下是一个示例:
gcloud deploy rollouts approve test-rollout --delivery-pipeline=web-app --release=test-release --region=us-central1