govanity 是什么?

govanity 是 Google 提供的 go-import meta 标签服务参考实现。它是一个单独的 Go 二进制文件,读取一个 YAML 配置文件,然后响应 ?go-get=1 请求返回正确的 meta 标签。

# govanity.yaml
paths:
  /auth:
    repo: https://github.com/org/auth-service
    vcs: git
  /logger:
    repo: https://github.com/org/logger
    vcs: git

部署它,把域名指向它,就能工作。对于合适的场景,它是一个不错的工具。


不足之处

痛点一:基础设施你自己扛

govanity 是你自己运行的二进制文件。这意味着:一台服务器(或容器)、进程管理、健康检查、日志采集,以及凌晨 3 点它崩了得有人起来处理。“不就是个小 Go 程序嘛”——直到它出问题的时刻。

痛点二:不自带 HTTPS

govanity 只提供纯 HTTP 服务。你需要在前面加一层反向代理(Nginx、Caddy、Cloudflare)来实现 HTTPS。这又是一个需要配置、监控和维护的组件。

痛点三:只有配置文件,没有 CLI

添加路由意味着编辑 YAML 文件然后重启进程。没有 govanity add 命令,没有 API,没有编程式的管理方式。5 条路由的时候没问题,50 条的时候就变成了一次部署事件。

痛点四:不支持通配或模式匹配

每条路由都必须在配置文件中单独列出。如果你的组织在 github.com/org/ 下有 100 个仓库,你得写 100 条 YAML 配置。不支持 glob,不支持模板,不支持通配符。


逐项对比

维度govanity(自托管)gvu(托管)
搭建编译二进制 + 写 YAML + 部署 + 反向代理`curl …
HTTPS手动(反向代理 + 证书管理)自动
路由管理编辑 YAML + 重启进程CLI(gvu add / gvu remove
通配路由不支持* 模式,一条规则
go-source 标签不生成自动识别 GitHub/GitLab/Bitbucket
主版本支持每条路由手动配自动(/v2/v3…)
运维负担服务器 + 进程 + 代理 + 证书
多设备同步共享配置文件(Git?)基于账户,自动
自定义域名手动 DNS + 代理配置CNAME + 自动 TLS
监控 / 告警自己搭建已包含
成本服务器费用 + 你的时间免费套餐可用

什么时候适合 govanity

govanity 适合以下场景:

  • 你所有服务都在内部运行,不能使用外部服务(合规、隔离网络)
  • 你已经有 Kubernetes + TLS 终止,不介意多一个部署
  • 你的路由列表很少变动
  • 你想研究参考实现来理解 go-import 协议

对大多数团队来说,自托管的维护税不值得。


gvu 带来了什么

零基础设施,零运维

不需要服务器,不需要二进制,不需要 YAML,不需要反向代理。装个 CLI,添加路由,搞定。你的团队专注于 Go 代码,而不是维护一个 vanity URL Web 服务器。

通配路由:一条规则覆盖所有

gvu add 'go.yourcompany.com/dept/*' 'https://github.com/org/*.git'

100 个仓库?一条规则。govanity 需要 100 条 YAML 配置。

自动生成 go-source + 主版本支持

govanity 只提供 go-import meta 标签。gvu 还会生成 go-source 标签(用于 pkg.go.dev 上的源码浏览),并自动处理 /v2/v3 导入路径。


开始使用

curl -fsSL gomodvanityurls.com/install.sh | bash
gvu add gomod.io/yourname/your-module https://github.com/your-org/your-module.git

永久免费,最多 5 条路由。无需注册。

查看所有对比 · 阅读文档