Gitlab CI中的Docker执行器将错误的URL传递给Git仓库

我有一个Gitlab服务器设置在内部服务器上,像http://gitlab.example.com这样的域名。 我也注册了一个使用shell executor的runner和一个使用docker docker executor的runner,两者都在与Gitlab服务器相同的机器上。

我有这个非常基本的.gitlab-ci.yml文件

 runtest: script: - npm install 

当我使用shell executor通过runner运行时,一切正常。 回购是检出,并运行npm安装。

但是,当我通过运行configuration为docker executor 。 我得到以下错误:

 Running with gitlab-ci-multi-runner 9.4.2 (6d06f2e) on Test runner (fe943c63) Using Docker executor with image node:6 ... Using docker image sha256:81e132bdd65c157234d121b7c1743360c0d0d60f9bb6322f75ffa87c8f561ad8 for predefined container... Pulling docker image node:6 ... Using docker image node:6 ID=sha256:3d258692b9fa0ba9568a891e1c702eee61d43e35286bec1b6fb0964700ca1dea for build container... Running on runner-fe943c63-project-5-concurrent-0 via gitlab... Cloning repository... Cloning into '/builds/internal/boilerplate'... fatal: repository 'http://example.com/internal/boilerplate.git/' not found ERROR: Job failed: exit code 1 

问题在于,我的Gitlab服务器位于名为gitlab.example.com的子域上,运行程序尝试从http://example.com检出代码。 这就好像docker执行程序通过错误的服务器URL,因此无法正确检查Git仓库。

我无法弄清楚为什么两个跑步者之间有什么区别,哪里可能configurationGitlab使用正确的path到所有跑步者的git回购?

编辑:这里是运行ps aux | grep gitlab的输出 ps aux | grep gitlab

 git 373 1.5 9.5 657036 385916?  Sl 13:08 0:04 unicorn worker [0] -D -E production -c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb / opt / gitlab / embedded / service / gitlab-rails / config。 RU
 gitlab- + 389 0.0 0.7 1121208 30444?  Ss 13:08 0:00 postgres:gitlab gitlabhq_production [local]空闲
 gitlab- + 406 0.0 0.5 1115624 23832?  Ss 13:09 0:00 postgres:gitlab gitlabhq_production [本地]闲置
 gitlab- + 407 0.0 0.5 1116772 24104?  Ss 13:09 0:00 postgres:gitlab gitlabhq_production [本地]闲置
 gitlab- + 409 0.0 0.6 1116852 24784?  Ss 13:09 0:00 postgres:gitlab gitlabhq_production [本地]闲置
 gitlab- + 412 0.0 0.6 1117364 24644?  Ss 13:09 0:00 postgres:gitlab gitlabhq_production [本地]闲置
根615 0.0 0.0 4252 1120?  Ss Aug14 0:00 runsvdir -P / opt / gitlab / service log:.................................. .................................................. .................................................. .................................................. ............ $
根674 0.0 0.0 4100 644?  Ss Aug14 0:00 runsv gitlab-monitor
根680 0.0 0.0 4100 676?  Ss Aug14 0:00 runsv gitlab-workhorse
根689 0.0 0.0 4244 1156?  S Aug14 0:00 svlogd -tt / var / log / gitlab / prometheus
根707 0.0 0.0 4244 1236?  S Aug14 0:00 svlogd -tt / var / log / gitlab / gitaly
根708 0.0 0.0 4244 1240?  S Aug14 0:01 svlogd -tt / var / log / gitlab / gitlab-workhorse
根709 0.0 0.0 4244 1068?  S Aug14 0:00 svlogd -tt / var / log / gitlab / unicorn
根710 0.0 0.0 4244 1228?  S Aug14 0:00 svlogd -tt / var / log / gitlab / sidekiq
根711 0.0 0.0 4244 1064?  S Aug14 0:00 svlogd -tt / var / log / gitlab / logrotate
根712 0.0 0.0 4244 696?  S Aug14 0:00 svlogd -tt / var / log / gitlab / nginx
根713 0.0 0.0 4244 1216?  S Aug14 0:00 svlogd -tt / var / log / gitlab / postgresql
根714 0.0 0.0 4244 1156?  S Aug14 0:00 svlogd -tt / var / log / gitlab / redis-exporter
根715 0.0 0.0 4244 1128?  S Aug14 0:00 svlogd -tt / var / log / gitlab / postgres-exporter
根716 0.0 0.0 4244 1228?  S Aug14 0:00 svlogd -tt / var / log / gitlab / gitlab-monitor
根717 0.0 0.0 4244 1244?  S Aug14 0:00 svlogd -tt / var / log / gitlab / node-exporter
根739 0.0 0.0 4244 1060?  S Aug14 0:00 svlogd -tt / var / log / gitlab / redis
 gitlab- + 1546 0.0 0.5 1115740 21052?  Ss 13:14 0:00 postgres:gitlab gitlabhq_production [local]空闲
 gitlab- + 1547 0.0 0.4 1114536 18512?  Ss 13:14 0:00 postgres:gitlab gitlabhq_production [local]空闲
 gitlab- + 1548 0.0 0.4 1114884 19224?  Ss 13:14 0:00 postgres:gitlab gitlabhq_production [local]空闲
 srv 1565 0.0 0.0 12740 2248 pts / 0 S + 13:14 0:00 grep gitlab
