模板条件,使用 Agent.OS | AGENT_OS
Condition for template, using Agent.OS | AGENT_OS
我想根据变量包含一个模板 Agent.OS:
...
steps:
- ${{ if eq(variables['Agent.OS'], 'Linux') }}:
- template: /templates/prepare-tool.yaml
但这不起作用。我没有在步骤列表中看到此步骤。
我也试过了:
- ${{ if eq(variables.AGENT_OS, 'Linux') }}:
同样的结果。
也许我错了,但是:
The difference between runtime and compile time expression syntaxes is primarily what context is available. In a compile-time expression (${{ }}), you have access to parameters and statically defined variables. In a runtime expression ($[ ]), you have access to more variables but no parameters.
所以,我必须为这个变量使用 - $[ if eq(...
,它不是静态的,但它也不起作用:
Unexpected value '$[ if eq(variables.
我不知道如何使用这种变量。
根据我在 Whosebug 上的发现(例如 , 2),这是不可能的。
Condition for template, using Agent.OS | AGENT_OS
是的,你是对的。没有现成的方法可以做到这一点。
由于变量 Agent.OS
的值是一个 运行 时间变量,我们无法在 运行 作业之前使用它。
而变量${{ if eq(variables['Agent.OS'], 'Linux') }}
是一个compile-time变量。所以, 所以,条件的判断结果总是失败。
要解决此问题,您可以将条件添加到每个步骤的模板中,例如:
steps:
- script: echo Sometimes this happens!
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))
我想根据变量包含一个模板 Agent.OS:
...
steps:
- ${{ if eq(variables['Agent.OS'], 'Linux') }}:
- template: /templates/prepare-tool.yaml
但这不起作用。我没有在步骤列表中看到此步骤。 我也试过了:
- ${{ if eq(variables.AGENT_OS, 'Linux') }}:
同样的结果。
也许我错了,但是:
The difference between runtime and compile time expression syntaxes is primarily what context is available. In a compile-time expression (${{ }}), you have access to parameters and statically defined variables. In a runtime expression ($[ ]), you have access to more variables but no parameters.
所以,我必须为这个变量使用 - $[ if eq(...
,它不是静态的,但它也不起作用:
Unexpected value '$[ if eq(variables.
我不知道如何使用这种变量。
根据我在 Whosebug 上的发现(例如
Condition for template, using Agent.OS | AGENT_OS
是的,你是对的。没有现成的方法可以做到这一点。
由于变量 Agent.OS
的值是一个 运行 时间变量,我们无法在 运行 作业之前使用它。
而变量${{ if eq(variables['Agent.OS'], 'Linux') }}
是一个compile-time变量。所以, 所以,条件的判断结果总是失败。
要解决此问题,您可以将条件添加到每个步骤的模板中,例如:
steps:
- script: echo Sometimes this happens!
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))