go mod 添加 gitlab 私有仓库

警告
本文最后更新于 2022-04-17,文中内容可能已过时。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 设置私有仓库的git地址
go env -w GOPRIVATE="git@gitlab.xxx.cn"

# 允许设置不安全访问,配置后可请求到 http 地址的仓库
go env -w GOINSECURE="gitlab.xxx.cn"

# 设置请求该地址不需要代理,即GOPROXY
go env -w GONOPROXY="gitlab.xxx.cn"

# 设置不验证sum包的签名
go env -w GONOSUMDB="gitlab.xxx.cn"

如果要拉取的库是私有的,需要配置秘钥,可以使用以下命令:

1
2
3
4
# 1. 创建私有仓库的秘钥 (该步骤省略,每个平台不一样)

# 2. 设置秘钥
$ git config --global http.extraheader "PRIVATE-TOKEN:上面配置的秘钥"

这一步是为了解决不方便用ssh拉取时,选用http拉取

1
$ git config --global url."git@gitlab.xxx.cn".insteadOf "https://gitlab.xxx.cn"

这一步可以直接省略第 2、3 两个步骤,直接使用 .netrc 文件(文件路径: ~/.netrc ),如下:

1
machine gitlab.xxx.cn login 用户名 password 上面设置的秘钥

使用该步骤还可以解决掉一个 gitlab 的一个不能拉取子组库的问题: Go get fails with the usage of subgroups,比如:

1
2
3
# 如下拉取命令如果不使用步骤4的话就会报错 
# 因为由于gitlab的限制,最多只能拉取到一个层级,即 gitlab.xxx.cn/a/b.git
$ go get -u gitlab.xxx.cn/a/b/c.git