Azure发布管道-是否可以防止手动触发阶段,直到另一个阶段完成

时间:2019-07-01 09:36:25

标签: azure-devops azure-pipelines azure-pipelines-release-pipeline

在Octopus Deploy中,存在生命周期的概念。它们看起来类似于以下内容-

  • 开发
    • DevEnv1
    • DevEnv2
  • 分期
    • StagingEnv
  • 产品
    • ProdEnv

它使您可以说“在部署到暂存之前必须完成来自Dev的环境”之类的事情。

在Azure Devops中,如果使用“ After Stage”触发器,则可以实现此目的。但是,这将自动进行下一阶段的部署。您可以设置第一阶段后或第二阶段前的批准来停止此批准,但是如果这些批准被“拒绝”,那么当它不一定如此时,它看起来像是一次失败-很多时候我们只是不想部署到这些环境。

另一种解决方法是,如this question所示,在手动触发的阶段在门上使用REST API,但这并不对劲-它抛出了“部署图”,这看似微不足道,但却没有不允许有人从外面进来看看实际情况。同样,它也不会阻止任何人随时尝试手动触发此操作。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

恐怕目前没有更好的方法。即使您在闸门中使用rest api来解决,即使不通过闸门,所得到的阶段状态也将与“已拒绝”相同。 enter image description here enter image description here

答案 1 :(得分:0)

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

Artefact Filter

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

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

遗憾的是,Azure DevOps不会阻止您在部署到两个 UAT-UKX 阶段之前,手动部署到这两个 PRD-UKX 阶段。但是,就我而言,无论如何我都需要对这些阶段进行部署前的批准,因此,如果有人确实跳过了 UAT-UKX 阶段,则批准者可以拒绝部署。

Release Pipeline