Azure 使用System.PullRequest.TargetBranch动态设置变量组

Azure 使用System.PullRequest.TargetBranch动态设置变量组,azure,azure-devops,yaml,azure-yaml-pipelines,Azure,Azure Devops,Yaml,Azure Yaml Pipelines,我正在尝试使用azure devops在请求管道中动态设置组。Yaml文件如下所示: variables: - ${{ if eq(variables['System.PullRequest.TargetBranch'], 'refs/heads/dev') }}: - group: dev-var-group 这不起作用,条件被评估为“false”。为了证实这一点,我将条件颠倒如下 variables: - ${{ if ne(variables['System.PullReque

我正在尝试使用azure devops在请求管道中动态设置组。Yaml文件如下所示:

variables:
 - ${{ if eq(variables['System.PullRequest.TargetBranch'], 'refs/heads/dev') }}:
   - group: dev-var-group
这不起作用,条件被评估为“false”。为了证实这一点,我将条件颠倒如下

variables:
 - ${{ if ne(variables['System.PullRequest.TargetBranch'], 'refs/heads/dev') }}:
   - group: dev-var-group
在正确设置该组之后,读取所有必需的变量并执行管道工作


请任何人在这里协助使其在正确的条件下工作好吗?

恐怕这是不可能的。如果查看
模板表达式语法

您可以使用模板表达式语法来展开模板参数和变量(${{variables.var})。模板变量在编译时处理,并在运行时开始前替换。模板表达式设计用于将YAML的部分作为模板重用

当找不到替换值时,模板变量会自动合并为空字符串。与宏和运行时表达式不同,模板表达式可以显示为键(左侧)或值(右侧)。以下内容有效:${{variables.key}}:${{{variables.value}

要使其正常工作,您需要一个模板变量,
System.PullRequest.TargetBranch
是一个运行时变量,因此它被替换为空字符串。如果检查预定义变量,您将注意到模板中最后一列可用的


对于
System.PullRequest.TargetBranch

来说,
no
可能足以评估Build.Reason,因为它在模板中可用

您还可以在运行时检查拉请求源分支,并基于此分配变量。即:

Write-Host “##vso[task.setvariable variable=testvar;]testvalue”).