簡體   English   中英

GitLab runner無法通過http克隆存儲庫

[英]GitLab runner unable to clone repository via http

我在測試環境中運行了最新的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並使用它正在嘗試的確切地址(使用令牌in-tact)並且我可以克隆存儲庫就好了。 我不知道為什么服務無法克隆存儲庫。 運行程序執行程序也配置為“docker”。 也許有一些端口映射問題進入該容器?

我知道這個問題很老了,但你可以使用略有不同的方法( 如果你使用的是具有相同問題的docker runner )。

在域名下運行Gitlab - 它可能完全是虛擬的,只需確保所有VM都可以解析域名。

然后修改/etc/gitlab-runner/config.toml並將extra_hosts變量添加到[runners.docker]部分,其值為["your_domain_name:ip_address"] 您還可以添加您可能需要的任何其他主機。

您可以在https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/configuration/advanced-configuration.md找到有關轉輪配置的更多信息。

我假設這個問題可能與將運行器注冊為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“內運行,它在主機上,因此跑步者無法與GitLab通信。

解決方案是注冊跑步者以指向主機在docker界面上虛擬地址(對我來說是http://172.17.0.1/ci ),或者使用主機的公共IP或域名(如果有的話)並且可以訪問公開。 只是不要將它發送到localhost或127.0.0.1,因為對於跑步者來說,它指向它的“VM”,而不是你的GitLab實例。

至於現在(gitlab的最新版本 - 9及更高版本),您需要使用具有適當ssl證書的https
一旦你用https://添加新的跑步者...所有應該工作得很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM