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服务端配置才能生效。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值