由于众所周知的问题,为了拉取 Github 项目,我在本地起了 clash 的服务并在指定端口监听,Drone 的 server 端和 runner 端本身可以通过添加--add-host host.docker.internal:host-gateway这个 host 配置加上HTTP_PROXY环境变量来访问到本机的 clash 端口,实现正常获取仓库信息的。
但 Drone 的 runner 跑 build 时,仓库的克隆操作似乎是通过再拉起一个 git 的容器,在 git 容器内完成仓库拉取的,这样就会导致我对 runner 添加的 host 配置并不会应用到 runner 内创建的容器上,无法解析host.docker.internal这个 hostname ,导致无法拉取仓库。
报错:fatal: unable to access 'https://github.com/...': Could not resolve proxy: host.docker.internal
求助万能的 V 友,怎样才能让 runner 拉取仓库时也可以通过宿主机的代理访问?
尝试过的方案:
- 指定 drone-runner 的 DRONE_RUNNER_NETWORKS 选项为同一网络,无效;
- 设置
~/.docker/config.json的 proxies 项,无效,原理也是为容器添加HTTP_PROXY等环境变量。