V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
faceair
V2EX  ›  分享创造

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

  •  
  •   faceair ·
    faceair · 2018-06-18 16:37:25 +08:00 · 3217 次点击
    这是一个创建于 2377 天前的主题,其中的信息可能已经有所发展或是发生改变。
    中心化的依赖管理比如 npm、pip 之类都很好建 mirror,有 mirror 后本地拉依赖、CI 构建速度都很好保证。

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

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

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

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

    我日常都是写个小脚本,然后走一下代理
    faceair
        5
    faceair  
    OP
       2018-06-19 09:56:55 +08:00 via iPhone
    @mritd 部署麻烦?我倒是挺想在搭这么一个公共的代理的,不过国内机器的宽带好贵,放到国外的话加速效果又不明显了…
    mritd
        6
    mritd  
       2018-06-19 10:40:47 +08:00
    @faceair 感觉 透明代理 这块 不怎么方便,不过 go 的包管理就是一个认地址的玩意.....确实有点难受
    faceair
        7
    faceair  
    OP
       2018-06-19 11:05:04 +08:00
    @mritd 是难受,这也不是我能解决的了...
    Cipool
        8
    Cipool  
       2018-06-19 12:17:59 +08:00 via Android
    golang.org 在国内有谷歌中国官方镜像
    golang.google.cn
    faceair
        9
    faceair  
    OP
       2018-06-19 12:25:45 +08:00
    @Cipool 只有文档和可执行文件的镜像吧?
    faceair
        10
    faceair  
    OP
       2018-06-19 12:26:38 +08:00
    @Cipool 抱歉 看错了,报错路径不匹配 设 mirror 的话应该可行
    nobody123123
        11
    nobody123123  
       2018-06-21 08:33:48 +08:00 via iPhone
    https 是硬伤啊。https 无法被缓存。强制忽略 https 认证错误会有安全隐患的吧
    faceair
        12
    faceair  
    OP
       2018-06-21 09:48:18 +08:00
    @nobody123123 有,推荐大家部署在自己的内网里 公网里跳过 https 校验还是很危险的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2033 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:28 · PVG 08:28 · LAX 16:28 · JFK 19:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.