背景:
公司在做自己的發布平台,需要自動化編譯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 跳過私有庫,原理可能都是一樣的。想辦法關閉代理。