我已经设置了GitLab和GitLab CI,以托管和测试我的一些私人仓库。对于此系统下的作曲者模块,我设置了Satis来解析我的私有软件包。
显然,这些私有软件包需要ssh密钥才能克隆它们,并且我可以在终端中进行此操作-只要ssh-add
在外壳中添加了密钥,我就可以运行composer install并获取这些软件包。
但是,在GitLab CI中运行我的测试时,如果一个项目具有以下任何依赖关系,则测试将无法完成,因为我的GitLab实例需要进行身份验证才能获得deps,并且测试失败Host key verification failed
。
我的问题是我应该如何设置它,以便当跑步者运行测试时可以在没有密码的情况下向gitlab进行身份验证?我尝试将无密码的ssh-key放入我的Runners~/.ssh
文件夹,但是该构建甚至都不会添加密钥“ eval ssh-agent -s
”,然后再加上ssh-add似乎无法表明代理未运行...
我将其发布为答案,因为其他人还不太清楚和/或没有详细的恕我直言
从GitLab 8.12+开始,假设子模块存储库与请求它的服务器位于同一服务器中,您现在可以:
像往常一样(git submodule add git@somewhere:folder/mysubmodule.git
)使用git子模块设置仓库
.gitmodules
如下修改文件
[submodule "mysubmodule"]
path = mysubmodule
url = ../../group/mysubmodule.git
../../group/mysubmodule.git
从您的存储库到子模块的相对路径是哪里。
将以下行添加到 gitlab-ci.yml
variables:
GIT_SUBMODULE_STRATEGY: recursive
指示运行程序在构建之前获取所有子模块。
注意:如果您的运行者似乎忽略了该GIT_SUBMODULE_STRATEGY
指令,则可能应该考虑对其进行更新。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句