2015-11-30 116 views
4

我有在测试环境中运行的GitLab的最新码头图像,我遇到了GitLab亚军的问题。这是无法通过HTTP链接克隆,得到以下信息:GitLab亚军无法通过http克隆存储库

Running on runner-bd27e50b-project-1-concurrent-0 via machine... 
Cloning repository... 
Cloning into '/builds/my/awesome-project'... 
fatal: unable to access 'http://gitlab-ci-token:[email protected]/my/awesome-project.git/': Failed to connect to 127.0.0.1 port 80: Connection refused 

ERROR: Build failed with: exit code 1 

我跑gitlab亚军与--debug标志,并用它试图(与-圆通令牌)的确切地址,我可以克隆存储库就好了。我不知道为什么服务无法克隆存储库。跑步执行者也被配置为'码头'。也许有一些端口映射问题进入该容器?

回答

5

我推测这个问题可能与将跑步者注册为码头容器导致本地主机地址不能解析到正确的机器(我开始跑步者的地方)有关。在这种情况下,它可能会解析为容器。在docker代理界面上使用主机IP(对我来说为172.17.0.1),或者在注册runner时使用主机的真实地址而不是“localhost”来修复问题。

编辑:这是一个更详细的问题,因为我的理解和解决方案。装载的docker实例就像一个(非常)轻量级的虚拟机。泊坞窗配置一个虚拟网络接口,如果您从您的主机运行ifconfig你会看到:

[email protected]:~> ifconfig 
docker0 Link encap:Ethernet HWaddr XXXX 
      inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0 
      ... 

这是主机的该接口的IP地址。因此,如果您希望运行器能够连接到该主机上运行的服务,则不能将其指向localhost/127.0.0.1,因为它来自运行程序的实例,将会路由到运行程序的“ VM“,但GitLab没有运行在运行程序”VM“内,它在主机上,因此运行程序无法与GitLab进行通信。

的解决方案是注册转轮指向泊坞窗界面(http://172.17.0.1/ci我)对主机的虚拟地址,或者如果你有一个使用主机的公网IP或域名,它的公共访问。只是不要将它发送到localhost或127.0.0.1,因为对运行者来说,它指向它的“VM”,而不是你的GitLab实例。

+0

我有同样的问题。你能扩展你的答案吗?你究竟如何改正它? – Onlyjus

+0

@Onlyjus我加了一点更多的解释,希望有帮助。TL; DR:注册您的跑步者以在Docker虚拟网络适配器上指向您的主机IP。 – Anthony

4

我知道这个问题已经很老了,但是您可以使用稍微不同的方法(如果您使用码头运行员时遇到同样的问题,则为)。

在域名下运行Gitlab--它可能是完全虚拟的,只要确保所有的虚拟机都能解析域名即可。

然后修改/etc/gitlab-runner/config.tomlextra_hosts变量添加到[runners.docker]部与值["your_domain_name:ip_address"]。您还可以添加您可能需要的任何其他主机。

您可以在 https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/configuration/advanced-configuration.md

+0

通常'privileged = true'和'volumes = [“/var/run/docker.sock:/var/run/docker.sock”,“/ cache”]'在同一部分也是有用的建立图像 – vladkras

0

至于现在找到亚军配置的详细信息(gitlab的最新版本 - 9和向上),你需要使用HTTPS 适当的SSL证书。
只要你用https://添加新的跑步者,所有人都应该工作得很好。