实现部署自动化

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

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

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

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

您可以自动执行的操作

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

  • 自动提升版本

    您可以配置 Cloud Deploy,以便在成功向目标发布后自动提升版本。例如,如果您有三个目标:dev、staging 和 prod,您可以配置自动化操作,以便在成功部署到 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 交付流水线以及执行要自动化的任务(例如推进 发布)所需的权限之外,还需要一些权限才能对 Automation 和 AutomationRun 资源执行 某些操作:

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

后续步骤