将 Cloud Deploy 与其他系统集成

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

  • 测试工具
  • 工作流管理

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

准备工作

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

  • 您已启用适用的 API

  • 您至少已在 Cloud Deploy 中定义注册一条交付流水线。

  • 您定义了至少一个目标,并且交付流水线引用了该目标。

  • 您已设置 Pub/Sub 通知,以接收来自以下主题的通知:

    • clouddeploy-operations
    • clouddeploy-approvals

与自动化测试集成

您可以将 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