实现部署自动化

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

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

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

详细了解如何设置用于定义这些自动化操作运作方式的规则。

可自动执行的操作

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

  • 自动提升版本级别

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

  • 按计划提升版本

    您可以配置 Cloud Deploy,以便根据 Cron 时间表提升发布版本。

  • 提前发布

    您可以配置 Cloud Deploy,以便在成功将版本发布到上一个目标后,将发布从一个阶段推进到下一个阶段。只有使用Canary 部署策略的目标才能使用阶段推进功能。

  • 修复发布

    您可以将 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 是交付流水线的子资源,其中包含以下信息:

    • 指向要使用自动化功能的目标或目标的指针
    • 用于管理自动化操作的操作和方式的规则

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

    当您针对包含自动化配置 (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. 在自动化操作实例化时,系统仍会生成平台日志,即使自动化操作处于暂停状态也是如此。您可以使用此方法测试和调试自动化操作,而不会影响交付流水线。

后续步骤