Golang使用私有库
目录
使用golang在日常开发中有很多常用的库和自定义函数,每个项目都复制一份比较麻烦,可以将这些常用的代码集成到 一个公共库中。
创建utils库
mkdir go_utils && cd go_utils
git init
git remote add origin golang@git.68hub.com:golang/go_utils.git
使用go mod init
初始化
⚠️注意:go mod init 需要带上完整的私有仓库地址(私有git服务的地址) 否则在项目引用此库时会出现如下错误
go: git.68hub.com/golang/go_utils@v0.0.2: parsing go.mod:
module declares its path as: git.68hub.com/go_utils
but was required as: git.68hub.com/golang/go_utils
正确做法: go mod init {私有git域名}/{账户名}/{仓库名}
go mod init git.68hub.com/golang/go_utils
此时go_utils中会有一个go.mod
的文件
module git.68hub.com/golang/go_utils
go 1.18
私有库部署到git服务器上
在go_utils
中添加常用函数,打上tag
并提交到私有git服务器上
git commit -am 'blog.68hub.com'
git tag -a v0.0.1 -m 'first tag'
git push origin master
git push origin v0.0.1
项目中使用私有库
配置 GOPRIVATE
环境变量
echo export GOPRIVATE="*.68hub.com" > ~/.bashrc && source ~/.bashrc
环境变量 GOPRIVATE 用来控制 go 命令把哪些仓库看做是私有的仓库,这样的话,就可以跳过 proxy server 和校验检查,这个变量的值支持用逗号分隔,可以填写多个值,拥有多个私有仓库地址时可以使用,
隔开; GOPRIVATE="*.68hub.com,gitlab.com/acuser"
私有仓库可能在go get
的时候出现 unrecognized import path
这是由于私有仓库的证书问题导致的。可以添加以下环境变量
GOINSECURE="*.68hub.com"
更新git配置文件
$ git config --global url.golang@git.68hub.com:.insteadOf https://git.68hub.com/
$ cat ~/.gitconfig
[url "golang@git.68hub.com:"]
insteadOf = https://golang.68hub.com/
在项目中使用私有库
go get -u git.68hub.com/golang/go_utils
References
阅读其他文章