回滚机制
介绍
发布目前支持两种方式 常规发布 和 自定义发布,这里来分别讲解下这两种发布方式的回滚机制。
常规发布
常规发布由发布配置中的 版本数量 来决定是否可以回滚,超过保留上限的版本将无法执行回滚操作。回滚将经历以下几个步骤:
- 在发布申请中点击
回滚按钮,弹出的窗口中选择要回滚到的历史版本(可选范围与发布配置中的版本数量相关)以及目标主机,Spug会创建一个带有回滚字样标题的新发布申请。 - 找到第一步所创建的发布申请,如果开启了审核则需要先通过审核,否则可直接点击发布按钮。
- 执行回滚发布,回滚发布将跳过检出前后动作,直接执行发布前和发布后任务并使用目标主机上存储的历史版本发布。
如果你想控制回滚时行为执行不同的操作,可以在 应用发布前执行 和 应用发布后执行 中使用内置的全局变量 SPUG_DEPLOY_TYPE,通过判断其值来做不同的操作。
自定义发布
因为自定义发布更加的灵活自由,Spug 也无法对回滚进行任何限制或干涉,完全依靠用户来控制。回滚将经历以下几个步骤:
- 与常规发布相同,在发布申请中点击
回滚按钮并选择版本,Spug会基于所选版本创建一个带有回滚字样标题的新发布申请。 - 找到第一步所创建的发布申请,如果开启了审核则需要先通过审核,否则可直接点击发布按钮。
- 执行回滚发布,默认行为与发布一致,会根据定义的顺序完整执行所有动作,
SPUG_RELEASE等变量取自被回滚到的那次申请。
如果你想控制回滚时行为执行不同的操作,在自定义的动作中使用内置的全局变量 SPUG_DEPLOY_TYPE,通过判断其值来做不同的操作。
控制行为
内置的全局变量 SPUG_DEPLOY_TYPE 可用于区分回滚和正常发布,1 为正常发布,2 为回滚发布,3 为 Webhook 触发的自动发布。用户可通过判断其值来实现不同情况下的不同操作,例如:
if [ "$SPUG_DEPLOY_TYPE" = "1" ]; then
echo "执行正常发布的操作,巴啦啦..."
elif [ "$SPUG_DEPLOY_TYPE" = "2" ]; then
echo "这里只有回滚时才会执行"
fi