Azure Pipeline跨仓库模板调用Bash@3的filePath路径找不到脚本问题
问题根因
Azure DevOps 流水线默认仅拉取触发本次运行的主仓库代码,你在resources中定义的模板仓库仅用于解析YAML模板文件,不会自动拉取到运行代理的本地目录,因此你搜索不到脚本文件,触发路径不存在报错。
可行解决方案
你需要在模板的任务前显式检出模板仓库,再对应调整脚本路径即可,修改后的do_peach.yaml示例如下:
stages: - stage: some_cool_template jobs: - job: launch_template_rwanda steps: # 如果你不需要使用主仓库的代码,可以删除下面这行 - checkout: self # 显式检出模板仓库,使用父流水线resources中定义的仓库别名 cool_templates - checkout: cool_templates - task: Bash@3 displayName: 'now lets do some calc' inputs: targetType: filePath # 默认检出后模板仓库会存放在$(Build.SourcesDirectory)/cool_templates目录下 filePath: $(Build.SourcesDirectory)/cool_templates/do_peach.sh
调试建议
如果调整后仍然提示路径错误,可以在Bash任务前新增临时调试步骤,确认脚本的实际存放路径:
- task: Bash@3 displayName: 查看目录结构 inputs: targetType: inline script: ls -R $(Build.SourcesDirectory)
该方案对GitHub、Azure Repos两种仓库类型均适用。
内容的提问来源于stack exchange,提问作者John Scott Stensland
相关产品推荐
相关产品推荐

