Azure DevOps 发布跳过任务

Azure DevOps Releases skip tasks

我目前正在为我的公司在 Azure DevOps 2020(本地)中实施 CI/CD 管道。有一个要求我似乎无法方便地解决:根据发布管道中的用户输入跳过某些任务。

我想要的: 用户手动创建新的 release 并决定是否应执行任务组。

代理任务:

 1. Powershell
 2. Task Group (conditional)
 3. Task Group
 4. Powershell

我试过的:

非常感谢任何帮助!

取决于通往 运行 的管道的标准。一个建议是两条流水线调用同一个模板。并且每个管道可能有一个嵌入其中的 true/false 作为参数传递给模板。

模板中将定义所有任务;然而,有条件的将有这样的条件:

 condition: and(succeeded(), eq('${{ parameters.runExtraStep}}', true)) 

此条件将在任务级别设置。

可以在相应的管道中定义任何特定的触发器。

这是关于 Azure YAML Templates 的文档,可帮助您入门。

遗憾的是,无法为任务组添加自定义条件,但此功能在路线图上。查看以下用户声音,您可以投票:

https://developercommunity.visualstudio.com/idea/365689/task-group-custom-conditions-at-group-and-task-lev.html

解决方法是您可以克隆发布定义(右键单击发布定义> 克隆),然后删除一些任务或任务组并保存,之后您可以根据详细场景创建具有相应发布定义的发布.

最后我决定坚持发布并将我的任务分成 3 个代理工作。作业 1 带有第一个 powershell,作业 2 带有条件任务组,仅当变量为真时才执行,作业 3 带有剩余任务。

正如 and 所述,我可以使用 yaml 管道为条件实现可选择的运行时参数。不幸的是,其中一个任务组需要来自 yaml 管道的特定工件。大多数时候它是“最新的”,这可以通过下载工件任务轻松实现,但有时会选择以前的工件。我发现没有一种简单的方法可以像在默认情况下有一个包含工件列表的下拉列表那样方便的方式实现这一点。

如果找到 this blog post 任何对如何在 yaml 管道中处理不同构建工件感兴趣的人。

谢谢你帮我!