Azure Pipelines多仓库检出报错不存在或无权限问题求助
解决方案
1. 修正YAML配置错误
你当前的配置存在两个核心拼写问题:
resources.repositories下定义的name字段和你实际要拉取的仓库名不匹配,你要拉的是configs-templates-deployment,不是配置里写的configs-templates-azurepipelinescheckout步骤没有使用你在resources里定义的仓库别名external-configs,而是直接写了git路径
修正后的配置如下:
trigger: - master - main - dev - stagging resources: repositories: - repository: external-configs # 自定义的仓库别名,后续checkout直接用这个名称 name: infra/configs-templates-deployment # 格式为<目标仓库所在项目名>/<目标仓库名>,替换为实际要拉的仓库 type: git ref: main stages: - stage: Prepare displayName: Prepare jobs: - job: Prepare displayName: Prepare steps: - script: echo ">>>> $(Build.Repository.Name) - $(Build.SourceBranchName) - $(EXTERNAL-VARIABLE)" - checkout: external-configs # 直接使用resources里定义的别名即可 clean: true
2. 配置流水线服务账号权限
本地可以克隆仓库不代表流水线的服务账号有权限,需要手动配置权限:
- 打开目标仓库
configs-templates-deployment的设置页面 - 左侧菜单选择
Repositories > 仓库,选中目标仓库 - 切换到「安全」标签,找到
Project Collection Build Service (你的组织名称)账号,授予「读取」权限 - 如果当前流水线和目标仓库不在同一个项目,还要额外添加
[流水线所在项目名] Build Service (你的组织名称)账号,授予同样的读取权限
3. 关闭跨项目访问限制
如果开启了项目级的授权限制,也会导致拉取失败:
- 打开流水线所在项目的设置页面
- 左侧菜单选择
Pipelines > 设置 - 关闭两个开关:
- 禁用对同一组织中其他项目的访问权限
- 限制作业授权范围为当前项目的非发布管道
配置修改完成后提交YAML重新运行流水线即可,注意仓库名、项目名的拼写要完全匹配,Azure DevOps的资源路径是大小写敏感的。
内容的提问来源于stack exchange,提问作者Ricardo Jl Rufino
相关产品推荐
相关产品推荐

