此查询与Azure DevOps YAML管道有关。是否可以在“步骤”中定义的任何模板上放置执行条件?
For ex:
1.基于任何管道变量值(动态,在管道运行期间传递),决定是否执行“Task-1.yml”
1.根据shell脚本中定义的任何变量值(使用##vso[task.setvariable variable=name]$value),决定是否执行'Task-3.yml'
下面是Azure devops yaml管道结构:
stages:
- stage: Stage-A
jobs:
- job: Job-A
steps:
- template : Task-1.yml
- template : Task-2.yml
- template : Task-3.yml
字符串
我能够在作业级别执行此操作,但是我不能将管道结构更改为具有1个以上的作业,因为我需要所有任务都在管道运行时分配的同一构建代理上执行。
我做了很多的打击和审判,以实现这一点,但不知何故,这是不为我工作。
救命啊!
2条答案
按热度按时间bt1cpqcv1#
不能为管道应用运行时条件。唯一的方法是使用模板表达式
${{ }}
,但这是在编译时计算的。你可以在这里找到这些细节
在模板表达式中,您可以访问包含传入参数值的parameters上下文。此外,您还可以访问变量上下文,其中包含YAML文件中指定的所有变量以及许多预定义变量(在该文章中的每个变量上都有说明)。重要的是,它没有运行时变量,比如那些存储在管道中的变量,或者在开始运行时给出的变量。模板扩展发生在运行的早期,因此这些变量不可用。
gj3fmq9x2#
我这样做的方式是将条件传递给模板,如下所示:
字符串
然后在模板中使用它,如下所示:
型