如何停用/跳过发布管道中的阶段(非 YAML)但它的传递(下一阶段继续)

时间:2021-01-06 18:37:26

标签: azure azure-devops azure-pipelines devops

据我所知,在 YAML 管道中,您可以选择“要运行的阶段”,因此基本上允许出于任何原因完全跳过阶段。但是,我在 GUI 发布管道中没有看到相同的功能。我只看到选项 'Manual Only' - 在我有 dev > Test > Prod 并且我想跳过测试但保持发布管道结构完整的情况下,“仅手动”是否可用?这方面的最佳做法是什么?到目前为止,我只能看到在 YAML 中同时构建和发布的选项。

谢谢。

2 个答案:

答案 0 :(得分:2)

确实有很多方法可以解决这个问题,但我要指出的主要方法是:

#1 具有多个阶段/触发器的单一发布管道

您认为手动部署可以在这里使用各个阶段和分支工作是正确的。 (见下面的截图链接)

Release Pipeline with manual deployment paths

在这种情况下,只要有新版本就部署 DEV,然后您可以手动指定您希望其余部署的路径(直接到 Prod,或测试到 Prod)。

#2 预先批准的发布管道

这可能比手动部署更简洁一些,并且具有能够指定特定用户或组的优点。 (链接到下面的屏幕截图)

Release Pipeline with Pre-Approval condition

#3 基于构建标签执行的单独发布管道

经过测试后,我确认您能够根据构建管道中指定的标记触发不同的版本。我相信你可以对拉取请求做同样的事情

基于此标记,它可以通过持续部署过滤器流程确定要运行哪个发布管道。

下面的屏幕截图和步骤是完成这项工作所需的步骤:

  1. 创建包含成功构建所需的任何内容的构建管道,以及用于指定构建标记名称的管道变量(我的是 ProdOnly_TestThenProd),以及用于在上设置构建标记的 Az Powershell 任务执行期间的构建。这是内联脚本的代码:Write-Host "##vso[build.addbuildtag]$env:ProdOnly_TestThenProd" 请参阅此 gif 以供参考:Build Pipeline
  2. 创建两个发布管道,一个用于 DEV>PROD,另一个用于 DEV>TEST>PROD。创建后,根据您的构建管道分支/标签集,在构建和添加分支/标签过滤器上启用持续部署。请参阅此屏幕截图:Release Pipelines
  3. 手动运行构建管道,这将允许您在运行时设置管道变量的值,这允许您指定要在一次性情况下运行的发布管道,否则,构建管道可以运行无论当前的变量值在持续集成过程中是什么。请参阅此 gif 以进行说明:Build Pipeline execution and Continuous Deployment

我喜欢这个 #3 选项,因为它允许您拥有 CI/CD 周期,而且如果您需要运行一次性管道,可能直接发布到 Prod 或其他某个阶段,那么它为您提供了这样做的灵活性没有大量的手工工作。希望这能回答您的问题。

答案 1 :(得分:2)

如果您使用具有多阶段的 yaml 管道,“要运行的阶段”功能允许您跳过管道中的几个阶段,如下所述:Skipping stages in a YAML pipeline

如果您想在经典发布管道中实现此功能,请按照以下步骤操作。

  1. 我的发布管道有 3 个阶段:Dev->Test->Prod,如下所示。

enter image description here

  1. Variables 部分下为 Test 范围设置“RunTest”变量,并启用“发布时可设置 >”选项,这样我们就可以在运行新版本时更改其值。

enter image description here

  1. 然后在测试阶段为代理工作设置自定义条件:eq(variables['RunTest'], 'true'),如下。

enter image description here

  1. 因此,如果我们想在新版本中跳过 Test 阶段,只需将其值更改为 false,如下所示。

enter image description here