You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需Git仓库及Git服务器发布自定义域名的Go包/模块?

无需Git服务器发布Go模块到自定义域名的方法

完全可以不用在你的域名上运行Git服务器,只通过HTTP提供元数据文件和模块归档包,就能让Go工具正常识别并拉取你的模块。核心是要符合Go模块的下载规范,以下是具体实现步骤:

1. 准备模块归档文件

  • 把你的Go模块代码打包成zip格式,文件名必须遵循module@version.zip的格式,比如my.domain.tld/something@v1.0.0.zip。版本号要符合Go的语义化版本规范,比如v1.0.0、v1.1.2-beta.1这类。
  • 确保zip包解压后,根目录是module@version的结构:比如解压my.domain.tld/something@v1.0.0.zip后,根文件夹为something@v1.0.0,所有代码文件都在这个文件夹下。

2. 提供模块元数据文件

你需要在域名下提供几个关键的元数据文件,路径和内容要严格匹配规范:

go.mod文件

在https://my.domain.tld/something/go.mod路径下放你的模块的go.mod文件,内容和本地模块的go.mod一致,示例:

module my.domain.tld/something

go 1.21

版本列表文件

在https://my.domain.tld/something/@v/list路径下,每行写一个已发布的版本号,示例:

v1.0.0
v1.0.1

版本详情文件

针对每个版本,提供https://my.domain.tld/something/@v/{version}.info文件,内容为JSON格式,包含版本的基础信息,示例:

{
  "Version": "v1.0.0",
  "Time": "2024-05-20T12:00:00Z"
}

版本归档文件路径

把之前打包好的zip文件放在https://my.domain.tld/something/@v/{version}.zip路径下,比如https://my.domain.tld/something/@v/v1.0.0.zip。

3. 配置Go工具拉取模块

用户使用你的模块时,需要让Go工具能正确找到源:

  • 在项目的go.mod中直接引入模块:
    require my.domain.tld/something v1.0.0
    
  • 如果你的域名没有配置默认的模块代理,用户需要设置GOPROXY环境变量,把你的域名加入,示例:
    export GOPROXY=https://my.domain.tld,https://proxy.golang.org,direct
    
    也可以在项目的go.env文件中配置该变量。

注意事项

  • 所有HTTP请求要返回正确的Content-Type:zip文件返回application/zip,JSON文件返回application/json,文本文件返回text/plain。
  • 路径和命名必须严格符合Go模块规范,否则Go工具会无法识别。
  • 如果用HTTPS,要确保证书有效;如果用HTTP,需要用户设置GOSUMDB=off或者在GOPRIVATE中添加你的域名。

内容的提问来源于stack exchange,提问作者hasen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 20:49:55