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
- 管道引擎将知道从引用的存储库中获取模板文件。
我的问题
我有一个 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
- 管道引擎将知道从引用的存储库中获取模板文件。