【发布时间】:2014-10-30 14:31:26
【问题描述】:
我设置了 GitLab 和 GitLab CI 来托管和测试我的一些私人存储库。对于这个系统下的作曲家模块,我设置了 Satis 来解析我的私有包。
显然,这些私有包需要一个 ssh 密钥来克隆它们,而我在终端中有这个工作 - 我可以运行 composer install 并获取这些包,只要我在 shell 中添加了带有 ssh-add 的密钥。
但是,当在 GitLab CI 中运行我的测试时,如果项目具有任何这些依赖项,则测试将无法完成,因为我的 GitLab 实例需要身份验证才能获取 deps(显然),并且测试失败并显示 Host key verification failed。
我的问题是如何设置它以便当运行者运行测试时它可以在没有密码的情况下向 gitlab 进行身份验证?我已经尝试在我的跑步者~/.ssh 文件夹中放置一个无密码的 ssh 密钥,但是构建甚至不会添加密钥“eval ssh-agent -s”,然后是 ssh-add 似乎无法说明代理没有运行。 ..
【问题讨论】:
-
截至 2017 年,排名最高的答案已过时。 Marco's answer using
GIT_SUBMODULE_STRATEGY是正确的。我专门添加了这个功能,以避免处理注入 SSH 密钥的混乱。 -
@JonathonReinhart 但是这个解决方案不是安全问题吗?只要我知道相对 URL,我就可以克隆任何私有 GitLab 存储库?跑步者可以压缩克隆的内容并通过电子邮件发送。
-
@Paebbels 不,这不是问题。从 GitLab 8.12 开始,CI 作业运行 as the user that triggered the pipeline,其令牌具有一组减少的权限。 CI 作业只能访问与推送代码的人相同的存储库。
标签: ssh continuous-integration gitlab gitlab-ci gitlab-ci-runner