Files
qihuaiflow/docs/VERSIONING.md
T

103 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 版本号规范 (Versioning)
> 适用:七虎AI PaaS 平台 (qihuaiflow) 全部发布物(源码、Docker 镜像、线上环境)。
> 生效版本:`v2026.07.18.1`(取代旧 `-recover` 标签体系)。
---
## 1. 版本号格式
```
vYYYY.MM.DD.N
```
| 段 | 含义 | 示例 |
|----|------|------|
| `YYYY` | 年(4 位) | 2026 |
| `MM` | 月(2 位,补零) | 07 |
| `DD` | 日(2 位,补零) | 18 |
| `N` | **当日**递增序号,从 `1` 开始,同日多次发布顺延 | 1, 2, 3 … |
- 同一天第 1 次发布 = `v2026.07.18.1`,第 2 次 = `v2026.07.18.2`。
- 跨天序号**重置**:次日第 1 次发布 = `v2026.07.19.1`。
- 序号不与全局总发布数绑定,只跟"当天第几次"有关,便于人类快速判断发布日期与顺序。
## 2. 环境标签 (prod / test)
每个版本必须标注环境,用于正式版与测试版的环境切割:
- **`prod`** — 正式版,面向最终用户,质量门禁(测试全绿 + 备份完成)必须达标。
- **`test`** — 测试版 / 灰度 / 预发布,允许未完全冻结,但同样需要镜像备份。
环境信息记录在 `VERSION` 文件的 `ENV=` 字段,并写入 git tag 注解与镜像 metadata。
## 3. 三类发布物的对应关系
一次发布同时产生三个相互关联的制品:
| 制品 | 命名 | 工具 |
|------|------|------|
| Git 标签 | `v2026.07.18.1`(注解含 `env=prod`) | `git tag -a` |
| Docker 镜像 | `qihu-aiflow:v2026.07.18.1` | `docker tag` / `docker commit` |
| 运行态快照(回滚点) | `qihu-aiflow:backup-YYYYMMDD-NNN` | `scripts/backup_before_deploy.py` |
> **关键纪律**:`backup-*` 是部署**前**对当前健康运行态的快照(防线);`v*` 镜像/标签是部署**后**的发布物(成果)。两者不是一个东西。
## 4. 发布流程(SOP)
每次部署严格遵守以下步骤:
```bash
# 0. 在改任何代码之前,先打部署前镜像备份(强制)
python scripts/backup_before_deploy.py --env prod --note "发布 v2026.07.18.1 前快照"
# 1. 在容器中完成代码修改
# (编辑 /app/... → 必要时 npm run build → docker restart)
# 2. 把容器内最新源码 docker cp 回宿主仓库
docker cp qihu-aiflow:/app /www/wwwroot/qihuaiflow # 仅后端;前端 dist 同理
# 3. 更新 VERSION 文件(VERSION / ENV / DATE / BACKUP_IMAGE)
# 4. 提交并打标签
cd /www/wwwroot/qihuaiflow
git add -A
git commit -m "release: v2026.07.18.1 (prod) — <一句话变更摘要>"
git tag -a v2026.07.18.1 -m "prod | Phase0 工程纪律止血:备份SOP + 版本规范 + 测试基建"
git push origin main
git push origin v2026.07.18.1
# 5. 固化发布镜像(可选但推荐,便于回滚到有版本号的镜像)
docker commit qihu-aiflow qihu-aiflow:v2026.07.18.1
```
## 5. 回滚流程
若发布后发现问题:
```bash
# 方案 A:回滚到部署前快照(最快,不依赖源码)
docker tag qihu-aiflow:backup-20260718-001 qihu-aiflow:with-deps
docker restart qihu-aiflow
# 方案 B:回滚到某个历史发布镜像
docker tag qihu-aiflow:v2026.07.18.1 qihu-aiflow:with-deps
docker restart qihu-aiflow
# 方案 C:源码回滚
git checkout v2026.07.18.1
docker cp /www/wwwroot/qihuaiflow/app qihu-aiflow:/app
docker restart qihu-aiflow
```
## 6. VERSION 文件维护
- 仓库根目录 `VERSION` 为机器 + 人共读的清单,必须包含 `VERSION=` / `ENV=` / `DATE=` / `BASE_IMAGE=` / `BACKUP_IMAGE=` 五个字段。
- 每次发布更新 `VERSION` 与 `DATE`,并在"本版本变更"小节追加一行摘要。
- `BACKUP_IMAGE` 必须填写本次发布前实际生成的 `backup-*` 标签,作为可审计的回滚点。
## 7. 旧标签处理
- 旧 `-recover` 系列标签(`v2026.07.12-recover` 等)**保留不删**,仅停止使用,避免丢失历史快照索引。
- 旧镜像标签 `AIFlow v2.0.1` / `v2026.07.14` / `v2026.07.14-nav` 视为历史资产,新发布不再沿用该命名。