Gitlab CI中的Docker执行程序通过错误的URL传递给Git repo

时间:2017-08-14 09:20:57

标签: docker gitlab-ci gitlab-ci-runner

我在http://gitlab.example.com等域上的内部服务器上设置了Gitlab服务器。我还使用shell executor和使用docker executor的跑步者注册了跑步者,两者都在与Gitlab服务器相同的机器上。

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

runtest:
    script:
        - npm install

当我使用shell executor通过跑步者运行时,一切正常。检查了repo,它运行npm install。

但是,当我通过配置为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 repo。

我无法弄清楚为什么两个参赛者之间存在差异,以及在哪里配置Gitlab以便为所有参赛者使用正确的git回购路径?

编辑:这是运行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] idle
gitlab-+   406  0.0  0.5 1115624 23832 ?       Ss   13:09   0:00 postgres: gitlab gitlabhq_production [local] idle
gitlab-+   407  0.0  0.5 1116772 24104 ?       Ss   13:09   0:00 postgres: gitlab gitlabhq_production [local] idle
gitlab-+   409  0.0  0.6 1116852 24784 ?       Ss   13:09   0:00 postgres: gitlab gitlabhq_production [local] idle
gitlab-+   412  0.0  0.6 1117364 24644 ?       Ss   13:09   0:00 postgres: gitlab gitlabhq_production [local] idle
root       615  0.0  0.0   4252  1120 ?        Ss   Aug14   0:00 runsvdir -P /opt/gitlab/service log: ....................................................................................................................................................................................................$
root       674  0.0  0.0   4100   644 ?        Ss   Aug14   0:00 runsv gitlab-monitor
root       680  0.0  0.0   4100   676 ?        Ss   Aug14   0:00 runsv gitlab-workhorse
root       689  0.0  0.0   4244  1156 ?        S    Aug14   0:00 svlogd -tt /var/log/gitlab/prometheus
root       707  0.0  0.0   4244  1236 ?        S    Aug14   0:00 svlogd -tt /var/log/gitlab/gitaly
root       708  0.0  0.0   4244  1240 ?        S    Aug14   0:01 svlogd -tt /var/log/gitlab/gitlab-workhorse
root       709  0.0  0.0   4244  1068 ?        S    Aug14   0:00 svlogd -tt /var/log/gitlab/unicorn
root       710  0.0  0.0   4244  1228 ?        S    Aug14   0:00 svlogd -tt /var/log/gitlab/sidekiq
root       711  0.0  0.0   4244  1064 ?        S    Aug14   0:00 svlogd -tt /var/log/gitlab/logrotate
root       712  0.0  0.0   4244   696 ?        S    Aug14   0:00 svlogd -tt /var/log/gitlab/nginx
root       713  0.0  0.0   4244  1216 ?        S    Aug14   0:00 svlogd -tt /var/log/gitlab/postgresql
root       714  0.0  0.0   4244  1156 ?        S    Aug14   0:00 svlogd -tt /var/log/gitlab/redis-exporter
root       715  0.0  0.0   4244  1128 ?        S    Aug14   0:00 svlogd -tt /var/log/gitlab/postgres-exporter
root       716  0.0  0.0   4244  1228 ?        S    Aug14   0:00 svlogd -tt /var/log/gitlab/gitlab-monitor
root       717  0.0  0.0   4244  1244 ?        S    Aug14   0:00 svlogd -tt /var/log/gitlab/node-exporter
root       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] idle
gitlab-+  1547  0.0  0.4 1114536 18512 ?       Ss   13:14   0:00 postgres: gitlab gitlabhq_production [local] idle
gitlab-+  1548  0.0  0.4 1114884 19224 ?       Ss   13:14   0:00 postgres: gitlab gitlabhq_production [local] idle
srv       1565  0.0  0.0  12740  2248 pts/0    S+   13:14   0:00 grep gitlab
root     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$
root     27282  0.0  0.0   4340  1576 ?        Ss   12:30   0:00 /bin/sh /opt/gitlab/embedded/bin/gitlab-logrotate-wrapper
root     27288  0.0  0.1  42056  5532 ?        Ss   12:30   0:00 nginx: master process /opt/gitlab/embedded/sbin/nginx -p /var/opt/gitlab/nginx
gitlab-+ 27289  0.0  0.1  46688  7700 ?        S    12:30   0:00 nginx: worker process
gitlab-+ 27290  0.0  0.0  42260  3088 ?        S    12:30   0:00 nginx: cache manager process
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 process
gitlab-+ 27308  0.0  0.2 1103620 10880 ?       Ss   12:30   0:00 postgres: writer process
gitlab-+ 27309  0.0  0.5 1103620 20664 ?       Ss   12:30   0:00 postgres: wal writer process
gitlab-+ 27310  0.0  0.1 1104192 6284 ?        Ss   12:30   0:00 postgres: autovacuum launcher process
gitlab-+ 27311  0.0  0.0  31808  3952 ?        Ss   12:30   0:00 postgres: stats collector process
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 unicorn master -D -E production -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 unicorn worker[1] -D -E production -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

1 个答案:

答案 0 :(得分:0)

这是由跑步者的网络设置引起的。在主机和docker执行程序之间自动设置的网桥位于本地网络的“外部”。因此,docker容器无法看到网址gitlab.example.com

我通过添加

解决了这个问题
network_mode = "host"

到docker runner的config.toml。

这样,跑者与主机共享同一个网络,因此可以获得所需的访问权限。