Go语言公司gitlab私有仓库依赖拉取配置的两种实现方式

 更新时间:2025年11月02日 10:07:35   作者:li_zehao  
文章主要介绍了如何在Go语言中管理私有仓库依赖,Go语言目前使用官方的gomodules来管理依赖,对于公有仓库使用goget直接操作即可,但私有仓库则需要额外的配置,下面就来详细的介绍一下如何配置,感兴趣的可以了解一下

为什么要考虑私有仓库

Go语言目前都已经采用了官方统一的 go modules 来管理依赖,后续也不太可能出现比较乱的生态, 因此了解下如何让这个依赖管理正常工作是非常必要的。

对于Github或者其他公有仓库,依赖管理是非常直接和方便的,设置好GOPROXY后,使用 go get去直接操作依赖,是不会报错的,很方便直接, 但是对于一些公司或者组织,一些代码不能公开的, 那就涉及到私有依赖管理了, 通常而言,直接使用go get 肯定会报错,去网上搜搜也不太全,设置完git url替换 之后,依然会报错。 本文主要是讲述,如何进行开发设置而不报错。

对于没有子目录的gitlab项目

如下面这种方式:

# 仓库地址
https://gitlab.com/group/project

# gomodule 名称为
gitlab.com/group/project

可以使用如下命令进行设置, 设置完成之后,则可以通过 go get自动获取到依赖

# 设置GOPRIVATE环境变量
go env -w  GOPRIVATE=gitlab.com
go env -w  GOPRIVATE=gitlab.bitmartpro.com

# 设置URL替换,把https转为ssh获取依赖
git config --global url."git@gitlab.com".insteadOf "https://gitlab.com"
git config --global url."git@gitlab.bitmartpro.com:".insteadOf "https://gitlab.bitmartpro.com/"

# 如果遇到https报错,可以设置如下,如果本身就是正常的https就不用去管了
git config --global http.sslVerify false

按照如上方法设置一下,你就能轻松通过 go get来获取到私有的依赖,但这种方式有一个弊端,就是如果项目放在子目录下面,则依赖获取仍然会失败,下面就会讲一下两种在子目录存在的情况下,如何正常去获取私有依赖的方法。

对于子目录的gitlab项目

如下面这种方式

# 项目地址
https://gitlab.com/group/subgroup/project

# go module 名称
gitlab.com/group/subgroup/project

即使我们设置了正常的ssh key,和git的url替换,仍然会得到报错

The project you were looking for could not be found or you don't have permissions to view it. 

当我们用搜索引擎去搜去解决问题的时候,我们基本上搜到的结果都是让你去改 go module 的名称,如下

rm go.mod go.sum
go mod init gitlab.com/myuser/foogroup/barlib.git
go mod tidy
 
cd /go/src/another_project
go get gitlab.com/myuser/foogroup/barlib.git

它要求,必须要以 .git结尾,这样是一种比较简单的解决方案,但是正常的go module 命名一般是不带 .git 结尾的。 发生这种情况的原因是,它go get尝试发现给定路径上的模块以找到请求的 Go 模块存储库。只有找到存储库后,工具才会执行git clone或git checkout使用 SSH 密钥进行身份验证。问题归结为这样一个事实:如果没有 Gitlab 访问令牌,就无法列出/查看私有Gitlab 子组。 所以这个时候,我们就要用到下面这种方法。

  1. 在gitlab中创建token Gitlab->Preferences->Access Tokens
  2. 对于windows系统, 你可以先设置一个HOME的环境变量,指向你的用户目录,然后在用户目录下创建 _netrc文件; 对于Mac/Linux 则可以直接创建 ~/.netrc 文件
  3. 按照如下方式编辑 ~/.netrc 文件
machine gitlab.com
    login my_gitlab_username
    password my_gitlab_token
  • 上述machine是指你的gitlab仓库的地址
  • login 则为你的gitlab的用户名
  • password就是第一步创建的gitlab访问token

结合如上几种方式,你应该可以完整的解决掉你的go 获取私有依赖的问题。

到此这篇关于Go语言公司gitlab私有仓库依赖拉取配置的文章就介绍到这了,更多相关Go语言 gitlab私有仓库依赖拉取内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • GoFrame框架数据校验之校验结果Error接口对象

    GoFrame框架数据校验之校验结果Error接口对象

    这篇文章主要为大家介绍了GoFrame框架数据校验之校验结果Error接口对象示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Go语言实现的web爬虫实例

    Go语言实现的web爬虫实例

    这篇文章主要介绍了Go语言实现的web爬虫,实例分析了web爬虫的原理与Go语言的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Go语言的Channel遍历方法详解

    Go语言的Channel遍历方法详解

    这篇文章主要介绍了Go语言的Channel遍历方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 聊聊Golang性能分析工具pprof的使用

    聊聊Golang性能分析工具pprof的使用

    对于线上稳定运行的服务来说, 可能会遇到 cpu、mem 利用率升高的问题,那我们就需要使用 pprof 工具来进行性能分析,所以本文就来和大家讲讲pprof的具体使用吧
    2023-05-05
  • golang 连接mongoDB的方法示例

    golang 连接mongoDB的方法示例

    这篇文章主要介绍了golang 连接mongoDB的方法示例,详细的介绍了golang的基础知识和连接mongoDB的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Golang gRPC HTTP协议转换示例

    Golang gRPC HTTP协议转换示例

    这篇文章主要为大家介绍了Golang gRPC HTTP协议转换示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Golang如何将上传的文件压缩成zip(小案例)

    Golang如何将上传的文件压缩成zip(小案例)

    这篇文章主要介绍了Golang如何将上传的文件压缩成zip(小案例),这是一个简单的golang压缩文件小案例,可做很多的拓展,这里使用的库是archive/zip,在gopkg里面搜zip就行,需要的朋友可以参考下
    2024-01-01
  • go语言打包的网页wasm示例详解

    go语言打包的网页wasm示例详解

    这篇文章主要为大家介绍了go打包网页wasm示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2022-09-09
  • 解密Golang中Request对象的操作

    解密Golang中Request对象的操作

    这篇文章主要和大家深入探讨 Golang 中的 Request 对象,并从多个方面介绍其功能、结构和使用方法,文中的示例代码讲解详细,感兴趣的可以了解一下
    2023-05-05
  • goland中文件头自动注释的操作

    goland中文件头自动注释的操作

    这篇文章主要介绍了goland中文件头自动注释的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论