使用 CI Runner 克隆子模块

Cloning a submodule using a CI Runner

所以我的 .gitlab-ci.yml 文件如下:

variables:
  GIT_STRATEGY: fetch
  GIT_SUBMODULE_STRATEGY: recursive

在我的 .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.

Relevant documentation.