【问题标题】:Set variable group dynamically using System.PullRequest.TargetBranch使用 System.PullRequest.TargetBranch 动态设置变量组
【发布时间】:2021-01-04 13:01:07
【问题描述】:

我正在尝试使用 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

在正确设置了哪个组并且读取了所有必需的变量并且管道工作之后。

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

【问题讨论】:

    标签: azure azure-devops yaml azure-yaml-pipelines


    【解决方案1】:

    恐怕这是不可能的。如果你看hereTemplate expression syntax

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

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

    要让它工作,你需要一个模板变量,System.PullRequest.TargetBranch 是相当运行时变量,因此它被替换为空字符串。如果您检查预定义变量here,您会注意到最后一列Available in templates?

    上面写着no 代表System.PullRequest.TargetBranch

    【讨论】:

      【解决方案2】:

      也许将 Build.Reason 评估为在模板中可用就足够了?

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

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

      【讨论】:

        猜你喜欢
        • 2019-01-29
        • 1970-01-01
        • 2019-05-08
        • 2019-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多