如果管道执行失败,则可以使用回滚将环境恢复到先前稳定的状态。要使用回滚,请计划回滚流并了解如何实施。

回滚流规定了回滚失败部署所需的步骤。该流采用回滚管道的形式,该管道包括一个或多个连续任务,这些任务因执行和失败的部署类型而异。例如,传统应用程序的部署和回滚不同于 容器应用程序的部署和回滚。

要恢复到正常的部署状态,回滚管道通常包括以下任务:
  • 清理状态或环境。
  • 运行用户指定的脚本以恢复更改。
  • 部署以前的部署修订版。

要将回滚添加到现有部署管道,请在运行部署管道之前,将回滚管道连接到部署管道中要回滚的任务或阶段。

如何配置回滚

要在部署中配置回滚,您需要:

  • 创建部署管道。
  • 确定部署管道中将触发回滚的潜在故障点,以便可以连接回滚管道。例如,可以将回滚管道连接到部署管道中的条件或轮询任务类型,以检查上一任务是否成功完成。有关条件任务的信息,请参见如何在条件任务中使用变量绑定来运行或停止 Code Stream 中的管道
  • 确定将触发回滚管道的故障范围,例如任务或阶段失败。也可以将回滚连接到阶段。
  • 确定出现故障时要执行的回滚任务。将创建包含这些任务的回滚管道。

可以手动创建回滚管道,也可以使用 Code Stream 创建。

  • 使用空白画布,可以手动创建一个遵循与现有部署管道并行流的回滚管道。然后,将回滚管道连接到部署管道中 出现故障时触发回滚的一个或多个任务。
  • 通过智能管道模板,您可以使用回滚操作配置部署管道。然后, Code Stream 会自动创建一个或多个具有预定义任务(用于在失败时回滚部署)的默认回滚管道。

有关如何使用智能管道模板为 CD 管道配置回滚的详细示例,请参见如何在 Code Stream 中回滚部署

如果我的部署管道有多个任务或阶段具有回滚,会怎样

如果有多个任务和阶段添加了回滚,请注意回滚顺序会有所不同。
表 1. 确定回滚顺序
如果将回滚添加到... 回滚执行时间...
并行任务 如果其中一个并行任务失败,则所有并行任务完成或失败后回滚该任务。该任务失败后,不立即执行回滚。
阶段中的任务和阶段 如果任务失败,则运行任务回滚。如果任务属于一组并行任务,则所有并行任务完成或失败后回滚该任务。任务回滚完成或无法完成后,将运行阶段回滚。

考虑具有以下阶段或任务的管道:

  • 具有回滚的生产阶段。
  • 一组并行任务,且每个任务具有自己的回滚。

名为 UPD Deploy US 的任务具有回滚管道 RB_Deploy_US。如果 UPD Deploy US 失败,则回滚将遵循 RB_Deploy_US 管道中定义的流。

在具有并行任务的管道阶段中,回滚选项卡显示在任务失败时使用的回滚管道。

如果 UPD Deploy US 失败,则 RB_Deploy_US 管道在 UPD Deploy UKUPD Deploy AU 都完成或失败后运行。UPD Deploy US 失败后,不立即执行回滚。而且,由于生产阶段也具有回滚,因此在 RB_Deploy_US 管道运行后,将运行阶段回滚管道。