目录

使用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