背景:
公司在做自己的发布平台,需要自动化编译go 工程,大部分开发使用的都是go 1.12 版本
由于go mod的机制,有很多包需要代理才能进行下载,而自动化编译频繁的进行代理切换就很麻烦。
所以线上自动编译采用go 1.13 编译
go 1.13 编译的特点:https://zhuanlan.zhihu.com/p/74542832
过程:
在编译的时候就会偶尔莫名出现 xxx/go.mod malformed record data的问题
自我理解
因为出现的问题的包是公司内部的一个SDK,不存在FQ之类的代理问题
我理解是这样的,go 1.13 可以设置多个代理,在某个下载失败时,他会换代理下载
代理设置:https://goproxy.io,direct 就是连个代理直接下载,或者使用goproxy.io下载
当使用直接下载时,会通过默认代理“sum.golang.org”,这个代理需要FQ验证,所以会失败,切换goproxy.io 是报的这个错误,Google 上查可能是跟这个代理bug 有关
解决方案:
关掉go 1.13的默认代理
go env -w GOSUMDB=off
后来我考虑还可以设置GOPRIVATE 跳过私有库,原理可能都是一样的。想办法关闭代理。