• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    go mod私有仓库配置小结

    发布者: 娅水9213 | 发布时间: 2025-8-14 11:32| 查看数: 98| 评论数: 0|帖子模式

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

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

    假如想配置托管站点
    1. gitlab.example.cn
    复制代码
    ,按照如下步骤操作:
    设置GOPRIVATE环境变量,防止走代理:

    • go env -w GOPRIVATE=*.gitlab.example.cn/*
    • go env -w GONOPROXY=*.gitlab.example.cn/*
    配置仓库访问权限,有两种方式:

    • 方式一(推荐): 配置git将请求从ssh转换为https:git config --global url."ssh://git@gitlab.example.cn/".insteadof "https://gitlab.example.cn/"
    • 方式二:添加仓库访问Token: git config --global http.extraheader "RIVATE-TOKEN: YOUR_PRIVATE_TOKEN"
    由于访问不到验证服务器,如下方式二选一:

    • 方式一:go env -w GONOSUMDB=gitlab.example.com/*
    • 方式二:关闭验证服务 go env -w GOSUMDB=off
    如果私有库不支持https协议,设置跳过CA证书校验:go env -w GOINSECURE='gitlab.example.com/*'
    配置完成后可以
    1. git config -l
    复制代码
    查看git配置,也可以通过.gitconfig直接编辑git配置:
    1. [http]
    2.         extraheader = PRIVATE-TOKEN:UsQsxy5q_Nqy-pXHtu-V
    3.        
    4. [url "ssh://git@gitlab.example.cn/"]
    5.         insteadof = https://gitlab.example.cn/
    复制代码
    通过
    1. go env
    复制代码
    查看环境变量配置,也可以直接通过profile配置环境变量:
    1. export GOPRIVATE=*.gitlab.example.com/*
    2. export GONOPROXY=*.gitlab.example.com/*
    3. export GOINSECURE=*.gitlab.example.com/*
    4. export GONOSUMDB=*.gitlab.example.com/*
    复制代码
    配置代码托管站点


    Go mod寻找代码仓库原理
    1. https://pkg.go.dev/cmd/go#hdr-Remote_import_paths
    复制代码
    如果import路径不是已知的代码托管站点并且也缺少版本控制限定符,则go工具会尝试通过https/http获取导入并在文档的
    1. HTML <head>
    复制代码
    中查找
    1. <meta>
    复制代码
    标记。
    元标记的形式如下:
    1. <meta name="go-import" content="import-prefix vcs repo-root">
    复制代码
    使用mod时,会识别
    1. go-import
    复制代码
    元标记的附加变体,并且优先级高于那些默认的版本控制系统。该变体使用
    1. mod
    复制代码
    作为内容值中的
    1. vcs
    复制代码
    ,如下所示:
    1. <meta name="go-import" content="example.org mod https://code.org/moduleproxy">
    复制代码
    此标签表示从 URL
    1. https://code.org/moduleproxy
    复制代码
    上的模块代理中获取路径以
    1. example.org
    复制代码
    开头的模块。有关代理协议的详细信息, 请参阅https://golang.org/ref/mod#goproxy-protocol 。
    查找模块路径的存储库:https://go.dev/ref/mod#vcs-find

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

    一般主流的代码托管站站点如github,gitlab,Gitee等,都默认支持返回站点的golang mod元数据。
    如果无法对外暴露站点的域名,且甚至无法拥有更改站点访问地址的权限。比如,部署站点的时候是以
    1. ip+port
    复制代码
    的方式访问。这时需要配置一个虚拟的域名作为go mod的引用包路径,这时可以使用Nginx配置站点的内网访问代理,返回带有元标记的静态页面。例如要访问站点
    1. gitlab.example.com
    复制代码
    1. if ($args ~* "^go-get=1") {
    2.                         set $condition goget;
    3.         }
    4.         if ($uri ~ "(/[^/]+/[^/]+)(/.*)?") {
    5.                         set $condition "${condition}path";
    6.         }
    7.         if ($condition = gogetpath) {
    8.                         return 200 "<!DOCTYPE html><html><head><meta content='gitlab.example.com$1 git https://gitlab.example.com$1.git' name='go-import'></head></html>";
    9.         }
    复制代码
    参考:https://stackoverflow.com/questions/26347516/using-go-get-on-a-personal-git-repo
    到此这篇关于go mod私有仓库配置小结的文章就介绍到这了,更多相关go mod私有仓库配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表