我在测试环境中运行了最新的GitLab docker镜像,而且我遇到了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:xxxxxx@127.0.0.1/my/awesome-project.git/':
Failed to connect to 127.0.0.1 port 80: Connection refused
ERROR: Build failed with: exit code 1
我使用--debug
标志运行了gitlab-runner并使用了它正在尝试的确切地址(带有令牌)并且我可以克隆存储库就好了。我不知道为什么服务无法克隆存储库。运行程序执行程序也配置为“docker”。也许有一些端口映射问题进入该容器?
答案 0 :(得分:8)
我知道这个问题已经过时了,但您可以使用略有不同的方法(如果您使用的是docker runner 但问题相同)。
在域名下运行Gitlab - 它可能完全是虚拟的,只需确保所有虚拟机都可以解析域名。
然后修改 /etc/gitlab-runner/config.toml 并将extra_hosts
变量添加到[runners.docker]
部分,其值为["your_domain_name:ip_address"]
。您还可以添加您可能需要的任何其他主机。
您可以在以下位置找到有关runner config的更多信息 https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/configuration/advanced-configuration.md
答案 1 :(得分:6)
我假设这个问题可能与将跑步者注册为docker容器有关,导致localhost地址无法解析到正确的机器(我开始跑步者);在这种情况下,它可能会解析为容器。使用docker代理接口上的主机IP(对我来说是172.17.0.1)或使用主机的真实地址而不是" localhost"注册跑步者时可以解决问题。
编辑:根据我的理解和解决方案,这里有更详细的问题。加载的docker实例就像一个(非常)轻量级的虚拟机。 Docker配置虚拟网络接口,如果从主机运行ifconfig,您将看到该接口:
user@pc:~> 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",它在主机上,所以runner无法与GitLab通信。
解决方案是注册跑步者以指向docker界面上的主机虚拟地址(http://172.17.0.1/ci对我来说),或使用主机'公共知识产权或域名(如果您有)并且可以公开访问。只是不要将它发送到localhost或127.0.0.1,因为对于跑步者来说,它指的是" VM"而不是你的GitLab实例。
答案 2 :(得分:0)
至于现在(gitlab的最新版本 - 9及以上),您需要使用 https 并使用正确的ssl证书。
一旦你用https://添加新的跑步者......一切都应该可以正常工作。