Go语言中,公司gitlab私有仓库依赖拉取配置

2024-06-04 21:36

本文主要是介绍Go语言中,公司gitlab私有仓库依赖拉取配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为什么要考虑私有仓库

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 tidycd /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.comlogin my_gitlab_usernamepassword my_gitlab_token
  • 上述machine是指你的gitlab仓库的地址
  • login 则为你的gitlab的用户名
  • password就是第一步创建的gitlab访问token

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

这篇关于Go语言中,公司gitlab私有仓库依赖拉取配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1031185

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

IDEA配置Tomcat远程调试

因为不想把本地的Tomcat配置改乱或者多人开发项目想测试,本文主要是记录一下,IDEA使用Tomcat远程调试的配置过程,免得一段时间不去配置到时候忘记(毕竟这次是因为忘了,所以才打算记录的…) 首先在catalina.sh添加以下内容 JAVA_OPTS="-Dcom.sun.management.jmxremote=-Dcom.sun.management.jmxremote.port

人工和AI大语言模型成本对比 ai语音模型

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。 上一专题搭建了一套GMM-HMM系统,来识别连续0123456789的英文语音。 但若不是仅针对数字,而是所有普通词汇,可能达到十几万个词,解码过程将非常复杂,识别结果组合太多,识别结果不会理想。因此只有声学模型是完全不够的,需要引入语言模型来约束识别结果。让“今天天气很好”的概率高于“今天天汽很好”的概率,得到声学模型概率高,又符合表达

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、

C语言 将“China”译成密码

将“China”译成密码,密码规律是:用原来的字母后面的第4个字母代替原来的字母。例如,字母“A”后面的第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。编译程序用付赋初值的方法使c1,c2,c3,c4,c5这五个变量的值分别为“C”,“h”,“i”,“n”,“a”,经过运算,使c1,c2,c3,c4,c5分别变成“G”,“l”,“m”,“r”,“e”。分别用put

微信小程序开发必知必会:文件结构和基本配置

一、微信小程序基本文件结构 1.  project.config.json:项目的基本配置文件,包括项目名称、appid、项目目录、页面文件夹等。     {"setting": {"urlCheck": false,"es6": true,"postcss": true,"nodeModulesPath": "D:\\\\node_modules"},"appid": "wxd678e

C语言入门系列:探秘二级指针与多级指针的奇妙世界

文章目录 一,指针的回忆杀1,指针的概念2,指针的声明和赋值3,指针的使用3.1 直接给指针变量赋值3.2 通过*运算符读写指针指向的内存3.2.1 读3.2.2 写 二,二级指针详解1,定义2,示例说明3,二级指针与一级指针、普通变量的关系3.1,与一级指针的关系3.2,与普通变量的关系,示例说明 4,二级指针的常见用途5,二级指针扩展到多级指针 小结 C语言的学习之旅中,二级