gitlab与子模块的持续集成问题

时间:2019-05-20 10:43:02

标签: gitlab gitlab-ci

我有几个项目,这些项目使用一个公共项目作为子模块。 该子模块也托管在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

但是经过调查,通常是因为未拉出子模块。

1 个答案:

答案 0 :(得分:0)

如果子模块位于同一GitLab服务器上,则必须在您的.gitmodules中使用相对URL。

据我所知,只要触发管道的用户具有访问两个项目的正确权限,他们触发的作业仍应能够提取子模块(只要它是相对URL)。 / p>

来自relevant documentation

  

如果使用的是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