GitLab 运行程序和子模块的 SSH 克隆 - 即使主存储库和子模块位于同一 GitLab 实例上,是否也需要 SSH 密钥?如何设置?

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

即使在同一个实例上,我也更喜欢避免子模块的相对路径,因为它们很容易出错,有时找出相对路径非常耗时,并且可能存在分叉问题。

我的主要存储库使用另一个作为子模块,并且两者都位于同一实例的同一组中,但路径略有不同。两个存储库都是私有。该运行者已注册为该实例和组的组运行者,并且能够构建所有项目。也就是说,在我添加子模块之前。

我尝试了 SSH 和 HTTPS,结果出现以下错误:

  • SSH

    Host key verification failed.
    fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
    
  • HTTPS

    remote: The project you were looking for could not be found or you don't have permission to view it.
    fatal: repository 'https://gitlab.example.de/user/example/example-group/project-development-setup.git/' not found
    

显然,当在本地进行

submodule init
时,我需要适当的 SSH 密钥,我也添加了该密钥。然而,我没想到 CI 作业会出现这种情况,它会在同一组中克隆子模块(但我猜不是子组)。

如果我不想为子模块使用相对 URI,那么我该如何为通过

git submodule
GIT_SUBMODULE_STRATEGY
和其他 GitLab CI 变量应用的
GIT_SUBMODULE_PATHS
命令添加身份验证?

ssh https gitlab git-submodules
1个回答
0
投票

必须将主存储库添加到子模块存储库的

Limit access to
白名单中,现在一切正常。如果未列入白名单,即使使用相对 URI,子模块克隆也会失败。

对于需要 SSH 访问的外部子模块,我想,设置运行器的人需要确保添加公钥。

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