Docker in Docker 配置内网通信

GitLab Runner 执行结束时会以网络的形式向主服务发送生成的产物(artifacts),原先我配置的都是用公网访问的,但是既然 Runner 都在内网中就可以直接内网通信,指定 Docker bridge 后用容器名即可访问

Runner 配置中的 URL 地址由 https://gitlab.tabll.cn/ 更换成了 http://GitLab/

此时注册和运行都是没有问题的,只是使用了 docker 执行器的 runner 会有问题,卡在 Uploading artifacts 这一步上:

Uploading artifacts as "dependency_scanning" to coordinator... error  error=couldn't execute POST against

这是由于 Runner 开启的新的 Docker 没有网络桥接导致的

配置文件的官方文档:https://gitlab.com/gitlab-org/gitlab-runner/-/blob/master/docs/configuration/advanced-configuration.md#the-runnersdocker-section

可以看到只要指定 network_mode 就可以了:

privileged = true
network_mode = "gitLab_runner_bridge"
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock", "/tmp/builds:/builds"]

然后可正常运行

另外,配置中的 sentry_dsn 的正确格式应该是 “https://XXXXXXXXXXXX:XXXXXXXXXXXX@tabll-bug.cpolar.cn/6666” 这样的,使用 Sentry 默认的是会报错 token 为空的

需要点击 Show deprecated DSN 按钮查看老版本的 sentry_dsn