Python 使用CI运行程序克隆子模块

Python 使用CI运行程序克隆子模块,python,git-submodules,gitlab-ci-runner,Python,Git Submodules,Gitlab Ci Runner,因此,我的.gitlab-ci.yml文件如下所示: variables: GIT_STRATEGY: fetch GIT_SUBMODULE_STRATEGY: recursive 在my.gitmodules中,我也要克隆我的子模块: [submodule "src/submodule"] path = src/submodule url = https://gitlab.company.com/submodule/submodule.git 现在,当我在本地克隆

因此,我的.gitlab-ci.yml文件如下所示:

variables:
  GIT_STRATEGY: fetch
  GIT_SUBMODULE_STRATEGY: recursive
在my.gitmodules中,我也要克隆我的子模块:

[submodule "src/submodule"]
    path = src/submodule
    url = https://gitlab.company.com/submodule/submodule.git
现在,当我在本地克隆整个存储库时,一切正常,子模块也被克隆。但是,CI运行程序会出现以下错误:

Cloning into '/builds/user/CITest/src/submodule'...
fatal: could not read Username for 'https://gitlab.company.com': No such device or address
fatal: clone of 'https://gitlab.company.com/submodule/submodule.git' into submodule path '/builds/user/CITest/src/submodule' failed
Failed to clone 'src/submodule'. Retry scheduled
我尝试给跑步者一个安全令牌,并尝试设置秘密变量,尽管我不能百分之百确定我是否正确使用了它们。我发现了很多类似的错误,但它们主要是将子模块作为作业调用,这里我需要立即获取它

另外需要注意的是,我确实可以正常访问子模块,因为本地克隆工作也非常好


我是否需要手动设置运行程序?

您需要为位于同一GitLab服务器中的子模块使用相对URL

例如:

[submodule "src/submodule"]
    path = src/submodule
    url = ../../group/submodule.git
其他子模块不位于同一GitLab服务器上,您可以使用正常的完整HTTPS协议URL


.

非常感谢您的快速回答!这就是我以前所做的,它工作得非常好,但我想知道是否有办法解决这个问题,让它在同一台GitLab服务器和另一台服务器上工作。因为这样,从另一台服务器使用子模块的人将不得不更改yml文件。在另一台(GitLab?)服务器上会出现什么错误?目前这更多是一个假设问题,因为我没有从另一台GitLab服务器使用它。我想知道是否有可能写一个对两者都适用的位。或者,您是否必须根据您是在同一台服务器上还是在不同的服务器上更改yml文件?嗯,我想这取决于您如何设置它。如果您将此存储库(并具有到子模块的相对链接)镜像到另一个GitLab服务器,如果您也将子模块镜像到同一位置,则构建应该仍然可以工作,因为它将从另一个服务器上的相同相对路径获取它。好的。我注意到实际上这个问题刚才有点无关紧要,但我想知道这一点。多谢各位!