为什么需要私有库?当团队经过多个 GO 项目沉淀以后,我们常常会把一些常用的方法、函数、内部包提取出来作为一个单独的项目,同时我们暂时也不考虑开源。此时我们可以建立自己的私有库,这样新项目可以复用之前的经验、代码。
注意:
1.go version 大于 1.13
2.默认你已经在公司内部搭建的 gitlab 上建立了项目 XXX,并且 gitlab 已配置好了域名。
1.设置免密 clone,根据不同操作系统创建 netrc 文件
以下特别注意:netrc 文件内容有三个地方需要替换:
host 替换为你 gitlab 的域名,如:gitlab.company.com
username 替换为你拉取代码时的 git username
APIKEY 替换为 gitlab 生成的 access_token
-
unix 操作系统
新建文件 ~/.netrc
touch ~/.netrc
文件里面写入如下内容:
machine host login username password APIKEY
-
Windows 操作系统
a.设置环境变量
HOME
值为:C:\Users\name ,注意:name 替换为你的账户名b.在 C:\Users\name 目录下新建 _netrc 文件, 注意:name 替换为你的账户名
machine host login username password APIKEY
生成access token 方法:
a.点击头像 -> Settings -> Access Tokens
b.填入相关信息
c.点击创建按钮后会出现一串token,记得保存下来。
2.将环境变量
GO111MODULE="on"
3.将环境变量 GOPRIVATE(你 gitlab 的域名)
GONOPROXY="gitlab.company.com"
4.设置环境变量 GOPROXY
GOPROXY="https://goproxy.cn,direct"
5.最后当然是拉代码拉:
进入项目根目录下运行命令:
go get -insecure gitlab.company.com/repo/gopkgs
-insecure 选项代表跳过 https 验证
此时你就可以在你的其他项目里面通过 import 导入私有库的包并使用啦。
package main
import (
"gitlab.company.com/repo/gopkg/cache"
)
func main() {
cache.Init()
}
注意:
1.由于gitlab版本bug导致,私有项目路径层级不能超过2级: 只能这样: gitlab.xxx.com/repo/cache, 而 gitlab.xxx.com/repo/cc/cache 这样则不行
2.项目根目录下必须要有 go.mod 文件,同时 module 要定义成这样: gitlab.xxx.com/repo/cache