Golang 组件版本管理应用实践

go mod及 goproxy使用文档

1、go mod使用介绍

go mod是go官方包管理工具,是 golang 1.11 新加的特性, 稳定版本建议使用golang 1.12

是否启用go mod

GO111MODULE环境变量设置, 注:version > go 1.13 之后, 无需设置

GO111MODULE 有三个值:off, onauto(默认值)

  • 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/netgoogle.golang.org/grpc 被墙,ping github.com时间不稳定

设置GOPROXY环境变量能解决被墙问题,但会代理所有包,包括私有库,如git.100tal.com的,proxy不存在私有库信息,拉包失败

解决方式:

搭建wangxiao goproxy,使用goproxy.io官方proxy进程,可自行区分公有库和私有库,代理方式如下图:

1

自行搭建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 "[email protected]:"]                                                                                                            insteadOf = https://git.100tal.com/

或者使用命令

git config --global url."[email protected]:".insteadOf https://git.100tal.com/

git版本

git版本应>=1.8

go1.13使用:

go1.13引入GOSUMDB环境变量,不能正常使用proxy,需要:

export GOSUMDB=off,

猜你喜欢

转载自blog.csdn.net/zhw21w/article/details/129501492