Go Module使用私有仓库遇到的问题及解决方案

本文记录一些 Go Module 私有库引用中遇到的问题及解决方案

Go Module 私有库配置

Go Module使用私有库的基础操作

$ go env -w GOPRIVATE="*.corp.example.com,rsc.io/private"

GOPRIVATE 用来控制 go 命令把哪些仓库看做是私有的仓库,在处理匹配的库时,会跳过 GOPROXY 代理和校验检查。

私有库 authenticate

一般私有仓库都需要鉴权,go 命令在拉取或者构建时,会报如下的错误

fatal: could not read Username for 'https://xxxx.xxx': terminal prompts disabled

解决办法有两种

方法一

$ export GIT_TERMINAL_PROMPT=1
$ go build 

期间会提示输入用户名和密码

方法二

cat << EOF| tee -a ~/.netrc
machine github.com login USERNAME password APIKEY
EOF

替换上面的域名 , USERNAME , APIKey 为生成的 Person Access Token

私有仓库不支持 https

一般会有错误提示:

x509: certificate signed by unknown authority

解决方法:

go get -insecure xxx

-insecure会以不安全的方式( http )获取仓库内容。

如果构建时报这个错,解决方案是设置 go env

go env -w GOINSECURE="*.corp.example.com,rsc.io/private"

这种方法是针对匹配的库以不安全的方式( http )获取,其它库以安全方式获取。

以上就是个人在工作过程中遇到的关于使用私有库的问题,算是一个总结,希望可以帮助到正在阅读的你。

祝好 ^_~