Golang Private Lab
从gitlab私有仓库获取golang依赖包 例如golang go.mod文件中有如下配置信息
module agent
go 1.13
require (
...
moove/libvirt/libvirt-go v1.0.0
)
replace moove/libvirt/libvirt-go => 10.0.45.221/moove/libvirt-go v1.0.5 # 替换成本地库
此时就需要配置10.0.45.221 这个gitlab仓库作为golang的私有仓库下载libvirt包
配置通过ssh 访问gitlab
- 生成ssh公私钥对。
ssh-keygen -t rsa -C "example@example.com" -b 4096 #-t 表示秘钥类型 -C comment信息
-
秘钥名称可以默认,也可以自定义,如果自定义参考步骤5 passphrase 是指使用这个秘钥时需要的认证密码,一般我都不会再设置了,省的麻烦,毕竟是自己的电脑相对安全一些。如果非个人电脑建议配置简单秘钥。
-
复制~/.ssh/ 目录下生成的公钥信息到系统剪切板
- 登录gitLab账户,找到SSH选项,配置公钥信息
- 复制粘贴公钥到空白区域,填写title信息,title不重要,可以随便起
-
添加秘钥即可Add Key
-
如果生成的秘钥名称不是默认的秘钥名称,则需要进行如下操作,将秘钥信息纳管到ssh-agent服务中,并且需要在~/.ssh/config 文件中配置服务器地址信息,config文件没有创建
- 编写config文件如下
Host github.com │~ │~ HostName github.com │~ │~ PreferredAuthentications publickey │~ │~ IdentityFile ~/.ssh/11111
Host: 作为此配置的名称,可以随便命名。 HostName: 服务地址,如上就是github.com, 也可以直接配置ip地址 IdentityFile: 表示ssh生成的私钥文件路径
- 执行如下命令
eval $(ssh-agent -s) ssh-add ~/.ssh/other_id_rsa
other_id_rsa 替换成自己的私钥文件
如果通过如下命令能够正确返回登录的用户信息,则说明配置成功了
ssh -T git@github.com
此时,我们就能够通过git git@example/example.git 命令以ssh的方式下载代码了。
git 配置
git config --global url."git@10.0.45.221:".insteadof "http://10.0.45.221/"
此处的–global配置也可以改成–local,只有某个项目使用这个替换方式,即将http访问数据包的方式修改为通过ssh访问
golang 环境配置
go env -w GO111MODULE=on # 重点,启用go mod
go env -w GOPRIVATE="10.0.45.221" # 使用私有库,
go get -u -v -insecure 10.0.45.221/moove/libvirt-go@latest # 获取libvirt-go的库
提示:go get 操作 -insecure表示使用http方式请求,lastest表示获取最新版本,但是可能go.mod中需要的并不是lastest版本,所以此处要指定对版本。操作的目的是手动先下载下来版本,之后go build时就不会自动下载了。 go build去下载时都是采用https的方式,由于private lab可能不支持https所以导致下载失败。提示类似错误:go: moove/uni-network/ovn-store/go-ovn@v1.0.2: unrecognized import path “10.0.45.221/moove/uni-network/ovn-store/go-ovn” (https fetch: Get https://10.0.45.221/moove/uni-network/ovn-store/go-ovn?go-get=1: dial tcp 10.0.45.221:443: connect: no route to host)
重点是配置开启MODULE模式,以及配置私有golang仓库的地址