本文档简要介绍了部署自动化。
您可以配置 Cloud Deploy,以便为给定的交付流水线自动执行与版本和发布相关的任务。这些任务包括 版本提升 和阶段推进。
详细了解 Cloud Deploy 中用于版本自动化的资源。
详细了解如何设置用于 定义这些自动化操作的工作方式的规则。
您可以自动执行的操作
在 Cloud Deploy 中,您可以自动执行以下版本和发布活动:
-
您可以配置 Cloud Deploy,以便在成功向目标发布后自动提升版本。例如,如果您有三个目标:
dev、staging和prod,您可以配置自动化操作,以便在成功部署到staging后,无需进一步的人工交互,即可将版本提升到prod。您还可以指定延迟时间。 -
您可以配置 Cloud Deploy,以便根据 Cron 计划提升版本。
-
您可以配置 Cloud Deploy,以便在成功向上一个目标发布后,将发布从一个 阶段推进到下一个阶段, 阶段推进仅 适用于使用 Canary 部署策略的目标。
-
您可以配置 Cloud Deploy,以便自动重试失败的发布。这包括重试发布指定的次数,并在重试次数失败后自动回滚。
如需详细了解这些操作以及如何配置这些操作,请参阅自动化规则。
自动化操作的工作原理
每个自动化操作都与所使用的交付流水线相关联。您无法在多个交付流水线之间共享自动化操作。
以下是配置和执行自动化操作的一般流程:
您 配置自动化操作
此自动化操作与一个交付流水线相关联。
您使用
gcloud deploy apply注册该自动化操作。这将创建 自动化操作资源。
您可以通过 创建版本来调用与此自动化操作关联的交付流水线。
发布至少在一个目标上成功,或者失败。
如果发布成功,并且自动化操作是
promoteReleaseRule:执行操作会等待发布成功进入源目标。 源目标是为自动化操作配置的
selector.targets,而不是AutomationRule中的目标。如果配置了
wait时间,执行操作也会等待该时间。版本会自动提升到流水线 过程中的下一个目标,或者提升到特定目标, 如果已指明。
如果发布成功,并且自动化操作是
advanceRolloutRule,并且目标使用 Canary 部署策略:执行操作会等待已标识的 源阶段( 如果有)。
sourcePhase属性是可选的,如果未指定任何源阶段,则发布中的每个阶段都会自动推进。当源阶段为IN_PROGRESS时,系统会自动推进阶段,但会受到wait时间的限制。如果配置了
wait时间,执行操作也会等待该时间。在自动执行 Canary 部署时,您可以使用此等待时间来指定每个 Canary 阶段的持续时间。
发布会自动从该源阶段推进到发布中的下一个阶段。
如果有其他源阶段,则会以相同的方式处理,包括相同的等待时间(如果适用)。
如果发布失败,并且存在具有
repairRollout规则的自动化操作:发布会在配置的
wait时间(如果有)过后重试。如果在此
repairRollout规则中配置了特定阶段或作业,则仅重试这些阶段或作业。如果未指定任何作业或阶段,则默认重试发布中的所有阶段和作业。由于重试是可选的,因此如果您的自动化操作未配置为重试,则不会执行此步骤。
如果第一次重试失败,执行操作会等待配置的
wait时间,然后再次尝试。系统会重复重试,直到 Cloud Deploy 用尽 重试
attempts。如果每次尝试都失败,并且
attempts已用尽,则发布失败。在重试期间,发布 状态 为
IN_PROGRESS,直到发布成功或在 最后一次重试尝试后失败。在重试期间,阶段状态为IN_PROGRESS,但在每次发布失败后为FAILED。如果所有重试都失败(或未配置任何重试),系统会创建一个新发布,以回滚到目标上最近一次成功的版本。
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.createclouddeploy.automations.deleteclouddeploy.automations.getclouddeploy.automations.listclouddeploy.automations.updateclouddeploy.automationRuns.cancelclouddeploy.automationRuns.getclouddeploy.automationRuns.list
除了这些权限之外,每个自动化规则可能还需要其他权限才能执行自动化操作。如需了解每个自动化规则所需的具体权限,请参阅 配置自动化规则 。
如需了解详情(包括哪些 Cloud Deploy 角色包含这些权限),请参阅 IAM 角色和权限 。
创建自动化操作
您可以创建自动化操作,包括使用任何
可用的自动化规则,
方法是配置自动化操作,然后使用
gcloud deploy apply创建自动化操作资源
请参阅以下部分(配置自动化操作)和 配置自动化规则。
配置自动化操作
如需详细了解如何配置
Automation 资源,请参阅
配置文件架构
。
Automation 规则配置
除了此自动化操作配置之外,您还可以指定 自动化规则。每个可用规则的配置都不同。
如需了解每个可用规则的说明,请参阅 使用自动化规则。
暂停自动化操作
您可以暂停现有资源,而无需将其删除。这对于测试自动化操作而不影响交付流水线非常有用。暂停自动化操作后,系统不会运行自动化操作,但仍会生成 平台日志。
在
Automation配置中, 将suspended属性更新为true。针对该配置文件运行
gcloud deploy apply。平台日志即使 自动化操作已暂停,在实例化时仍会生成。您可以使用此功能来测试和调试自动化操作,而不会影响交付流水线。