go mod及 goproxy使用文档
1、go mod使用介绍
go mod是go官方包管理工具,是 golang 1.11 新加的特性, 稳定版本建议使用golang 1.12
是否启用go mod
GO111MODULE环境变量设置, 注:version > go 1.13 之后, 无需设置
GO111MODULE
有三个值:off
, on
和auto(默认值)
。
-
GO111MODULE=off
,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。 -
GO111MODULE=on
,go命令行会使用modules,而一点也不会去GOPATH目录下查找。 -
GO111MODULE=auto
,默认值,go命令行将会根据当前目录来决定是否启用module功能。当前目录在GOPATH/src之外且该目录包含go.mod文件
GOPATH目录下的项目使用go mod,需先export GO111MODULE=on
go mod常用命令
go mod edit
-require=path@version 指定引包版本
-replace=old[@v]=new[@v] replace包替换,可替换download路径,或替换为本地路径测试
go mod tidy
拉取缺少的模块,移除不用的模块
go run test build三个命令时,都会自动检测拉取模块,与go mod tidy功能一致
2、 goproxy使用
使用公有库会存在以下问题:
golang.org/x/net、google.golang.org/grpc 被墙,ping github.com时间不稳定
设置GOPROXY环境变量能解决被墙问题,但会代理所有包,包括私有库,如git.100tal.com的,proxy不存在私有库信息,拉包失败
解决方式:
搭建wangxiao goproxy,使用goproxy.io官方proxy进程,可自行区分公有库和私有库,代理方式如下图:
自行搭建goproxy,匹配地址,对公有库采用proxy方式,git.100tal.com路径下直接获取。
使用方法:
export GOPROXY=http://goproxy.xesv5.com
办公网环境绑定host:
10.90.70.59 goproxy.xesv5.com
其他:
由于部分组件库依赖公有库,已进行自定义开发,使用以下库,需进行replace替换:
replace github.com/smallnest/rpcx => git.100tal.com/wangxiao_xueyan_gomirrors/github.com_smallnest_rpcx v1.0.7
replace github.com/openzipkin/zipkin-go v0.0.0 => git.100tal.com/wangxiao_xueyan_gomirrors/github.com_openzipkin_zipkin-go v1.0.2
replace github.com/docker/libkv v0.0.0 => git.100tal.com/wangxiao_xueyan_gomirrors/github.com_docker_libkv v1.0.0
replace github.com/alecthomas/log4go v0.0.0 => git.100tal.com/wangxiao_xueyan_gomirrors/github.com_alecthomas_log4go v1.0.0
3、100tal库管理
版本说明
go mod支持提交version管理,建议使用版本,版本号格式 v0.0.1
版本分为三段,第一段只能是0和1,1代表线上版本,0代表测试或灰度版本,第二段代表大版本,第三段代表小版本。
第一段为2或以上,代表特大更新,不兼容之前版本,如gopkg.in/yaml.v2 v2.0.0
更新版本
使用go mod edit命令或直接修改go.mod文件
本地测试
replace本地库更新代码测试
replace git.100tal.com/wangxiao_xueyan_golib/gotools => GOPATH/git.100tal.com/wangxiao_xueyan_golib/gotools
4、注意事项
gitconfig insteadof
开发环境,首先检查~/.gitconfig配置,需添加insteadOf配置
[url "git@git.100tal.com:"] insteadOf = https://git.100tal.com/
或者使用命令
git config --global url."git@git.100tal.com:".insteadOf https://git.100tal.com/
git版本
git版本应>=1.8
go1.13使用:
go1.13引入GOSUMDB环境变量,不能正常使用proxy,需要:
export GOSUMDB=off,