Azure Release Pipelines - 是否可以在另一个阶段完成之前阻止手动触发阶段

Azure Release Pipelines - Is it possible to prevent a manual trigger stage until another stage is complete

Octopus Deploy 中有生命周期的概念。它们看起来像下面这样 -

它可以让你说 "Environments from Dev must be completed before deploying to Staging"。

在 Azure Devops 中,如果使用 "After Stage" 触发器,则可以实现此目的。然而,这使得部署到下一阶段是自动的。您可以设置 post-1st stage 或 pre-2nd stage approvals 来停止这种情况,但如果这些是 "rejected" 那么它看起来像失败,但实际上不一定如此 - 通常我们只是不这样做不想部署到这些环境。

另一种解决方法是在手动触发阶段的门中使用 REST API,如 所示,但这感觉不对 - 它会抛出 "deployment graph"这可能看起来微不足道,但它不允许从外面进来的人看到到底发生了什么。此外,它不会阻止任何人随时尝试手动触发它。

有办法实现吗?

恐怕暂时没有更好的办法。即使你在 gate 中使用 rest api 的变通方法,如果你没有通过 gate,最终的阶段状态与 "rejected" 相同。

我面临着完全相同的问题,到目前为止我发现的唯一方法是将人工制品过滤器添加到您要手动部署的阶段,该过滤器排除使用 * 的所有分支。

在下面的示例中,将从 masterdevlop 分支构建自动创建一个版本,并将自动部署到 BVT - UKS.

两个 UAT - UKX 区域现在可以在方便的时候手动部署。

遗憾的是,Azure DevOps 不会阻止您在部署到两个 UAT - 之前手动部署到 PRD - UKX 阶段中的一个或两个 - UKX 个阶段。但是,在我的情况下,我需要以任何方式对这些阶段进行预部署批准,因此如果有人确实试图跳过 UAT - UKX 阶段,批准者可以简单地拒绝部署。