实现部署自动化

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

您可以配置 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 中的目标。

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

    • 指向自动化操作所用目标或目标的指针
    • 用于控制自动化操作执行的操作及其执行方式的规则

    Automation 操作资源的配置在文档 自动化操作资源简介中进行了说明。

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

  • Automation 操作运行

    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. 平台日志即使 自动化操作已暂停,在实例化时仍会生成。您可以使用此功能来测试和调试自动化操作,而不会影响交付流水线。

后续步骤