【问题标题】:Yaml If blocks causes missing mappingYaml If 块导致缺少映射
【发布时间】:2020-05-31 12:02:09
【问题描述】:

当构建运行不在主分支上时,我正在尝试添加一组可选参数。这个想法是 azure-pipelines-template-variables-private.yml 仅覆盖组中包含的一些参数。

这是我的模板文件:

stages:
  - stage: "Tests"
    variables:
      - group: MyLibrary
    ${{ if ne(variables['Build.SourceBranchName'], 'master') }}:
      - template: azure-pipelines-template-variables-private.yml

这会返回错误“预期映射”

如果没有 if 块,则行为如预期 - 参数将被覆盖。我正在努力理解 if 块是如何工作的。文档展示了如何将变量与 Group 一起使用,并将变量与模板一起使用——但不能同时使用两者。虽然它似乎可以一起工作,但我希望 if 语句可以工作。

编辑:有关信息,我将包含变量模板内容:

variables:
  - name: MyVar1
    value: 'TEST-$(Build.BuildId)'
  - name: MyVar2
    value: '/Builds/$(BUILD.BUILDID)'

【问题讨论】:

    标签: azure-devops azure-devops-yaml


    【解决方案1】:

    我测试了下面的脚本,它运行良好。希望这对您有所帮助:

    - stage: build
      jobs:
      - job: run_build
            
        pool:
          vmImage: 'Ubuntu 16.04' 
        variables:
        - group: xxx
        - ${{ if ne(variables['Build.SourceBranchName'], 'refs/heads/master') }}:
          - template: var.yml
        steps:      
          - script: echo ${{ variables.test }}
    

    【讨论】:

    • 非常感谢这完美的作品。我发现文档令人困惑。 docs.microsoft.com/en-us/azure/devops/pipelines/process/… 此处的所有 if 块示例都没有说明何时以连字符开头,何时不以连字符开头。或者缩进应该是什么。我确定这是我不知道的一些 YAML 标准 - 但文档可能会更清晰。
    • 我指的是这个document :)
    猜你喜欢
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多