Azure DevOps Pipeline无法找到已检出的跨仓库模板文件问题咨询
问题成因
- Azure DevOps Pipeline的模板解析发生在运行前的预处理编译阶段,早于代理机执行代码检出(checkout)步骤。你在代理机上看到检出后的文件是运行阶段的结果,对模板解析阶段没有影响。
- 当你使用
template: xxx@仓库别名的格式时,系统会直接到对应远程仓库的根目录下查找xxx路径的文件,你当前写的路径是.\TemplateRepository\build.yml@Tuto-Ressources,等于让系统去TemplateRepository仓库里找TemplateRepository/build.yml这个文件,但你的build.yml实际存放在TemplateRepository仓库的根目录,路径匹配不上自然报错。 - 额外的小问题:你当前模板只定义了
name一个参数,但主配置里传递了pool、sign、buildSteps三个未声明的参数,路径问题解决后也会触发参数不匹配的报错。
解决方法
- 修正模板引用路径,直接使用对应仓库的相对根路径,同时统一使用正斜杠作为路径分隔符:
把原来的
- template: .\TemplateRepository\build.yml@Tuto-Ressources
修改为
- template: /build.yml@Tuto-Ressources
- 补全模板的参数定义,匹配主配置传递的参数,或者删掉主配置里多余的参数传递,示例补全后的模板参数如下:
parameters: - name: 'name' default: 'name' type: 'string' - name: 'pool' type: 'string' - name: 'sign' type: 'boolean' - name: 'buildSteps' type: 'stepList'
- 如果你的模板确实存放在TemplateRepository仓库的子目录下,只需要调整路径为对应相对根目录的路径即可,不需要加仓库名作为前缀。
内容的提问来源于stack exchange,提问作者Frédéric De Lène Mirouze
相关产品推荐
相关产品推荐

