上周五的时候 GitHub 的一个 Golang 项目的 CI 报错了,看了下 CI 的报错是在 go build 拉取依赖的时候,说是构建的时候拉取到的依赖和 go.sum 中设置的不一致出于安全考虑拒绝执行,于是苦逼的 op 就排查原因,排查了半天一直以为是自己的问题,最后二分法定位到了 proxy.golang.org ,竟然是因为依赖的一个库的某个版本在 proxy.golang.org 上找不到,这个链接:
https://proxy.golang.org/github.com/golang-infrastructure/go-pointer/@v/v0.0.4.info
访问的时候会报 404 ,而查看这个包的所有版本是可以看到是有 v0.0.4 这个版本的:
https://proxy.golang.org/github.com/golang-infrastructure/go-pointer/@v/list
我就感觉很神奇,因为我本地构建的时候没有任何问题,然后想了一下,我本地构建的时候都会走 goproxy.cn 的镜像代理,线上的 CI 环境因为是在国外,所以是没有设置代理的,走的是默认的 proxy.golang.org ,于是我就去 goproxy.cn 看了一下:
https://goproxy.cn/github.com/golang-infrastructure/go-pointer/@v/v0.0.4.info
发现 goproxy.cn 是没问题的,我就很懵逼,不知道是什么情况,难道真的是官方数据错误?
后续解决方案: 这个被依赖的库是 op 自己的,于是死马当活马医,给这个库打了个新 tag v0.0.5 看了看,新 tag v0.0.5 是没问题的,但是 v0.0.4 仍然无法访问。
有问题的 release 在此: https://github.com/golang-infrastructure/go-pointer/releases/tag/v0.0.4
有没有遇到过的大佬指点下迷津