Azure Devops 管道找不到签出的模板

Azure Devops pipeline can't find a checkouted template

我的问题

我有一个 Azure devops 项目,它的模板位于另一个存储库而不是主存储库中。 我尝试加载模板,但我得到了这个:

/azure-pipelines.yml: File /TemplateRepository/build.yml not found in repository https://dev.azure.com/XXXXX/TestAzureDevops/_git/TemplateRepository branch refs/heads/main

我做了什么

build.yml 是我的存储库模板:TemplateRepository.

azure-pipelines.yml是我的主文件。

这是我的模板:

parameters:
- name: 'name'
  default: 'name'
  type: 'string'


steps:
  - script: echo ${{parameters.name}}

这是我的主要内容:

pool:
  vmimage: 'windows-latest'

parameters:
  - name: contexts
    type: object
    default: [{
     name: macOS,
     pool: 'macOS-latest',
     sign: false
  },
  {
    name: Windows,
     pool: 'windows-latest',
     sign: true
  }]

resources:
  repositories:
    - repository: Tuto-Ressources
      ref: main
      type: git
      name: TemplateRepository

stages:
  - stage: BUILD
    jobs:
      - job: test
        steps:
          - checkout: self
          - checkout: Tuto-Ressources
          - script: dir 
            displayName: Dir

          - ${{ each context in parameters.contexts }}:
              - template: .\TemplateRepository\build.yml@Tuto-Ressources
                parameters:
                  name: ${{context.name}}
                  pool: ${{context.pool}}
                  sign: ${{context.sign}} 
                  buildSteps:
                    - checkout: self
                    - checkout: Tuto-Ressources
                    - bash: echo "Test module"

我测试了什么

如果我从主脚本中删除模板行,那么我只有 script: dir 我可以在 VM 上看到我的签出,并且 build.yml 进入 \TemplateRepository 目录。

所以它没有理由找不到我的模板。

我查了一下分支名称,是主分支,没有其他分支。我可以从 Devops 门户中看到该文件

我需要的

我想了解发生了什么以及我能做什么。 我知道有神器,但在这种情况下我不明白为什么它不能像这样工作,因为我在两个阶段都没有换工作。

template 行应通过相对于 TemplateRepository 的路径引用模板文件。如果您的构建模板位于 TemplateRepository 中的 \build.yml,那么您应该这样做:

- template: build.yml@Tuto-Ressources

此外,您不需要执行 - checkout: Tuto-Ressources - 管道引擎将知道从引用的存储库中获取模板文件。