Azure devops Azure DevOps变量的条件初始化不起作用

Azure devops Azure DevOps变量的条件初始化不起作用,azure-devops,yaml,Azure Devops,Yaml,我是Yaml和AzureDevOps的新手,我正在尝试根据条件初始化变量 variables: - name: DisplayName ${{ if eq('$(env)', 'wh') }}: value: 'DisplayNAME-WH' ${{ if eq('$(env)', 'lw') }}: value: 'DisplayNAME-LW' 其中我的'env'是通过Azure DevOps中的UI传递的变量 问题我得到的是“DisplayName”仍然为空(未初

我是Yaml和AzureDevOps的新手,我正在尝试根据条件初始化变量

variables:
- name: DisplayName
  ${{ if eq('$(env)', 'wh') }}:
    value: 'DisplayNAME-WH'
  ${{ if eq('$(env)', 'lw') }}:
    value: 'DisplayNAME-LW'
其中我的'env'是通过Azure DevOps中的UI传递的变量

问题我得到的是“DisplayName”仍然为空(未初始化)

你能帮我吗

谢谢

Azure DevOps变量的条件初始化不起作用

根据报告:

在管道中,模板表达式变量(
${{variables.var}}
) 在运行时开始之前,在编译时处理。宏语法 变量(
$(var)
)在运行时任务运行前得到处理

因此,我们不能在
${{if eq('$(env)'wh')}
中使用
$(env)
。这是因为
${{if eq('$(env)'wh')}}
的语法是在$(env)语法之前解析的

为了解决这个问题,我们可以将变量定义为:

测试结果:

parameters:
- name: 'env'
  default: 'wh'
  type: string
  values:
    - wh
    - lw

variables:
  ${{ if eq(parameters.env, 'wh') }}: 
    DisplayName: 'DisplayNAME-WH'
  ${{ if eq(parameters.env, 'lw') }}: 
    DisplayName: 'DisplayNAME-LW'

steps:
- script: 
   echo $(DisplayName)