将 Cloud Deploy 与其他系统集成

您可以将 Cloud Deploy 与用于软件交付的一些其他系统集成。本页介绍了如何将 Cloud Deploy 与以下各项集成:

  • 测试工具
  • 工作流管理

请参阅与 CI 系统集成,了解如何从 CI 流水线调用 Cloud Deploy。

准备工作

本页面中的说明假定您已满足以下条件:

与自动化测试集成

您可以将 Cloud Deploy 与 Pub/Sub 搭配使用,将测试与交付流水线相集成,以便自动提升版本以实现持续交付。

您还可以在发布中使用注释来提供测试结果的链接。如需了解详情,请参阅将标签和注释与 Cloud Deploy 搭配使用

使用 Pub/Sub 自动执行提升

  1. 侦听来自 clouddeploy-operations 主题的 Pub/Sub 消息

    该消息包含以下特性:

    • Action: SUCCEED
    • ResourceType: Rollout
    • Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...
  2. 当您收到部署成功的通知时,请在已部署的应用上运行测试。

  3. 测试成功后,调用 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

如需设置外部批准工作流,请执行以下操作:

  1. 需要批准目标

    在该目标的定义中,添加 requireApproval: true

  2. 如需使用这些消息,请订阅 clouddeploy-approvals Pub/Sub 主题并设置工作流管理系统。

  3. 当您的工作流管理系统收到来自 clouddeploy-approvals 主题且包含 "Action": "Required" 的消息时,它会启动一个批准工作流,该工作流根据贵组织的要求进行配置。

    该消息还包含对要批准的发布的引用,格式如下:

    Resource: projects/.../locations/.../deliveryPipelines/.../releases/.../rollouts/...

    批准工作流的输出是批准或拒绝发布。

  4. 工作流管理系统通过以下命令的形式向 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