我已经建立了一个部署到QA和PROD环境的管道,并在部署PROD之前获得了部署前的批准。我试图设置管道,以便如果在批准发生之前发送了另一个发行版,它将通过挂起的批准取消先前的发行版。第一步/阶段,我在“部署队列设置”中使用了“部署最新的并取消其他部署” 选项。但是,这似乎没有任何作用。
起初,我认为这仅仅是因为正在等待批准。但是我进行了一些其他测试,发现即使该版本正在运行且未正在等待批准,它也不会被取消。我怀疑这是因为它旨在仅取消排队版本而不是正在进行的版本。但是,如果是这样,是否有可能在新发行的发行之后取消正在进行的发行?
仅供参考,我已经检查过this answer,但是正如我所提到的,它并没有取消正在发布的版本(尽管出于某种原因,它似乎可以在该OP的确切用例中使用)。
最终,如果在更新完成之前创建了较新的版本,我只想替换该版本。请让我知道是否有办法吗?
编辑:只是为了澄清已接受的答案,有两个问题。在我的第一次跑步中,我没有在每个阶段都检查Deploy latest and cancel the others
,因此特定阶段并没有取消。然后检查此选项后,由于我没有让管道运行到同一阶段而无法使用,而是在看到旧版本没有立即取消后我取消了新版本。我的印象是该版本将立即被取消,但是直到新版本进入同一阶段之前,等待批准的旧阶段才会被取消。一旦让管道通过,待批准阶段将按预期取消。因此,实际上,该选项似乎与阶段有关,而不与整个 release 有关。只是想提供答案的其他背景。
答案 0 :(得分:1)
我怀疑这是因为它被设计为仅取消排队的发布而不是正在进行的发布。
是的,您的嫌疑犯是正确的。它只能取消排队的发布,而不能取消进行中的发布。
此外,此选项目前仍对我有效。不确定如何在您的侧面配置此选项。对我来说,我在选择选项Maximum number of parallel deployments
时将1
设置为Deploy latest and cancel the others
。
然后,您将看到已取消的发行显示以下消息:
最终,我只想替换一个待发布的版本 发布会在完成之前创建。
如果即将发布的版本表示正在等待批准的版本,您仍然可以使用Deploy latest and cancel the others
选项来实现。
但是,如果它代表进行中的代码,恐怕现在不支持它。您可以从产品实际使用的角度考虑这种设计。例如,当前有其他版本正在部署,而新版本已准备好部署。如果我们突然中断正在进行的部署过程,那么我认为这对产品稳定性是不利的,这就是为什么我们只能取消排队的发布,而不能取消正在部署的发布的原因。