pie*_*cia 3 azure-pipelines azure-pipelines-yaml
我想包含一个取决于变量 Agent.OS 的模板:
...
steps:
- ${{ if eq(variables['Agent.OS'], 'Linux') }}:
- template: /templates/prepare-tool.yaml
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。我在步骤列表中没有看到此步骤。我也尝试过:
- ${{ if eq(variables.AGENT_OS, 'Linux') }}:
Run Code Online (Sandbox Code Playgroud)
结果一样。
也许我错了,但是:
运行时和编译时表达式语法之间的区别主要在于可用的上下文。在编译时表达式 (${{ }}) 中,您可以访问参数和静态定义的变量。在运行时表达式 ($[ ]) 中,您可以访问更多变量,但不能访问参数。
所以,我必须使用- $[ if eq(...这个变量,它不是静态的,但它也不起作用:
意外值 '$[ if eq(variables.
我不知道如何使用这种变量。
模板条件,使用 Agent.OS | AGENT_操作系统
是的你是对的。没有现成的方法可以做到这一点。
由于该变量的值Agent.OS是运行时变量,因此在运行作业之前我们无法使用它。
并且该变量${{ if eq(variables['Agent.OS'], 'Linux') }}是编译时变量。所以, 因此,条件的判断结果始终是失败。
要解决此问题,您可以将条件添加到每个步骤的模板中,例如:
steps:
- script: echo Sometimes this happens!
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |