【问题标题】:DevOps won't cancel release with pending pre-deployment approvalDevOps 不会在等待部署前批准的情况下取消发布
【发布时间】:2020-03-27 18:49:39
【问题描述】:

我已经建立了一个部署到 QA 和 PROD 环境的管道,并在进入 PROD 之前获得了部署前的批准。我尝试设置管道,以便如果在批准发生之前发送另一个版本,它将取消先前的版本并等待批准。我在第一步/阶段使用了部署队列设置中的“部署最新并取消其他”选项。但是,这似乎没有任何效果。

起初我以为这只是因为等待批准。但我做了一些额外的测试,发现即使发布正在运行并且没有等待批准,它也不会被取消。我怀疑这是因为它旨在仅取消 queued 版本而不是正在进行的版本。但如果是这样,是否有可能取消正在进行的发布,如果有新的发布呢?

仅供参考,我已经检查了 this answer,但正如我所提到的,它不会取消正在进行的版本(尽管出于某种原因,它似乎在该 OP 的确切用例中有效)。

最终,如果在完成之前创建了新版本,我只想替换待处理的版本。请让我知道是否有办法做到这一点?

编辑:只是为了澄清接受的答案,有两个问题。在我的第一次运行中,我没有在每个阶段都检查Deploy latest and cancel the others因此特定阶段没有取消。然后在选中此选项后,它不起作用,因为我没有让管道运行到同一阶段,而是我在看到旧版本没有立即取消后取消了新版本.我的印象是发布会立即取消,但直到新发布进入同一阶段,等待批准的旧阶段才会被取消。一旦我让管道通过,待批准阶段就会按预期取消。真的,该选项似乎与 stage 相关联,而不是与整个 release 相关联。只是想为答案提供一些额外的上下文。

【问题讨论】:

    标签: azure-devops


    【解决方案1】:

    我怀疑这是因为它旨在仅取消排队发布而不是正在进行的发布。

    是的,您的嫌疑人是正确的。它只能取消排队的发布,但不能取消正在进行的发布。

    此外,这个选项目前对我来说仍然可以正常工作。不知道如何在您这边配置此选项。对我来说,我将Maximum number of parallel deployments 设置为1,同时选择了Deploy latest and cancel the others 选项。

    然后你会看到取消的版本显示这样的消息:


    最终,如果有更新的版本,我只想替换待处理的版本 发布是在完成之前创建的。

    如果待定版本是指待批准的版本,您仍然可以使用Deploy latest and cancel the others 选项来实现这一点。

    但如果它代表正在进行中的,恐怕现在不支持。你可以从产品实际使用的角度来思考这个设计。例如,当前正在部署其他版本,而新版本已准备好部署。如果我们突然中断正在进行的部署过程,我认为这对产品稳定性不利,这就是为什么我们只能取消排队的发布,而不是正在部署的发布。

    【讨论】:

    • 为了澄清您的评论,如果发布正在等待批准开始,这将起作用,但如果发布正在进行并且批准处于中间步骤之一,它不会?
    • @billoverton,我可以想象一下这个场景,因为有两个发布阶段,第一阶段正在进行中,第二阶段正在等待批准?
    • 没有第一个会成功,然后第二个将等待部署前的批准。在这种情况下,Deploy latest and cancel the others 不会取消待定批准。但是,我确实相信,一旦我选择了我的批准,剩下的阶段就会被取消。但我也希望它取消待批。
    • @billoverton,您是否也为第二阶段配置了Deploy latest and cancel the others?此选项仅适用于一个特定阶段,您需要为要取消的每个阶段配置此选项。
    • @billoverton,您阐明的场景也适用于 Deploy latest and cancel the others 选项。
    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    相关资源
    最近更新 更多