使用来自 Gitlab-CI 的部署令牌克隆外部私有子模块

问题描述 投票:0回答:1

我在私有服务器serverB上有一个存储库repoB,并从中获取部署令牌(用户+密码)。
该存储库用作我尝试配置的项目中的子模块。

在这个项目中,我希望能够在 Gitlab-CI 期间初始化这个子模块。

我的

.gitmodules
是:

[submodule "repoB"]
    path = repoB
    url = https://serverB/groupB/repoB.git

我的

.gitlab-ci.yml

test_build:
    variables:
        GIT_SUBMODULE_STRATEGY: recursive

实际上,我得到的错误如下(组:

japan7
,项目:
nanachan
,repoB:
karaneko
,serverB:
git.inpt.fr

Updating/initializing submodules recursively...
Synchronizing submodule url for 'karaneko'
Cloning into '/builds/japan7/nanachan/karaneko'...
fatal: could not read Username for 'https://git.inpt.fr': No such device or address
fatal: clone of 'https://git.inpt.fr/japan7/karaneko.git' into submodule path '/builds/japan7/nanachan/karenko' failed
Failed to clone 'karaneko'. Retry scheduled
Cloning into '/builds/japan7/nanachan/karaneko'...
fatal: could not read Username for 'https://git.inpt.fr': No such device or address
fatal: clone of 'https://git.inpt.fr/japan7/karaneko.git' into submodule path '/builds/japan7/nanachan/karenko' failed
Failed to clone 'karaneko' a second time, aborting
ERROR: failed: exit code 1

我想我应该将部署令牌用户和密码放在项目机密中(在“设置”->“CI”/“CD”->“变量”中),但我找不到这些变量的名称,也没有任何帮助来解决这个特殊情况。

我该如何进行?
预先感谢您的帮助!

gitlab git-submodules gitlab-ci
1个回答
9
投票

我使用部署令牌解决了同样的问题。刚刚添加了带有部署令牌的子模块,CI 上的一切都运行正常。

http://<username>:<deploy_token>@gitlab.example.com/tanuki/awesome_project.git

并且

.gitmodules
看起来像:

[submodule "tanuki/awesome_project"]
    path = tanuki/awesome_project
    url = https://<username>:<deploy_token>@gitlab.example.com/tanuki/awesome_project.git

https://docs.gitlab.com/ee/user/project/deploy_tokens/

© www.soinside.com 2019 - 2024. All rights reserved.