如何使用Yaml模板运行管道,该模板引用Azure DevOps在另一个存储库中的变量文件?

时间:2020-02-23 21:34:43

标签: azure-devops

我有一个包含管道模板的仓库A。存储库A具有以下azure-template.yml:

# Repo A / azure-template.yml

stages:
- stage: ${{ variables.stageName }} 
  jobs:
    - job:
      steps:
        - task:

回购A中有模板的很多代码都引用以下格式的变量: $ {{variables.variableName}}。变量文件位于存储库A中的其他文件夹中(例如,variables / variables.yaml)

现在让我们转到存储库B。存储库B有我的azure-pipeline.yml,需要从存储库A构建:

# Repo B / azure-pipeline.yml

resources:
  repositories:
    - repository: templates
      type: git
      name: repoA
      ref:  refs/heads/develop

variables:
- template: variables/variables.yml@templates

stages:
- template: azure-template.yml@templates  # Template reference

当我运行azure-pipeline.yml时,出现以下错误:

加载YAML构建管道时发生错误。该字符串必须至少包含一个字符。参数名称:environmentName

该参数不是我的参数之一。我没有在任何地方声明或设置它。这告诉我它是特定于Azure的,但我不知道它在哪里/为什么在哪里或什至在哪里设置。

1 个答案:

答案 0 :(得分:0)

如何使用引用了 使用Azure DevOps将文件存储在另一个存储库中?

您的方向正确,至少是工作方向。支持像上面所做的那样进行操作。关于您收到的错误,我认为您的yaml语法可能有问题。您可以尝试按照以下步骤查找问题:

  1. azure-template.ymlvariables.yaml的内容直接复制到azure-pipeline.yml文件中,然后再次运行管道以检查问题是否仍然存在。

  2. 在您的Azure-pipeline.yml中,指定triggerpool

  3. azure-template.yml中,尝试用硬编码值替换${{ variables.stageName }}

这是我第一次看到此错误消息,但根据Parameter name: environmentName。您还可以检查Release.EnvironmentName在一个PS任务中是否具有有效值。希望能有所帮助:)