我有几个项目,这些项目使用一个公共项目作为子模块。 该子模块也托管在gitlab上,但是它是一个具有不同基本名称的不同项目。
在每个项目中,子模块都是使用git地址而不是相对路径链接的。
CI构建会不断失败,因为他们声称自己无权提取子模块。
如何为CI中的子模块传递凭据?由于它是同一用户帐户,为什么还需要凭据?
我收到这样的错误:
MSBUILD:错误MSB1003:指定项目或解决方案文件。当前工作目录不包含项目或解决方案文件。 section_end:1558348623:build_scriptsection_start:1558348623:after_scriptsection_end:1558348625:after_scriptsection_start:1558348625:upload_artifacts_on_failuresection_end:1558348627:upload_artifacts_on_failureERROR:作业失败:退出代码1
但是经过调查,通常是因为未拉出子模块。
答案 0 :(得分:0)
如果子模块位于同一GitLab服务器上,则必须在您的.gitmodules
中使用相对URL。
据我所知,只要触发管道的用户具有访问两个项目的正确权限,他们触发的作业仍应能够提取子模块(只要它是相对URL)。 / p>
如果使用的是GitLab 8.12+,并且子模块位于同一GitLab服务器上,则必须更新.gitmodules文件以使用相对URL。由于Git允许在.gitmodules配置中使用相对URL,因此轻松地使您可以使用HTTP(S)克隆所有CI作业,并使用SSH进行所有本地签出。 .gitmodules看起来像:
path = project url = ../../group/project.git
请注意,不要忘记在GIT_SUBMODULE_STRATEGY
脚本中设置.gitlab-ci.yml
。