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,从而获得所需的访问权限。