我目前正在为Azure DevOps 2020(内部)中的公司实施CI / CD管道。我似乎无法方便地解决一个需求:根据发布管道中的用户输入跳过某些任务。
我想要的东西: 用户手动创建新的版本并确定是否应执行任务组。
代理任务:
1. Powershell
2. Task Group (conditional)
3. Task Group
4. Powershell
我尝试过的事情:
任何帮助将不胜感激!
答案 0 :(得分:1)
取决于运行管道的标准。一个建议是两条调用同一模板的管线。并且每个管道中都可以嵌入一个true / false,以作为参数传递给模板。
模板中将定义所有任务;但是,有条件的人将具有以下条件:
condition: and(succeeded(), eq('${{ parameters.runExtraStep}}', true))
此条件将在任务级别设置。
可以在相应的管道中定义任何特定的触发器。
这是Azure YAML Templates上的文档,可以帮助您入门。
答案 1 :(得分:1)
不幸的是,不可能为任务组添加自定义条件,但是此功能已列入路线图。检查以下用户语音,即可对其进行投票:
解决方法是,您可以克隆发行定义(右键单击发行定义>克隆),然后删除一些任务或任务组并保存,然后您可以针对具体情况创建具有相应发行定义的发行。 / p>
答案 2 :(得分:0)
最后,我决定坚持使用Releases并将我的任务分成3个代理工作。具有第一个Powershell的作业1,具有条件任务组的作业2,只有在变量为true时才执行,而具有其余任务的作业3。
正如cece-dong和dreadedfrost所述,对于yaml管道,我可以为条件实现可选的运行时参数。不幸的是,其中一个任务组需要Yaml管道中的特定工件。在大多数情况下,它是“最新的”,可以通过下载工件任务轻松实现,但有时会选择先前的工件。我发现没有一种简单的方法可以像在默认情况下具有包含工件列表的下拉列表那样便捷的方式中实现此目标。
如果找到this blog post,以供对如何处理yaml管道中的不同构建工件感兴趣的任何人。
感谢您的帮助!