go get拉取私有仓库代码
在日常开发中,大家可能使用私有仓库路比较多,比如gitlab,我是一名go程序员,当我想使用我gitlab中其他仓库的代码应该怎么做呢?
今天下午折腾了一下,也遇到了不少坑,放在这里给自己做笔记,同时为大家提供思路
环境
假设:
你的GITLAb仓库: https://gitlabdemo.com
代码仓库: https://gitlabdemo.com/godemo
前提
- gitlab需要配置为域名模式
- 代码需要发布release
- 本地需要添加gitlab的ssh验证
gitlab配置域名
vi /etc/gitlab/gitlab.rb
需要修改域名、证书修改完成后,重新编译gitlab
gitlab-ctl reconfigure
理论上来说就可以通过上面配置的域名访问gitlab了,如果访问失败,可以通过下面的命令查看日志
gitlab-ctl tail
代码仓库发布release
先创建一个tag,然后在这里发布release
配置ssh访问
参考: https://blog.csdn.net/ip36900044/article/details/135022672
设置GOPRIVATE
如果不设置会默认走GOPROXY,由于是私有的,所以会失败的
go env -w GOPRIVATE=gitlabdemo.com
关闭GOSUMDB
go env -w GOSUMDB=off
拉取代码
go get gitlabdemo.com/godemo 可以看到可以拉取了
报错处理
错误:
go get 44.44.44.44:9091/godemo
go: malformed module path "44.44.44.44:9091/godemo": invalid char ':'
解决: go get 不支持IP地址
错误:
go get gitlabdemo.com/godemo
go: unrecognized import path "gitlabdemo.com/godemo ": parse https://gitlabdemo.com/godemo ?go-get=1: no go-import meta tags (meta tag 44.44.44.44:9091/godemo did not match import path gitlabdemo.com/godemo )
解决:由于历史原因,gitlab未使用域名访问,造成返回不一致,修改gitlab为域名访问后解决
错误:
get "gitlabdemo.com/godemo ": found meta tag vcs.metaImport{Prefix:"gitlabdemo.com/godemo ", VCS:"git", RepoRoot:"https://gitlabdemo.com/godemo .git"} at //gitlabdemo.com/godemo ?go-get=1
go: module gitlabdemo.com/godemo : git ls-remote -q origin in C:\Users\chenchen\go\pkg\mod\cache\vcs\832d0d40ffe890835bff3821b947a8fb208e5d9edcd72e2a05bddca3863620b7: exit status 128:
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解决: 配置SSH认证后解决