Azure管道:条件运行任务组

3
在Azure管道中,我可以有条件地运行特定的任务/作业。然而,如果我有一个任务组,我没有看到任何选项来指定其执行条件。
唯一可行的方法是创建一个新的作业,运行任务组并在作业中指定条件表达式。
这种方法有一个缺点-作业在不同的代理上运行。在这种情况下,只有在满足条件时才会创建一个新代理来运行该任务组。这会减慢部署速度。
因此,问题是如何有条件地执行任务组?
谢谢。

1
你只能在TG内的任务中放置条件,然后发送变量到TG以确定是否运行任务。 - Shayki Abramczyk
@ShaykiAbramczyk - 我考虑过这个问题,但是如果任务组有大量的任务,那么我就必须在每个任务中检查那个变量/条件。这似乎不是一种非常优雅的做法。 - sppc42
你是对的,但我认为没有其他解决方案 :( - Shayki Abramczyk
1个回答

2
根据文档,任务条件(例如PowerShell脚本任务的“仅在前一个任务失败时运行此任务”)可以在任务组中配置,这些设置将与任务组一起保存。
如果您想定制任务组级别的条件,目前Azure DevOps不支持。
我在我们的UserVoice网站上找到了反馈,这是我们产品建议的主要论坛。您可以投票并添加您的评论以获取反馈。如果产品团队查看它,他们会提供更新。 更新1 作为解决方法,我们可以在YAML模板中定义这些任务,然后我们可以根据条件从管道YAML调用不同的模板。
示例代码:
parameters:
- name: experimentalTemplate
  displayName: 'Use experimental build process?'
  type: boolean
  default: false

steps:
  - ${{ if eq(parameters.experimentalTemplate, true) }}:
    - template: experimental.yml
  - ${{ if not(eq(parameters.experimentalTemplate, true)) }}:
    - template: stable.yml

很遗憾这样一个基础性的东西却缺失了。我有一些在不同的流程和场景中使用的大任务组。能够控制它们的执行是最基本的要求,希望很快就会提供。 - sppc42
嗨@sppc42,建议的工单状态为On Roadmap,看起来Azure DevOps产品团队已经检查了这个功能,你可以关注该工单以获取最新消息。谢谢。 - Vito Liu
嗨@sppc42,我已经更新了答案,请查看。我们不能在任务组级别使用条件,但是我们可以通过条件调用不同的模板,在yaml模板文件中定义这些任务。 - Vito Liu
这正是我最终做的,而且它起作用了。 - sppc42

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接