优化
This commit is contained in:
@@ -77,6 +77,8 @@
|
||||
|
||||
完整操作请先读 [数据库迁移操作手册](数据库迁移操作手册.md)。离线入口为 `scripts/db-migrations.mjs`:
|
||||
|
||||
编号统一采用每个 schema 独立递增的 `V1、V2、V3……`,有 SQL 变更才由工具新增,成功执行后不改内容和编号。功能分支从最新 `main` 创建,进入测试前同步 main 并解决草稿编号冲突。生产发布另记 `release-1、release-2……`;该发布编号及分支门禁尚待流水线实现,完整流程见操作手册“编号与功能分支规则”。
|
||||
|
||||
```powershell
|
||||
# 自动取得该 schema 的下一个整数序号并创建草稿;不连接数据库
|
||||
node deploy/sql/scripts/db-migrations.mjs new --region CN --schema baiyue_auth --description add_login_audit
|
||||
|
||||
@@ -11,6 +11,22 @@
|
||||
|
||||
当前测试分支只完成了版本迁移的离线工具和目录骨架。没有冻结基线、没有具体业务变更时,不要复制初始化 SQL 生成 `V1`,也不要连接测试或生产数据库试跑。
|
||||
|
||||
## 编号与功能分支规则(2026-09-22 确认)
|
||||
|
||||
SQL 编号统一保持 **`V1、V2、V3、V4、V5……`**,不使用时间戳。每个数据库独立计数,由工具生成下一个整数;数字变长不需要重置或重新编号。
|
||||
|
||||
- 有数据库逻辑变更才新增迁移;普通提交、重复测试和重复部署不增加 SQL 编号。
|
||||
- 同一未冻结、未在保留历史环境执行的变更可以反复编辑;成功执行后不改内容、不改编号,修复新增迁移。失败候选的受控修订仍按方案第 13.2.1 节处理。
|
||||
- 功能分支从最新 `main` 创建;进入共享测试前先拉取并合并最新 `main`,解决代码和同库编号冲突。只允许调整尚未冻结、未在保留历史环境执行的草稿。
|
||||
- 两人并行开发,共享测试、合并和发布依次进行。前一功能完成发布或处理失败后,下一功能同步 main 再进入测试;若前一功能留下未合并 SQL 或未决失败,先处理测试起点,不能直接继续验收。
|
||||
- 测试后 main 又变化,必须重新同步和验证。合并 main 后构建正式候选并再次自动验证,生产使用这份正式候选,不重新构建或修改 SQL。
|
||||
|
||||
**生产发布版本另外记为 `release-1、release-2……`,不与 SQL 编号绑定。** 例如 `release-12` 中 Auth 是 `V3`、Order 是 `V7`;只有代码变化也可以发布 `release-13`,SQL 编号保持不变。
|
||||
|
||||
目标流程由 Jenkins 为新的生产候选自动分配发布编号;成功后更新当前生产版本并记录 Git 标签、完整提交、镜像 digest 和 SQL 清单。失败编号保留且不复用,同一制品重试沿用原编号;修改制品后分配新编号并重新验证。main 是已合并代码,生产实际版本以成功发布记录为准;发布失败时还需核对各库、各服务的实际状态,不能假定全部未变。
|
||||
|
||||
当前工具只依据当前分支的迁移目录生成整数编号;跨分支冲突预检、main 同步门禁、`release-N` 分配和标签归档尚待接入,不因写入本手册就视为已自动执行。
|
||||
|
||||
## 日常开发:新建和修改迁移
|
||||
|
||||
以下命令均从 `baiyue-firstleg` 根目录执行,PowerShell 和 Bash 都可以使用 Node 命令。
|
||||
@@ -136,6 +152,7 @@ node deploy/sql/scripts/db-migrations.mjs run `
|
||||
- 生产或测试数据库基线登记;
|
||||
- Flyway 实际执行和历史表校验;
|
||||
- Jenkins 的数据库阶段、环境锁和构建/部署解耦;
|
||||
- 功能分支同步检查、合并后候选验证、生产 `release-N` 自动编号及发布标签归档;
|
||||
- 真实测试环境部署与生产晋级。
|
||||
|
||||
因此现在可以开始编写和评审迁移文件,但不能把离线检查通过当作测试或生产发布通过。
|
||||
|
||||
Reference in New Issue
Block a user