模块开发
参考资料:
从私有仓库安装模块: https://go.dev/doc/faq#git_https
GOPRIVATE: https://go.dev/doc/modules/managing-dependencies#proxy_server
案例
1. ssh方式安装私有仓库的go模块
假设创建私有仓库 https://gitee.com/luzhenxiong/go-module-demo
go mod init gitee.com/luzhenxiong/go-module-demo
提供模块内容
package driver
func Sum(a int, b int) int {
return a + b
}
按照文档配置ssh连接

配置环境变量GOPRIVATE
export GOPRIVATE=gitee.com/luzhenxiong/go-module-demo
如果不配置,代理服务器将以https的方式访问仓库,导致无法访问。
2. 变更模块版本
还是 https://gitee.com/luzhenxiong/go-module-demo
这个仓库,假设开发v2版本
修改go.mod
module gitee.com/luzhenxiong/go-module-demo/v2
go 1.20
推送到仓库,然后下载安装的语句如下
go get -v gitee.com/luzhenxiong/go-module-demo/v2
如果打tag发布v2.0.1,那么下载安装的语句如下
go get -v gitee.com/luzhenxiong/go-module-demo/v2@v2.0.1
第三方案例
本地以http认证方式从私有仓库安装go模块
用户故事: ci平台有token拉取私有仓库,以下将的是本地开发环境下安装私有仓库go模块
警告
没找到从本地目录安装go模块的办法,猜测是要获取git的日期时间,而本地没有这个时间
私有仓库地址: https://e.coding.net/xxxx-devops/pkgname/module-name.git
1. 配置git认证
https://go.dev/ref/mod#private-modules
编辑 $HOME/.netrc
文件
machine e.coding.net
login jrgopher
password hunter2
2. 配置GOPRIVATE变量
https://go.dev/ref/mod#private-module-privacy
$ export GOPRIVATE=e.coding.net
这步的作用是执行go get时,若域名跟GOPRIVATE匹配上,就会在 $HOME/.netrc
匹配域名,匹配上了会在http请求上加上账号和密码的认证
3. 从私有仓库安装模块
$ go get e.coding.net/xxxx-devops/pkgname/module-name
默认情况下,是拉取git的最新标签号