我正在尝试从azure devops中的另一个项目中检出子模块。
steps:
- checkout: self
submodules: true
persistCredentials: true
clean: true
在同一项目中签出另一个存储库是可行的。
目标
在存储库B中添加作为子模块存储库A。
但是我得到了错误:
Cloning into 'E:/build/Agent5/_work/16/s/.azuredevops'...
fatal: could not read Username for 'https://dev.azure.com': terminal prompts disabled
fatal: clone of 'https://dev.azure.com/ORGANIZATION/PROJECTA/_git/REPOSITORYA' into submodule path 'E:/build/Agent5/_work/16/s/.azuredevops' failed
如何在Azure DevOps存储库中使用YAML实现此目标?
答案 0 :(得分:2)
在项目设置(左侧菜单的底部)中,默认情况下选中了“限制作业授权”选项。
将其关闭 解决了该问题。
仅供参考,我刚刚将其添加到steps:
下的yaml中:
- checkout: self
submodules: true
答案 1 :(得分:1)
我认为这意味着管道无法访问项目B中的回购B。但是我不认为文档说跨项目是可能的(尽管我确实注意到它在几个地方都说同一个Azure Devops Organization,而不是同一个Project) ,但也许可以,您可以点击以下链接:
如果无法正常工作,则需要使用脚本方法获取PAT令牌并将其用于结帐:
答案 2 :(得分:1)
我已关闭组织级别的“限制作业授权范围”设置,但仍被阻止。事实证明,您还需要为每个单独的项目关闭它们。它不会被继承。
答案 3 :(得分:0)
添加子模块时,我发现.gitmodules中的网址不正确。
path = .azuredevops
url = https://dev.azure.com/ORGANIZATION/PROJECTA/_git/REPOSITORYA
应该是:
path = .azuredevops
url = https://ORGANIZATION@dev.azure.com/ORGANIZATION/PROJECTA/_git/REPOSITORYA