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

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

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

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

如何配置回滚

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

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

可以手动创建回滚管道,也可以使用 Code Stream 创建。另外,还可以选择共享管道进行回滚。

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

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

  • 通过使用共享管道进行回滚,无需创建多个执行相同功能的回滚管道。可以选择使用共享管道回滚不同项目上管道的任务。

    要了解如何为管道任务配置使用共享管道进行回滚,请参见在 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 管道运行后,将运行阶段回滚管道。