实现部署自动化

本文档简要介绍了部署自动化。

您可以将 Cloud Deploy 配置为自动为给定交付流水线执行与版本相关的任务和发布相关的任务。这些任务包括版本推广阶段推进

详细了解 Cloud Deploy 中用于发布自动化的资源。

详细了解如何设置规则以定义这些自动化操作的工作原理。

您可以自动执行的操作

在 Cloud Deploy 中,您可以自动执行以下发布和发布活动:

  • 推广版本

    您可以将 Cloud Deploy 配置为在成功发布到目标后自动提升您的版本。例如,如果您有三个目标(devstagingprod),则可以配置自动化操作,以便在成功部署到 staging 后,将版本提升到 prod,无需进一步的人工交互。

  • 推进发布

    您可以将 Cloud Deploy 配置为在成功发布到上一个目标后,将发布从一个阶段推进到下一个阶段。阶段推进仅适用于使用 Canary 部署策略的目标。

自动化是如何运作的?

每项自动化操作都与其所使用的交付流水线相关联。您无法在多个交付流水线之间共享自动化操作。

以下是配置和执行自动化的一般过程:

  1. 您可以配置自动化操作

    此自动化操作与一个交付流水线相关联。

  2. 您可以使用 gcloud deploy apply 注册该自动化操作。

    这将创建 Automation 资源

  3. 您可以通过创建版本来调用与此自动化操作关联的交付流水线。

  4. 已成功发布到至少一个目标。

  5. 在配置了这项自动化操作的目标中...

    如果自动化操作为 promoteReleaseRule

    1. 执行会等待发布成功进入源目标。来源目标是为自动化操作配置的 selector.targets,而不是在 AutomationRule 中。

    2. 如果已配置 wait 时间,执行也会等待该时间。

    3. 该版本会自动提升到流水线进度中的下一个目标,或特定目标(如有指示)。

    如果自动化操作为 advanceRolloutRule 并且目标使用 Canary 部署策略:

    1. 执行将等待已确定的源阶段(如果有)。

      sourcePhase 属性是可选的,如果未指定源代码阶段,则发布中的每个阶段都会自动推进。当源阶段为 IN_PROGRESS 时,自动阶段推进会发生,具体取决于 wait 时间。

    2. 如果已配置 wait 时间,执行也会等待该时间。

      在自动执行 Canary 部署时,您可以使用此等待时间来指定每个 Canary 阶段的时长。

    3. 发布会自动从该源代码阶段推进到发布中的下一阶段。

    4. 如果存在其他来源阶段,则等同于采用相同的方式,包括相同的等待时间(如适用)。

Automation 资源

有两个专用于自动化的 Cloud Deploy 资源:

  • 自动化

    Automation 是交付流水线的子资源,它包含以下信息:

    • 指向使用自动化技术的一个或多个目标的指针
    • 用于控制自动化操作及其执行方式的规则

    自动化资源简介一文介绍了 Automation 资源的配置。

    当您对包含自动化配置 (kind: Automation) 的文件运行 gcloud deploy apply 时,Cloud Deploy 会创建一个自动化资源,该资源会将交付流水线和一个或多个目标与一个或多个自动化规则相关联。

  • 自动化运行

    AutomationRun 是自动化操作的一个实例。它是指向其相应 Automation 资源的指针,以及生成该资源的发布的相关信息和其他元数据。

    自动化操作会在自动化操作被触发时创建。

详细了解自动化操作资源

Automation 规则

自动规则定义了可在交付流水线上自动执行的操作,以及有关如何执行自动化操作的详细信息。

详细了解自动化规则

所需的 Identity and Access Management 角色和权限

除了运行任何 Cloud Deploy 交付流水线和执行自动化任务(例如推进发布)所需的权限之外,您还需要具备一些权限才能对 AutomationAutomationRun 资源执行某些操作:

  • clouddeploy.automations.create
  • clouddeploy.automations.delete
  • clouddeploy.automations.get
  • clouddeploy.automations.list
  • clouddeploy.automations.update
  • clouddeploy.automationRuns.cancel
  • clouddeploy.automationRuns.get
  • clouddeploy.automationRuns.list

除了这些权限之外,每条自动化规则可能还需要更多权限才能执行自动操作。如需了解每个自动化规则所需的具体权限,请参阅配置自动化规则

如需了解详情,包括哪些 Cloud Deploy 角色包含这些权限,请参阅 IAM 角色和权限

创建自动化操作

您可以创建自动化操作(包括使用任何可用的自动化操作规则),方法是先配置自动化操作,然后使用 gcloud deploy apply 创建自动化操作资源。

请参阅以下部分(配置自动化)和配置自动化规则

配置自动化

请参阅配置文件架构,详细了解如何配置 Automation 资源

Automation 规则配置

除了此自动化配置之外,您还可以指定自动化规则。每个可用规则的配置各不相同。

如需了解每个可用规则的说明,请参阅使用自动规则

暂停自动化操作

您可以暂停现有资源,而不将其删除。这对于测试自动化操作非常有用,而不会影响交付流水线。暂停自动化操作时,自动化操作不会运行,但仍会生成平台日志

  1. Automation 配置中,将 suspended 属性设置为 true

  2. 针对该配置文件运行 gcloud deploy apply

  3. 当自动化操作被实例化时,即使已暂停操作,仍会生成平台日志。您可以使用此参数来测试和调试自动化操作,而不会影响交付流水线。

后续步骤