背景
启动了一个新项目,做一个运维小工具,准备尝试一下 Golang。
因需要对接内部的 RABC 系统,索性封装了一个 SDK,也方便之后新项目的对接使用。
那么,怎么能够使用 go.mod 来使用私有的依赖呢?
环境
- gitlab(私有)
- golang v1.16.3
解决方案
我们需要对 Golang 做一些简单的配置。
1、使用 go module
go env -w GO111MODULE="on"
2、配置 GOPRIVATE,当使用 go get 时,指定的域名会直接通过 git 拉取。
go env -w GOPRIVATE=gitlab.***.com
3、配置 GOINSECURE,我们当前使用的是 http,而 go get 默认使用 https, 配置之后,指定域名会默认使用 http。
若私有的 gitlab 是 https 协议,可以忽略此步骤
go env -w GOINSECURE=gitlab.***.com
Golang 的配置已经做完了,若项目是私有的,也就是说,拉取项目需要登录,或者需要 ssh key。
为了方便,我们需要对 git 做一个配置,让其都使用 SSH 的形式拉取项目,这样我们就不需要在 go get 的时候输入账户密码了。
git config --global url."git@gitlab.***.com:".insteadOf "http://gitlab.***.com/"
git 修改后的结果如下:
root@3e77224cfdc1:~# more ~/.gitconfig
[url "git@gitlab.***.com:"]
insteadOf = http://gitlab.***.com/
可能需要的问题
如果我们需要做自动化,在第一次构建项目时,会遇到 ssh fingerprint 的问题。
这个是第一次获取 git 项目时,需要确认的,我们需要确保 ~/.ssh/known_hosts 中已经记录了相关信息,才能够构建成功。