docs: 分支、tag 与升级发布流程(主线 main,准生产只从 main 发布)

- deploy.md 新增第 0 节:分支与 tag 规则、一次升级的 9 步、数据与平台升级注意事项
- preprod.md 版本规则指向该节;HANDOFF、交付总览改为主线 main

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MMDFmVTvRksi1ZT8aPGXoL
This commit is contained in:
Claude
2026-10-20 15:49:13 +00:00
parent 872d64dc93
commit 97a4a5b8c9
4 changed files with 50 additions and 3 deletions
+2 -2
View File
@@ -17,7 +17,7 @@
## 2. 当前状态(2026-10-13)
- 分支 `claude/serene-hawking-jgi7rn`,已推送;**没有开 PR**(用户没要求就不要开)。
- 主线 `main`(2026-10-20 起,工作分支 `claude/serene-hawking-jgi7rn` 经 PR 合入)。分支、tag 和发布流程见 `docs/deploy.md` 第 0 节。
- 环境:dev(ziqu-dev.aihupo.cn)和准生产(ziqu.aihupo.cn)都是 NocoBase 2.4.0-alpha.11,插件 **0.32.2** 已部署启用,门户已用最新代码发布;准生产见 docs/preprod.md。
- 检查:`npx tsc --noEmit`、`npx eslint src --quiet`、`npx vitest run tests/logic tests/components`(246 项)全部通过。`npx vitest run tests` 还会捡到 `registry/nocobase-ai-knowledge-base/tests` 下两个用 `node:test` 写的文件,它们一直跑不了,与本项目无关。
- 用户提出的需求已全部完成,并在线上用演示账号实测:
@@ -78,7 +78,7 @@ npx tsc --noEmit && npx eslint src --quiet && npx vitest run tests
## 6. 用户给过的硬约束
1. 用中文和用户交流;文档、界面文案用中文,说人话,书里的编号用小字。
2. 只在 `claude/serene-hawking-jgi7rn` 上提交、推送;不开 PR,除非用户要求。提交信息里不写模型名。
2. 只在会话指定的工作分支上提交、推送,经 PR 合入 `main`;不直接推 `main`,用户没要求不开 PR。提交信息里不写模型名。
3. 不动测试实例上的其他应用和其他门户(main / ziqu / admin / mobile),不碰别的数据;只改 `dingze` 门户、本插件和本插件的数据。
4. **不要给 AI 员工 nathan、dara、lina、orin 绑定任何东西**(它们是开发用 AI 员工)。本项目只用三位数字咨询师:`dingze-strategy-coach`、`dingze-goal-coach`、`dingze-action-coach`。
5. **不削弱逐表解锁、定版门禁、角色隔离**;规格问题不能用放宽校验来混过去。
+1 -1
View File
@@ -4,7 +4,7 @@
**依据**:《企业战略咨询平台需求规格说明书》V1.2、《自驱战略落地》第 2—4 章(定战略责 / 定目标责 / 定行动责)、`ziqu-dingze` 方法论包
**测试环境**:https://ziqu-dev.aihupo.cn/x/dingze/ (NocoBase 2.4.0-alpha.9,插件 `@ziqu/plugin-dingze` 0.26.0)
**更新记录 / 路线图**:[changelog.md](changelog.md)、[roadmap.md](roadmap.md)
**代码**:仓库 `klinsmaya/portal-template-default`,分支 `claude/serene-hawking-jgi7rn`
**代码**:仓库 `klinsmaya/portal-template-default`,主线 `main`(发布流程见[发布与部署](deploy.md)第 0 节)
## 1. 做了什么
+45
View File
@@ -2,6 +2,51 @@
平台由两部分组成,发布顺序固定:先插件,后门户,最后给角色开门户入口。
## 0. 分支、版本与发布流程
### 分支与 tag
| 分支 / tag | 用途 |
|---|---|
| `main` | 主线。准生产和生产只从 `main` 发布 |
| `claude/*` 等工作分支 | 一批修改一个分支,从 `main` 拉出;在 dev 验证通过后提 PR 合入 `main` |
| `v<插件版本>-rc.<n>` | 打在 `main` 上,对应一次准生产发布,如 `v0.32.2-rc.1`。只改门户不升插件版本时,`n` 加 1 |
| `v<插件版本>` | 正式生产发布 |
| `v<版本>-beta.<n>` | 阶段性快照(可选),如 `v0.31.0-beta.1` |
- 插件版本只在 `server-plugins/plugin-dingze/package.json` 里维护;改了插件就加 1,只改门户不升。
- 根目录 `package.json` 的版本是门户模板的版本,不随业务发布改动。
- `.github/workflows/publish.yml` 是门户模板发 npm 包用的(只能手动触发),本项目不用,不要运行。
### 一次升级
1. **开发**:从 `main` 拉工作分支修改。改插件的同时把插件版本号加 1。
2. **自检**(全部通过才往下):
```bash
npx tsc --noEmit && npx eslint src --quiet && npx vitest run tests/logic tests/components
```
改了插件还要做插件类型检查(`HANDOFF.md` 第 4 节);改了关键流程,更新并运行 `e2e/` 下对应用例。
3. **发 dev**:先插件(第 1 节,`NOCOBASE_API_URL=https://ziqu-dev.aihupo.cn/api`),后门户(`nb portal deploy dingze`,默认环境就是 `ziqu-dev`)。在 dev 上自测;需要时请甲方在 dev 验证。
4. **记录**:在[更新记录](changelog.md)写清改了什么、试用者要注意什么;试用期间同步更新《试用意见登记表》的“状态 / 修复版本”。
5. **合入主线**:提 PR 合入 `main`。PR 描述写插件版本、门户改动、要不要数据迁移。
6. **打 tag**:在合并后的 `main` 提交上打 `v<插件版本>-rc.<n>`。
7. **发准生产**(按[准生产发布](preprod.md)):
1. 备份准生产的数据库和上传文件;
2. 插件:`NOCOBASE_API_URL=https://ziqu.aihupo.cn/api`,令牌用准生产管理员令牌;
3. 门户:`NODE_USE_ENV_PROXY=1 nb portal deploy dingze -e ziqu-preprod -y`;
4. 发完把 `.env.local` 改回 dev 地址(`NOCOBASE_API_URL=https://ziqu-dev.aihupo.cn/api`)。
8. **发布后验证**:按 `preprod.md` 第 3 节逐项检查,并在 `preprod.md` 记一笔发布记录(日期、版本、tag、验证结果)。
9. **回滚**:见 `preprod.md` 第 4 节。门户回到上一个 tag 重新部署;插件装回上一版。做过数据合并的版本,回滚前先恢复备份。
### 数据与平台升级
- 准生产的数据按真实数据对待。演示数据的快照导入(`importSnapshot`)只能用在空库上,不能重复导入。
- 插件改了数据结构或要改已有数据,写成插件的升级迁移(`server/upgrade/`),在 dev 上先跑通,再随插件发准生产。
- 升级 NocoBase 本身:dev 先升、跑一遍第 4 节和 `preprod.md` 第 3 节的检查,通过后再升准生产。构建插件用的 NocoBase 源码(`NOCOBASE_SRC`)也换成同一版本。
- 门户模板上游有更新时,单开一个分支合并,按 `AGENTS.md` 的要求对比后选择性合入,不要直接覆盖本项目改过的文件。
## 1. 定责业务插件 `@ziqu/plugin-dingze`
源码在 `server-plugins/plugin-dingze`。改动后先在 `package.json` 里提升版本号,再执行:
+2
View File
@@ -80,6 +80,8 @@
## 5. 发布后的版本规则
分支、tag 和一次升级的完整步骤见[发布与部署](deploy.md)第 0 节。
- 准生产每次发布都打 tag:`v<插件版本>-rc.<n>`;正式生产用 `v<插件版本>`。
- 只改门户的发布不升插件版本,tag 用 `v<插件版本>-rc.<n>` 的下一个序号。
- 每次发布在[更新记录](changelog.md)里写清楚改了什么、试用者要注意什么。