Drone runner 代理问题

2022-11-10 19:26:24 +08:00
 ginakira

由于众所周知的问题,为了拉取 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 拉取仓库时也可以通过宿主机的代理访问?

尝试过的方案:

  1. 指定 drone-runner 的 DRONE_RUNNER_NETWORKS 选项为同一网络,无效;
  2. 设置~/.docker/config.json的 proxies 项,无效,原理也是为容器添加HTTP_PROXY等环境变量。
1296 次点击
所在节点    程序员
9 条回复
IvanLi127
2022-11-10 20:56:14 +08:00
要不把 pipeline 的 git clone 关了,然后在第一个 step ,用 git 插件拉代码,或者直接跑个有 git 的容器去拉代码?这样应该就能通过环境变量配置代理了?
Yourshell
2022-11-10 21:37:13 +08:00
clash 允许局域网连接,然后用局域网的 IP
aeli
2022-11-10 22:05:59 +08:00
改 docker 的 deamo 的 dns 配置就行。
ginakira
2022-11-10 22:19:53 +08:00
@IvanLi127 好的,我尝试下
ginakira
2022-11-10 22:20:19 +08:00
@Yourshell 感谢,用这个方法顺利拉下来了
windyboy
2022-11-11 08:37:09 +08:00
drone 里的 localhost 是指新建 git 容器的 localhost 不是你的服务器
hiyoi
2022-11-11 09:19:15 +08:00
最近刚好涉及到 drone 。你这问题用 docker-compose 把 runner 和 server 放到同一个 network 里面就能解决
参考我这个配置 https://github.com/hiyoi/drone-local
hiyoi
2022-11-11 09:25:23 +08:00
sorry ,没注意审题。
代理问题前面同学提到的方法可解
ginakira
2022-11-12 00:49:38 +08:00
@hiyoi 感谢解答,也尝试过此方案。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/894236

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX