我试图使用azure devops在拉取请求管道中动态设置组。 Yaml文件如下所示:
variables:
- ${{ if eq(variables['System.PullRequest.TargetBranch'], 'refs/heads/dev') }}:
- group: dev-var-group
这不起作用,条件评估为“假”。只是为了确认这一点,我扭转了如下情况
variables:
- ${{ if ne(variables['System.PullRequest.TargetBranch'], 'refs/heads/dev') }}:
- group: dev-var-group
正确设置了哪个组之后,将读取所有必需的变量并进行管道工作。
任何人都可以在这里帮助您在正确的条件下工作吗?
答案 0 :(得分:1)
恐怕这是不可能的。如果您在Template expression syntax
处查看here:
您可以使用模板表达式语法来扩展模板参数和变量($ {{variables.var}}。模板变量在编译时进行处理,并在运行时开始之前被替换。模板表达式旨在将YAML的一部分作为模板重用。
当找不到替换值时,模板变量将默默地合并为空字符串。与宏和运行时表达式不同,模板表达式可以显示为键(左侧)或值(右侧)。以下是有效的:$ {{variables.key}}:$ {{variables.value}}。
要使此功能正常运行,您需要一个模板变量,而System.PullRequest.TargetBranch
是运行时变量,因此将其替换为空字符串。如果您检查预定义变量here,则会注意到最后一列Available in templates?
其中no
代表System.PullRequest.TargetBranch
答案 1 :(得分:0)
也许足以评估 Build.Reason 是否在模板中可用?
您也可以在运行时检查拉取请求源分支并基于此分配变量。即:
Write-Host “##vso[task.setvariable variable=testvar;]testvalue”).