实现部署自动化

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

您可以将 Cloud Deploy 配置为自动执行与版本相关的 与发布相关的任务。这些任务包括 发行促销活动阶段推进

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

详细了解如何设置规则 明确了这些自动化操作的运作方式。

您可以自动执行的操作

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

请参阅自动规则,详细了解 以及如何配置这些操作

自动化是如何运作的?

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

以下是配置和执行 自动化:

  1. 配置自动化操作

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

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

    这会创建 自动化资源

  3. 您可以通过以下方式调用与此自动化操作关联的交付流水线:

  4. 至少有一个目标设备成功完成发布,或者发布失败。

    如果发布成功,并且自动化操作为 promoteReleaseRule

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

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

    3. 该版本会自动提升到流水线进度中的下一个目标,或者提升到指定的目标

    如果发布成功,自动化为 advanceRolloutRule,且 使用 Canary 部署策略:

    1. 执行会等待被标识的 源代码阶段 如果有的话

      sourcePhase 属性是可选属性,如果未指定任何来源阶段,则发布中的每个阶段都会自动推进。通过 当源阶段 IN_PROGRESS,适用 wait 次优惠。

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

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

    3. 发布会自动从该源代码阶段推进到下一阶段 部署阶段

    4. 如果有额外的来源阶段,系统会对其进行相同的处理,包括等待时间(如果适用)。

    如果发布失败,并且存在使用 repairRollout 规则的自动化操作:

    1. 系统会在配置的 wait 时间(如果有)过后重试发布。

      如果在此 repairRollout 规则中配置了特定阶段或作业,则系统只会重试这些阶段或作业。如果未指定任何作业或阶段,默认行为是重试发布中的所有阶段和作业。

      由于重试是可选的,因此如果您的自动化操作未配置为 则此步骤不会执行。

    2. 如果第一次重试失败,执行将等待配置的 wait 时间, 然后重试。

    3. 系统会重复重试,直到 Cloud Deploy 耗尽重试次数 attempts

      如果每次尝试都失败,并且 attempts 已用尽,则发布 失败。

      在重试期间 IN_PROGRESS,直到发布成功或失败(根据 最后一次重试。在重试期间,相应阶段状态为 IN_PROGRESS;但在每次发布失败后,相应阶段状态为 FAILED

    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

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

请参阅 IAM 角色和权限 更多信息,包括 角色具备这些权限

创建自动化操作

您可以通过以下方式创建自动化操作(包括使用任何可用的自动化规则):配置自动化操作,然后使用 gcloud deploy apply 创建自动化操作资源

请参阅下一部分(配置自动化),并 配置自动化规则

配置自动化

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

自动化规则配置

除了这项自动化配置外,您还可以指定 自动化规则。每个可用规则的配置都不同。

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

暂停自动化操作

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

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

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

  3. 平台日志 自动化操作也会实例化,即使其已暂停。您可以使用此方法测试和调试自动化操作,而不会影响交付流水线。

后续步骤