根27235 0.1 0.4 56260 20132?  Ssl 12:30 0:03 / usr / bin / gitlab-ci-multi-runner run --working-directory / home / gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --user gitlab-runner
 git 27266 0.0 0.3 130316 14280?  Ssl 12:30 0:00 / opt / gitlab / embedded / bin / gitaly /var/opt/gitlab/gitaly/config.toml
 git 27271 0.1 0.7 311376 32044?  Ssl 12:30 0:04 / opt / gitlab / embedded / bin / ruby​​ / opt / gitlab / embedded / bin / gitlab-mon web -c /var/opt/gitlab/gitlab-monitor/gitlab-monitor.yml
 git 27274 0.0 0.3 228128 15244?  Ssl 12:30 0:01 / opt / gitlab / embedded / bin / gitlab-workhorse -listenNetwork unix -listenUmask 0 -listenAddr / var / opt / gitlab / gitlab-workhorse / socket -authBackend http:// localhost:8080 -authSocket /var/opt/gitlab/gitlab-rails/sockets/gitlab.socket -docum $
根27282 0.0 0.0 4340 1576?  Ss 12:30 0:00 / bin / sh / opt / gitlab / embedded / bin / gitlab-logrotate-wrapper
根27288 0.0 0.1 42056 5532?  Ss 12:30 0:00 nginx:主进程/ opt / gitlab / embedded / sbin / nginx -p / var / opt / gitlab / nginx
 gitlab- + 27289 0.0 0.1 46688 7700?  S 12:30 0:00 nginx:工作进程
 gitlab- + 27290 0.0 0.0 42260 3088?  S 12:30 0:00 nginx:cachingpipe理器进程
 gitlab- + 27293 0.0 0.3 119656 14768?  Ssl 12:30 0:01 / opt / gitlab / embedded / bin / node_exporter -web.listen-address = localhost:9100 -collector.textfile.directory = / var / opt / gitlab / node-exporter / textfile_collector
 gitlab- + 27298 0.0 0.2 116904 11336?  Ssl 12:30 0:00 / opt / gitlab / embedded / bin / postgres_exporter -web.listen-address = localhost:9187 -extend.query-path = / var / opt / gitlab / postgres-exporter / queries.yaml
 gitlab- + 27305 0.0 1.2 1103620 52328?  Ss 12:30 0:00 / opt / gitlab / embedded / bin / postgres -D / var / opt / gitlab / postgresql / data
 gitlab- + 27307 0.0 0.7 1103736 29220?  Ss 12:30 0:00 postgres:checkpointer进程
 gitlab- + 27308 0.0 0.2 1103620 10880?  Ss 12:30 0:00 postgres:作者进程
 gitlab- + 27309 0.0 0.5 1103620 20664?  Ss 12:30 0:00 postgres:沃尔作家程序
 gitlab- + 27310 0.0 0.1 1104192 6284?  Ss 12:30 0:00 postgres:autovacuum启动程序
 gitlab- + 27311 0.0 0.0 31808 3952?  Ss 12:30 0:00 postgres:stats收集器进程
 gitlab- + 27314 0.2 1.4 370924 59220?  Ssl 12:30 0:05 / opt / gitlab / embedded / bin / prometheus -web.listen-address = localhost:9090 -storage.local.path = / var / opt / gitlab / prometheus / data -storage.local.chunk -encoding-version = 2 -storage.local.target-heap-size = 109384826 -config.file = / var / opt / gitlab $
 gitlab- + 27323 0.4 0.1 41556 5648?  Ssl 12:30 0:12 / opt / gitlab / embedded / bin / redis-server 127.0.0.1:0
 gitlab- + 27328 0.0 0.2 39396 10968?  Ssl 12:30 0:00 / opt / gitlab / embedded / bin / redis_exporter -web.listen-address = localhost:9121 -redis.addr = unix:///var/opt/gitlab/redis/redis.socket
 git 27333 1.7 9.7 714348 396880?  Ssl 12:30 0:46 sidekiq 5.0.0 gitlab-rails [0 of 25 busy]
 git 27357 0.0 0.0 20124 2956?  Ss 12:30 0:00 / bin / bash / opt / gitlab / embedded / bin / gitlab-unicorn-wrapper
 git 27376 0.5 7.8 577152 320180?  Sl 12:30 0:14独angular兽大师-D -E制作-c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb /opt/gitlab/embedded/service/gitlab-rails/config.ru
 gitlab- + 27382 0.0 0.4 1115236 18844?  Ss 12:30 0:01 postgres:gitlab -psql postgres [local] idle
 git 27485 0.4 9.9 687964 405976?  Sl 12:31 0:10独angular兽工作者[1] -D -E生产-c /var/opt/gitlab/gitlab-rails/etc/unicorn.rb / opt / gitlab / embedded / service / gitlab-rails / config。 RU
 gitlab- + 27517 0.0 0.9 1130316 39788?  Ss 12:31 0:00 postgres:gitlab gitlabhq_production [local] idle
 gitlab- + 30455 0.0 0.6 1117852 26280?  Ss 12:50 0:00 postgres:gitlab gitlabhq_production [local] idle

这是由跑步者的networking设置造成的。 在主机和docker执行程序之间自动build立的网桥是我们本地networking的“外部”。 所以docker的容器无法看到urlgitlab.example.com

我通过添加解决了它

 network_mode = "host" 

到docker亚军的config.toml。

这样跑步者就可以和主机共享同一个networking,从而获得所需的访问权限。