go module,使用gitlab私有仓库作为项目的依赖包

40次阅读

共计 1004 个字符,预计需要花费 3 分钟才能阅读完成。

自从 golang 1.11 推出 go moudle 机制来更好的管理项目依赖后,就开始小范围尝试使用 go mod 来替换曾经的 dep,实话实说还不错,很稳定,比起 dep 以及第三方的 govendor 来说也更加方便和快速。
在曾经使用的项目上中,有一部分项目的依赖是放在 github 中的公开仓库的 (如中间件、工具包),放入公开仓库中然通过 dep 将依赖拉取到 vendor 中。
最近内部又做了个相关的依赖包,也不算工具,但这次多少跟业务有点结合,这次肯定不能放在 github public 仓库,于是就想着,放入内部的 gitlab 私有仓库中,想着以后能不能把 github 中的某一部分也迁移过来。
比如,通过 RPC 或 HTTP 调用服务时可以把公共的 struct,service,method 放入 gitlab 私有仓库中,这是必然的。
在 public 仓库好说,在 go mod init gitlab.com/groupName/projectName 后,不做任何处理直接直接 go mod vendor 会自动拉取第三方依赖。但是如果是 gitlab 等私有仓库中是 get 不下来的。
这本质上还是解决 go get 的问题。所以,接下来,我们要解决 go get 私有仓库:
获取 gitlab 的 token
进入 Gitlab—>Settings—>Access Tokens,然后创建一个 personal access token,这里权限最好选择只读 (read_repository)。
git 配置添加 access token
有了 access token 后,我们还需要在 git 中进行配置,这样才能 go get 下了私有仓库的包,需要把刚刚的 token 添加进 git 的请求头中,操作如下:
git config –global http.extraheader “PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN”

配置 git 将请求从 ssh 转换为 http
配置如下:
git config –global url.”git@gitlab.com:groupName/projectName.git”.insteadOf “https://gitlab.com/groupName/projectName.git”`

上述配置已经完成了,可以试着拉去 gitlab 私有仓库的代码:
go get -u -v gitlab.com/groupName/projectName

此时,执行 go mod vendor 也是可以正常拉取的。

正文完
 0