跳转到内容
⚠️ 警告:Nantian Gateway 目前仍处于开发阶段,不适用于生产环境

发布流程

Nantian Gateway 采用语义化版本控制,通过 GitHub Releases 分发二进制和容器镜像,通过 Helm Chart 仓库分发部署包。本页说明完整的发布流程,供维护者参考。

Nantian Gateway 遵循 Semantic Versioning 2.0.0 规范。版本号格式为 MAJOR.MINOR.PATCH

版本类型变更内容示例
PATCH(修订)Bug 修复、安全补丁,不影响 API 兼容性v1.2.3v1.2.4
MINOR(次要)新功能,向后兼容的 API 扩展v1.2.0v1.3.0
MAJOR(主要)不兼容的 API 变更,重大架构调整v1.x.xv2.0.0
  • 稳定版v1.2.3 — 推荐生产环境使用
  • 预发布版v1.3.0-alpha.1v1.3.0-beta.1v1.3.0-rc.1 — 功能预览和测试
  • 开发版v0.0.0-dev — 从 main 分支构建的版本

Nantian Gateway 维护最近两个 MINOR 版本的安全和关键 Bug 修复:

版本状态支持截止
v1.3.x当前主要版本下一个 MINOR 发布后 3 个月
v1.2.x维护中下一个 MINOR 发布后 3 个月
v1.1.x生命周期结束已停止支持

每次发布生成以下产物:

产物说明格式
控制面二进制Go 编译的静态二进制tar.gz(Linux amd64/arm64)
数据面二进制Rust 编译的静态二进制tar.gz(Linux amd64/arm64)
控制面容器镜像基于 distroless 的 Docker 镜像ghcr.io/nantian-gw/nantian-controlplane
数据面容器镜像基于 distroless 的 Docker 镜像ghcr.io/nantian-gw/dataplane
管理界面镜像Next.js 编译的静态站点ghcr.io/nantian-gw/dashboard
Helm Chart部署包tgz 格式
源码归档完整的源码 tar.gztar.gz
Terminal window
# 确保在 main 分支且是最新代码
git checkout main
git pull upstream main
# 确认所有 CI 检查通过
# 查看 GitHub Actions: https://github.com/nantian-gw/gateway/actions
# 确认合规性测试通过
make test-conformance
Terminal window
# 创建发布分支
git checkout -b release/v1.3.0
# 更新版本号
# 编辑 gateway/VERSION 文件,写入 1.3.0
echo "1.3.0" > gateway/VERSION
# 更新 Helm Chart 版本
# 编辑 helm-charts/charts/nantian-gw/Chart.yaml
# 修改 version 和 appVersion 字段

CHANGELOG.md 中添加新版本的变更记录。使用以下格式:

## [1.3.0] - 2024-06-15
### 新增
- feat(controlplane): 支持 HTTPRoute 后端协议选择
- feat(dataplane): 添加 AI 提供方 Ollama 支持
- feat(crd): 新增 BackendLBPolicy CRD
### 修复
- fix(dataplane): 修复 TLS 透传时 SNI 匹配问题
- fix(controlplane): 修复多监听器 Gateway 的端口冲突
### 变更
- refactor(dataplane): 重构 HTTP 路由匹配引擎,性能提升 15%
### 废弃
- deprecation(proto): SecretRef 字段将在 v2.0.0 中移除
### 安全
- security: 修复 gRPC 服务中的输入验证缺陷 (CVE-2024-XXXX)
Terminal window
# 提交版本变更
git add gateway/VERSION helm-charts/charts/nantian-gw CHANGELOG.md
git commit -m "chore(release): prepare v1.3.0"
# 推送到 GitHub
git push origin release/v1.3.0
# 创建 PR 合并到 main
# 在 GitHub 上创建 Pull Request,标题为 "Release v1.3.0"
# 合并后,在 main 分支上创建标签
git checkout main
git pull upstream main
git tag -a v1.3.0 -m "Release v1.3.0"
git push upstream v1.3.0

标签推送后,GitHub Actions 自动触发发布流程:

  1. 编译控制面和数据面二进制
  2. 构建并推送容器镜像到 ghcr.io
  3. 打包 Helm Chart
  4. 创建 GitHub Release 并上传所有产物

发布完成后,在 GitHub Release 页面补充发布说明,包括变更日志和升级注意事项。

Terminal window
# 打包 Helm Chart
cd helm-charts
helm package charts/nantian-gw
# 更新 Helm 仓库索引
helm repo index . --url https://chart.nantian.dev
# 推送到 Helm Chart 仓库
git add .
git commit -m "chore(chart): release v1.3.0"
git push

对于需要社区测试的功能,可以发布预发布版本:

Terminal window
# Alpha 版本 — 功能可能不完整
git tag -a v1.4.0-alpha.1 -m "Pre-release v1.4.0-alpha.1"
# Beta 版本 — 功能基本完整,需要测试
git tag -a v1.4.0-beta.1 -m "Pre-release v1.4.0-beta.1"
# Release Candidate — 候选发布版本
git tag -a v1.4.0-rc.1 -m "Pre-release v1.4.0-rc.1"

预发布版本在 GitHub 上标记为 “Pre-release”,不会出现在默认的”Latest Release”中。

对于需要紧急修复的 Bug,可以从对应的发布分支创建补丁版本:

Terminal window
# 从发布分支创建
git checkout release/v1.2
git checkout -b fix/critical-bug
# 修复 Bug 后 cherry-pick 到 main
git checkout main
git cherry-pick <commit-hash>
# 创建补丁标签
git tag -a v1.2.4 -m "Patch release v1.2.4"

发布前确认以下事项:

  • 所有 CI 检查通过(Go test、Rust test、lint、e2e)
  • Gateway API 合规性测试通过
  • 变更日志已更新,包含所有面向用户的变更
  • 版本号已更新(VERSION、Chart.yaml)
  • 容器镜像已推送到 ghcr.io
  • Helm Chart 已打包并推送
  • 文档站对应版本的文档已更新
  • 升级指南已更新(如有破坏性变更)
  • 发布说明已撰写,包含升级注意事项

对于 MINOR 和 MAJOR 版本,需要提供升级指南,说明:

  • 删除或废弃的 API 字段
  • 行为变更(如默认值变化)
  • 新增的必需配置项
  • 数据迁移步骤(如有)

升级指南放在 docs/upgrade/ 目录下,以版本号命名,如 docs/upgrade/v1.2-to-v1.3.md