Gotit: 一个 Golang 包缓存代理,期望能让你的构建更快更可靠

2018-06-18 16:37:25 +08:00
 faceair
中心化的依赖管理比如 npm、pip 之类都很好建 mirror,有 mirror 后本地拉依赖、CI 构建速度都很好保证。

但 Golang 的依赖是分布式的,依赖多的话 mirror 很难建,各包管理工具也最多支持单个包的 mirror 设置。
同时所依赖的 github.comgolang.org 在特殊时期很难保证访问的可靠性,一开大会可能就没法工作了。
现在我常使用的办法是直接把 vendor 直接提交的代码仓库,但是感觉这个办法很脏,遇到需要更新依赖的时候一大片绿。

所以我写了个代理 Gotit 尝试解决这个问题,原理就是中间人 + Git 仓库缓存。将包管理工具的代理设置配到 Gotit,Gotit 就能自动帮你拉并缓存用到的 Golang 包。
一方面有缓存的话也可以加快 CI 构建的速度;另一方面如果使用的人多,缓存的包也越多,如果外网断掉你需要的包也可能在代理的缓存中找到,不至于工作停摆。

具体使用办法可以查看项目 README https://github.com/faceair/gotit

项目目前只是验证了可行性,对程序的可靠性还不敢做太多保证,欢迎多多试用有问题可以提 issue ~
3218 次点击
所在节点    分享创造
12 条回复
owlsec
2018-06-18 19:33:08 +08:00
nb
artandlol
2018-06-18 20:14:28 +08:00
类似 gide 这类的工具吗
faceair
2018-06-18 20:26:14 +08:00
@artandlol 不是,Gotit 解决的是 glide 这类包管理工具拉依赖时网络不稳定等问题,设可以跟 glide、dep、govendor 这些包管理工具配合使用。
mritd
2018-06-19 09:38:23 +08:00
总体来说有那么一点麻烦,go 的包管理一直是硬伤啊,不过还是非常支持楼主😉

我日常都是写个小脚本,然后走一下代理
faceair
2018-06-19 09:56:55 +08:00
@mritd 部署麻烦?我倒是挺想在搭这么一个公共的代理的,不过国内机器的宽带好贵,放到国外的话加速效果又不明显了…
mritd
2018-06-19 10:40:47 +08:00
@faceair 感觉 透明代理 这块 不怎么方便,不过 go 的包管理就是一个认地址的玩意.....确实有点难受
faceair
2018-06-19 11:05:04 +08:00
@mritd 是难受,这也不是我能解决的了...
Cipool
2018-06-19 12:17:59 +08:00
golang.org 在国内有谷歌中国官方镜像
golang.google.cn
faceair
2018-06-19 12:25:45 +08:00
@Cipool 只有文档和可执行文件的镜像吧?
faceair
2018-06-19 12:26:38 +08:00
@Cipool 抱歉 看错了,报错路径不匹配 设 mirror 的话应该可行
nobody123123
2018-06-21 08:33:48 +08:00
https 是硬伤啊。https 无法被缓存。强制忽略 https 认证错误会有安全隐患的吧
faceair
2018-06-21 09:48:18 +08:00
@nobody123123 有,推荐大家部署在自己的内网里 公网里跳过 https 校验还是很危险的

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

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

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

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

© 2021 V2EX