我是靠谱客的博主 甜美芹菜,最近开发中收集的这篇文章主要介绍go module导入gitlab私有库,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

go module导入gitlab私有库

gitlabprivatesubgroupgo getgo modulegoproxy
由于golang的开发,多多少少会引入一些被*的依赖,因此在使用go module管理时,我们都喜欢设置代理,这样不仅能够访问到被*的依赖库,还能加快依赖的下载速度。目前国内的不错的go-module代理地址:https://goproxy.cn。
1、添加go proxy

# direct 表示代理走不通时,使用直接连接
go env -w GOPROXY="https://goproxy.cn,direct"

2、设置私有库:

go env -w GOPRIVATE="github.com/myprivate/*,gitlab.ce/*"

设置私有库后,go会自动设置GONOPROXYGONOSUMDB两个环境变量,表示私有库不走代理,也不检查代码sum。
执行这两个步骤,可以解决大部分私有库导入问题。但是在go 1.13.3之前,如果导入的是gitlab中的且存在subgroup的依赖库(比如:gitlab.com/myname/mysubgroup/myproject),还存在这问题。
在go项目代码中,导入库时,往往需要在依赖库的版本库跟地址后面加上.git后缀(如果依赖库的根路径还有其他子包,则gitlab.com/myname/mysubgroup/myproject.git/mysubpackage),才能让go get正确下载。这里有两种情况:

  1. 依赖库使用了go module管理;
  2. 依赖库没有使用go module管理;

第一种情况: 下载完成后,go会检测依赖库的go.mod定义的包名和你导入的包名是否一致,不一致则导入失败。Fail
第二种情况:由于没有go.mod可供检查,所以可以导入。OK
这两种情况,怎么看怎么别扭。

go 1.13.3之后,支持gitlab的subgroup中的依赖库,可以不加.git后缀,但是必须具有gitlab的相应的权限,也就是带上账号密码才能查看subgroup下面的依赖库,否则gitlab只返回subgroup的路径给go get。
如果你使用了go 1.13.3及之后的版本,则可以在HOME目录下编辑.netrc文件(这玩意也可以用来保存github的账号密码,避免每次都要输入账号密码),没有则创建,输入以下文本,并保存:

machine gitlab.mydomain
login username 
password mypassword

配置完之后,则可以使用以下命令下载依赖包,并且可以在项目中正常导入依赖包:

go get -v gitlab.com/myname/mysubgroup/myproject/mysubpakcage

另外:
使用自建gitlab,版本须在11.7.0及之后,此版本后,才支持go使用basic auth,也就是账号密码授权。gitlab官网已支持。11.7.0之前的版本需要一个warden的东西,不知道这个干嘛用的,它需要账号和token授权,可能需要在自建gitlab服务端配置才能生效。

最后

以上就是甜美芹菜为你收集整理的go module导入gitlab私有库的全部内容,希望文章能够帮你解决go module导入gitlab私有库所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部