如何解决如何启用Azure管道使用Git签出子模块?
在我们的Git项目中,我们在.gitmodules中定义了以下内容
[submodule "DBPkg"]
path = DBPkg
url = https://MainCo@dev.azure.com/MainCo/OurProject/_git/DBPkg
在构建Azure管道时,在“获取源”管道步骤(我正在使用“ Azure Repos Git”)中,启用了签出子模块
在我们的项目设置中,我还进行了以下配置...
但是,在构建项目时,它会在尝试通过以下方式检出子模块时死掉...
2020-10-16T20:29:44.9912145Z HEAD is now at e06abce Modified docker file to remove unnecessary container name.
2020-10-16T20:29:44.9913415Z ##[command]git submodule sync
2020-10-16T20:29:44.9920288Z ##[command]git -c http.https://MainCo@dev.azure.com.extraheader="AUTHORIZATION: bearer ***" submodule update --init --force
2020-10-16T20:29:44.9923206Z Submodule 'DBPkg' (https://MainCo@dev.azure.com/MainCo/OurProject/_git/DBPkg) registered for path 'DBPkg'
2020-10-16T20:29:44.9923842Z Cloning into '/home/vsts/work/1/s/DBPkg'...
2020-10-16T20:29:44.9924246Z remote: TF401019: The Git repository with name or identifier DBPkg does not exist or you do not have permissions for the operation you are attempting.
2020-10-16T20:29:44.9924850Z fatal: repository 'https://dev.azure.com/MainCo/OurProject/_git/DBPkg/' not found
2020-10-16T20:29:44.9925716Z fatal: clone of 'https://MainCo@dev.azure.com/MainCo/OurProject/_git/DBPkg' into submodule path '/home/vsts/work/1/s/DBPkg' failed
2020-10-16T20:29:44.9926288Z Failed to clone 'DBPkg'. Retry scheduled
2020-10-16T20:29:44.9926718Z Cloning into '/home/vsts/work/1/s/DBPkg'...
2020-10-16T20:29:44.9927132Z remote: TF401019: The Git repository with name or identifier DBPkg does not exist or you do not have permissions for the operation you are attempting.
2020-10-16T20:29:44.9928020Z fatal: repository 'https://dev.azure.com/MainCo/OurProject/_git/DBPkg/' not found
2020-10-16T20:29:44.9928801Z fatal: clone of 'https://MainCo@dev.azure.com/MainCo/OurProject/_git/DBPkg' into submodule path '/home/vsts/work/1/s/DBPkg' failed
2020-10-16T20:29:44.9929412Z Failed to clone 'DBPkg' a second time,aborting
我还需要做些什么才能赋予流水线步骤检出子模块权限? .gitmodules中的URL是从Repos部分直接剪切并粘贴的,通常我们会在该仓库中克隆该仓库。
编辑:从门户复制的问题回购的URL为
https://MainCo@dev.azure.com/MainCo/OurProject/_git/MainAPIs
https://MainCo@dev.azure.com/MainCo/OurProject/_git/DBPkg
因此,子模块位于https://MainCo@dev.azure.com/MainCo/OurProject/_git/DBPkg,但不确定如何用Git子模块来表达以上内容。
编辑2:
根据给出的答案,这是代理报告的错误输出...
...
2020-10-20T13:21:23.9543308Z ##[command]git submodule sync
2020-10-20T13:21:23.9892501Z ##[command]git -c http.https://MainCo@dev.azure.com.extraheader="AUTHORIZATION: bearer ***" submodule update --init --force
2020-10-20T13:21:24.0147532Z Submodule 'DBPkg' (https://MainCo@dev.azure.com/MainCo/OurProject/_git/DBPkg) registered for path 'DBPkg'
2020-10-20T13:21:24.0194148Z Cloning into '/home/vsts/work/1/s/DBPkg'...
2020-10-20T13:21:24.1694357Z remote: TF401019: The Git repository with name or identifier DBPkg does not exist or you do not have permissions for the operation you are attempting.
2020-10-20T13:21:24.1696067Z fatal: repository 'https://dev.azure.com/MainCo/OurProject/_git/DBPkg/' not found
2020-10-20T13:21:24.1726598Z fatal: clone of 'https://MainCo@dev.azure.com/MainCo/OurProject/_git/DBPkg' into submodule path '/home/vsts/work/1/s/DBPkg' failed
2020-10-20T13:21:24.1731117Z Failed to clone 'DBPkg'. Retry scheduled
2020-10-20T13:21:24.1760958Z Cloning into '/home/vsts/work/1/s/DBPkg'...
2020-10-20T13:21:24.3885945Z remote: TF401019: The Git repository with name or identifier DBPkg does not exist or you do not have permissions for the operation you are attempting.
2020-10-20T13:21:24.3892068Z fatal: repository 'https://dev.azure.com/MainCo/OurProject/_git/DBPkg/' not found
2020-10-20T13:21:24.3902720Z fatal: clone of 'https://MainCo@dev.azure.com/MainCo/OurProject/_git/DBPkg' into submodule path '/home/vsts/work/1/s/DBPkg' failed
2020-10-20T13:21:24.3909036Z Failed to clone 'DBPkg' a second time,aborting
2020-10-20T13:21:24.3987155Z ##[error]Git submodule update failed with exit code:
1
解决方法
Update2
管道可以访问授权项目中的任何Azure DevOps存储库,如前面的“将作业授权范围限制为当前项目”部分中所述,除非已 将作业授权范围限制为引用的Azure DevOps存储库 。
启用此选项后,可以将所有管道的访问范围减小到仅使用该存储库的管道作业中的检出步骤明确引用的Azure DevOps存储库。
尝试关闭此选项,然后再次检查。
如果仍然无法使用,则需要检查回购协议的安全性。找到您的[项目名称]构建服务帐户和项目集合构建服务帐户,确保它们都具有足够的权限来访问您的两个git仓库。
更新
请尝试在.gitmodules中使用此功能,因为子模块存储库与父库位于相同的url中。 :
[submodule "DBPkg"]
path = DBPkg
url = ../DBPkg
您还可以检查以下链接:https://stackoverflow.com/a/34618962/5391065
构建管道将检出您的Git子模块,只要它们是:
未经身份验证的:没有凭据的公共未经身份验证的存储库 克隆或提取所需。
已认证:
包含在同一项目,GitHub组织或Bitbucket中 将云帐户作为上面指定的Git存储库。
使用相对于主存储库的URL 添加。例如,将要检出的这一项:
git submodule add /../../submodule.git mymodule
这将不被检出的:git submodule add https://dev.azure.com/fabrikamfiber/_git/ConsoleApp mymodule
您还可以查看Azure DevOps文档here。
一个类似的博客供您参考:Using Git submodules in (private) Azure DevOps repositories
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。