【golang】go mod私有仓库配置

文章目录

  • Golang版本控制
    • go mod使用私有仓库(gitlab)依赖设置
    • 配置代码托管站点
      • Go mod寻找代码仓库原理
      • 使用代理实现代码托管站点访问

Golang版本控制

go version v1.22.0

当我们新建一个go项目时,在项目根目录下执行go mod init可以初始化go.mod文件用于管理包依赖。后续执行go mod tidy更新并下载所有的依赖包。
如果我们没有进行配置,则只能访问公共开源仓库。如果想要下载私有仓库依赖包则需要进行一些配置。

go mod使用私有仓库(gitlab)依赖设置

假如想配置托管站点gitlab.example.cn,按照如下步骤操作:

  1. 设置GOPRIVATE环境变量,防止走代理:
    • go env -w GOPRIVATE=*.gitlab.example.cn/*
    • go env -w GONOPROXY=*.gitlab.example.cn/*
  2. 配置仓库访问权限,有两种方式:
    • 方式一(推荐): 配置git将请求从ssh转换为https:git config --global url."ssh://git@gitlab.example.cn/".insteadof "https://gitlab.example.cn/"
    • 方式二:添加仓库访问Token: git config --global http.extraheader "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN"
  3. 由于访问不到验证服务器,如下方式二选一:
    • 方式一:go env -w GONOSUMDB=gitlab.example.com/*
    • 方式二:关闭验证服务 go env -w GOSUMDB=off
  4. 如果私有库不支持https协议,设置跳过CA证书校验:go env -w GOINSECURE='gitlab.example.com/*'

配置完成后可以git config -l查看git配置,也可以通过.gitconfig直接编辑git配置:

[http]extraheader = PRIVATE-TOKEN:UsQsxy5q_Nqy-pXHtu-V[url "ssh://git@gitlab.example.cn/"]insteadof = https://gitlab.example.cn/

通过go env查看环境变量配置,也可以直接通过profile配置环境变量:

export GOPRIVATE=*.gitlab.example.com/*
export GONOPROXY=*.gitlab.example.com/*
export GOINSECURE=*.gitlab.example.com/*
export GONOSUMDB=*.gitlab.example.com/*

配置代码托管站点

Go mod寻找代码仓库原理

https://pkg.go.dev/cmd/go#hdr-Remote_import_paths

如果import路径不是已知的代码托管站点并且也缺少版本控制限定符,则go工具会尝试通过https/http获取导入并在文档的HTML <head>中查找<meta>标记。

元标记的形式如下:

<meta name="go-import" content="import-prefix vcs repo-root">

使用mod时,会识别go-import元标记的附加变体,并且优先级高于那些默认的版本控制系统。该变体使用mod作为内容值中的vcs,如下所示:

<meta name="go-import" content="example.org mod https://code.org/moduleproxy">

此标签表示从 URLhttps://code.org/moduleproxy上的模块代理中获取路径以 example.org开头的模块。有关代理协议的详细信息, 请参阅https://golang.org/ref/mod#goproxy-protocol 。

查找模块路径的存储库:https://go.dev/ref/mod#vcs-find

使用代理实现代码托管站点访问

一般主流的代码托管站站点如github,gitlab,Gitee等,都默认支持返回站点的golang mod元数据。
如果无法对外暴露站点的域名,且甚至无法拥有更改站点访问地址的权限。比如,部署站点的时候是以ip+port的方式访问。这时需要配置一个虚拟的域名作为go mod的引用包路径,这时可以使用Nginx配置站点的内网访问代理,返回带有元标记的静态页面。例如要访问站点gitlab.example.com

if ($args ~* "^go-get=1") {set $condition goget;}if ($uri ~ "(/[^/]+/[^/]+)(/.*)?") {set $condition "${condition}path";}if ($condition = gogetpath) {return 200 "<!DOCTYPE html><html><head><meta content='gitlab.example.com$1 git https://gitlab.example.com$1.git' name='go-import'></head></html>";}

参考:https://stackoverflow.com/questions/26347516/using-go-get-on-a-personal-git-repo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37929.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Data与多数据源配置

Spring Data与多数据源配置 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨如何在Spring Data中配置和使用多个数据源。 在现代应用程序中&…

计算机相关术语科普之什么叫网关(Gateway)

网关&#xff08;Gateway&#xff09;是一个在计算机网络中起到关键作用的设备或系统&#xff0c;它扮演着网络间连接器或协议转换器的角色。 一、定义与功能 1&#xff09;定义&#xff1a; 网关是在不同网络之间实现互连的复杂设备&#xff0c;仅用于两个高层协议不同的网…

【PYG】Planetoid中边存储的格式,为什么打印前十条边用edge_index[:, :10]

edge_index 是 PyTorch Geometric 中常用的表示图边的张量。它通常是一个形状为 [2, num_edges] 的二维张量&#xff0c;其中 num_edges 表示图中边的数量。每一列表示一条边&#xff0c;包含两个节点的索引。 实际上这是COO存储格式&#xff0c;官方文档里也有写&#xff0c;…

Web 品质标准

Web 品质标准 引言 随着互联网的快速发展,Web应用已经渗透到我们生活的方方面面。为了确保Web应用的质量,提高用户体验,Web品质标准应运而生。这些标准涵盖了多个方面,包括性能、安全性、可访问性、用户体验等。本文将详细介绍这些标准,并探讨它们在实际开发中的应用。 …

上位机图像处理和嵌入式模块部署(mcu 项目1:固件编写)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 说完了上位机的开发&#xff0c;接下来就是固件的开发。前面我们说过&#xff0c;目前使用的开发板是极海apm32f103的开发板。它自身包含了iap示例…

一些迷你型信息系统

只有一个表&#xff0c;比较简单易用&#xff1b; 1 博物馆信息查询系统 信息录入&#xff0c;浏览&#xff0c;添加&#xff0c;更新&#xff0c;删除&#xff1b; 下载&#xff0c; https://download.csdn.net/download/bcbobo21cn/89505217

中国网络安全审查认证和市场监管大数据中心数据合规官CCRC-DCO

关于CCRC-DCO证书的颁发机构&#xff0c;它是由中国网络安全审查认证与市场监管大数据中心&#xff08;简称CCRC&#xff09;负责。 该中心在2006年得到中央机构编制委员会办公室的批准成立&#xff0c;隶属于国家市场监督管理总局&#xff0c;是其直辖的事业单位。 依据《网络…

计算机的错误计算(十八)

摘要 计算机的错误计算&#xff08;四&#xff09;指出一元二次方程的计算精度问题。本节给出其一种解决方案。 计算机的错误计算&#xff08;四&#xff09;与&#xff08;十七&#xff09;分别指出一元二次方程的求解是具有挑战性的难题&#xff0c;其出错原因是因为相减相消…

YOLOv10(7):YOLOv10训练(以训练VOC数据集为例)

YOLOv10&#xff08;1&#xff09;&#xff1a;初探&#xff0c;训练自己的数据_yolov10 训练-CSDN博客 YOLOv10&#xff08;2&#xff09;&#xff1a;网络结构及其检测模型代码部分阅读_yolov10网络结构图-CSDN博客 YOLOv10&#xff08;4&#xff09;&#xff1a;损失&…

汽车之家论坛评论全面采集实战指南:Python爬虫篇

聚焦汽车之家&#xff0c;解锁评论宝藏 在这个数据为王的时代&#xff0c;每一个角落的信息都可能成为宝贵的洞察来源。汽车之家&#xff0c;作为汽车行业内的权威论坛&#xff0c;其海量的用户评论不仅是消费者购车的重要参考&#xff0c;也是汽车品牌与市场研究者不可忽视的…

【Android面试八股文】在你之前的Android项目中,你是如何进行性能优化的?

在之前的Android项目中,优化和提升性能是一个重要且常见的任务。 以下是一些常用的性能优化方法和策略: 分析和测量: 使用Android Studio中的Profiling工具(如Profiler、Trace等)进行性能分析,识别CPU、内存和网络使用情况。使用第三方工具(如Systrace)来分析系统层面…

iOS 练习项目 Landmarks (四):添加 AutoLayout 约束

iOS 练习项目 Landmarks &#xff08;四&#xff09;&#xff1a;添加 AutoLayout 约束 iOS 练习项目 Landmarks &#xff08;四&#xff09;&#xff1a;添加 AutoLayout 约束新增 topLabel图片视图圆形裁切阴影使用 AutoLayout 为详情页的组件添加约束DetailViewControllerDe…

如何在 Logback 和 Log4j 中获取日志:一个开发者指南

日志记录是软件开发中的关键实践&#xff0c;它帮助我们监控应用程序的行为&#xff0c;定位问题并优化性能。在 Java 生态系统中&#xff0c;Logback 和 Log4j 是两个广泛使用的日志框架&#xff0c;它们都基于 SLF4J API 提供日志服务。本文将指导你如何在这两个框架中获取日…

7-490 将字符串“software“赋给一个字符指针,并从第一个字母开始间隔地输出该串(简单字符串)

编程将字符串"software"赋给一个字符指针 然后从第一个字母开始间隔地输出该串 请用指针法完成。 输入样例: 在这里给出一组输入。例如&#xff1a; 无输入输出样例: 在这里给出相应的输出。例如&#xff1a; sfwr #include <stdio.h> #include <stri…

Linux环境下快速部署Spring Boot应用:高效命令组合实践

概要&#xff1a; 本文旨在介绍一种高效的Linux命令组合&#xff0c;用于简化Spring Boot项目的部署与管理流程。通过结合使用nohup、java -jar、输出重定向以及进程管理命令&#xff0c;我们能够实现Spring Boot应用的快速后台启动及便捷的进程控制&#xff0c;尤其适合于自动…

什么是 JVM( Java 虚拟机),它在 Java 程序执行中扮演什么角色?

JVM&#xff0c;全称Java Virtual Machine&#xff0c;中文译作“Java虚拟机”&#xff0c;它是运行Java程序的软件环境&#xff0c;也是Java语言的核心部分之一。 想象一下&#xff0c;如果你是一位环球旅行家&#xff0c;每到一个新的国家&#xff0c;都需要学习当地的语言才…

【Linux】初识操作系统

一、冯•诺依曼体系结构 在学习操作系统之前&#xff0c;我们先来认识一下冯•诺依曼体系结构&#xff0c;我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&am…

神经网络训练(一):基于残差连接的图片分类网络(ResNet18)

目录 一、简介:二、图片分类网络1.记载训练数据(torch自带的cifa10数据集)2.数据增强3.模型构建4.模型训练三、完整源码及文档一、简介: 基于残差连接的图片分类网络,本网络使用ResNet18作为基础模块,根据cifa10的特点进行改进网络,使用交叉熵损失函数和SGD优化器。本网…

使用pyqt5编写一个七彩时钟

使用pyqt5编写一个七彩时钟 效果代码解析定义 RainbowClockWindow 类初始化用户界面显示时间方法 完整代码 在这篇博客中&#xff0c;我们将使用 PyQt5 创建一个简单的七彩数字时钟。 效果 代码解析 定义 RainbowClockWindow 类 class RainbowClockWindow(QMainWindow):def _…

【TB作品】温湿度监控系统设计,ATMEGA16单片机,Proteus仿真

题2:温湿度监控系统设计 功能要求: 1)开机显示时间(小时、分)、时分可修改; 2)用两个滑动变阻器分别模拟温度传感器(测量范 围0-100度)与湿度传感器(0-100%),通过按键 可以在数码管切换显示当前温度值、湿度值; 3)当温度低于20度时,红灯长亮; 4)当湿度高于70%时,黄灯长亮; 5)当…