AGC 版本号以仓库为准,新增 bump-version 提升版本命令 #298

Closed
suzmii wants to merge 8 commits from fix/agc-release-version-sync into master
Member

实现 AGC 客户端版本号以仓库为准的发布流程,并新增版本提升命令。

原因

本地运行时读取的版本号来自仓库 package.json;但发布时版本号在构建工作区临时确定(默认对 OSS 清单自动 +patch,或由 AGC_RELEASE_VERSION 覆盖),且不回写仓库,导致源码版本与线上 OSS 长期不一致(dev 每次启动误报“发现新版本”)。

方案

  • 发布以仓库已提交版本为准:prepareReleaseVersion 只校验五个版本来源一致并返回仓库版本,不再自动递增或支持 AGC_RELEASE_VERSION 自由指定。
  • 新增 npm run ai-game-creator-shell:bump-version:写 package.json / 根 package-lock.json / tauri.conf.json / Cargo.toml / Cargo.lock 五处;默认不提交,--commit 才提交;提交前校验不误带其它暂存改动。
  • 发布前校验版本相对 HEAD 已提交(assertVersionCommitted),避免本地与 Jenkins 检出版本不一致。
  • 发布前防降级(assertVersionNotBelowOss):仓库版本低于 OSS 线上版本时中止,避免回退。
  • 移除 Jenkinsfile 的 AGC_RELEASE_VERSION 参数,同步更新技术方案文档。

Closes #297

实现 AGC 客户端版本号以仓库为准的发布流程,并新增版本提升命令。 ## 原因 本地运行时读取的版本号来自仓库 package.json;但发布时版本号在构建工作区临时确定(默认对 OSS 清单自动 +patch,或由 AGC_RELEASE_VERSION 覆盖),且不回写仓库,导致源码版本与线上 OSS 长期不一致(dev 每次启动误报“发现新版本”)。 ## 方案 - 发布以仓库已提交版本为准:prepareReleaseVersion 只校验五个版本来源一致并返回仓库版本,不再自动递增或支持 AGC_RELEASE_VERSION 自由指定。 - 新增 npm run ai-game-creator-shell:bump-version:写 package.json / 根 package-lock.json / tauri.conf.json / Cargo.toml / Cargo.lock 五处;默认不提交,--commit 才提交;提交前校验不误带其它暂存改动。 - 发布前校验版本相对 HEAD 已提交(assertVersionCommitted),避免本地与 Jenkins 检出版本不一致。 - 发布前防降级(assertVersionNotBelowOss):仓库版本低于 OSS 线上版本时中止,避免回退。 - 移除 Jenkinsfile 的 AGC_RELEASE_VERSION 参数,同步更新技术方案文档。 Closes #297
suzmii added 7 commits 2026-09-07 14:12:24 +08:00
- package.json 版本 0.1.12 -> 0.1.19,与 OSS latest.json 线上版本对齐,消除 dev 客户端每次启动误报发现新版本

- 同步更新根 package-lock.json、src-tauri/tauri.conf.json、src-tauri/Cargo.toml、Cargo.lock 中 AGC 包条目版本至 0.1.19,五处保持一致

- 在 AGC 更新技术方案文档的发布约定补充说明:发布新版本后必须手动将版本号变更提交回仓库,避免版本漂移
- 发布/构建不再自动递增版本、不再支持 AGC_RELEASE_VERSION 自由指定版本,改为读取仓库已提交的版本

- prepareReleaseVersion 只校验五个版本来源一致并返回仓库版本,不再改写版本文件

- 新增 apps/ai-game-creator-shell/scripts/bump-version.mjs,默认提升 patch,支持 minor/major/显式版本,写入五处并本地提交

- release:upload 发布前通过 assertVersionNotBelowOss 防降级:仓库版本低于 OSS 线上版本时中止,并提示先运行 bump-version

- 新增根 npm run ai-game-creator-shell:bump-version 别名,并在 AGC 更新技术方案文档与 Jenkinsfile 中移除自由版本参数说明
- build-release.test.mjs 用 fileURLToPath 替代 URL.pathname,修复 Windows 下 /C:/... 路径导致的 3 个用例失败(既有的跨平台问题)

- bump-version.mjs 的 --no-commit 输出改为“已写入版本文件,未创建提交”,避免被误认为不改文件的干跑
- bump-version.mjs 默认只写入版本文件、不创建提交;需要提交时加 --commit

- 增加保护:若工作区已带着一次未提交的提升,再 --commit 不会重复递增,直接提交现有改动

- 同步 AGC 更新技术方案文档的用法示例与说明
- --commit 在改动任何版本文件前先检查已暂存文件,发现版本文件外的暂存改动则中止并提示,避免误提交无关内容

- 同步 AGC 更新技术方案文档说明
- 新增 assertVersionCommitted:发布前确认 5 个版本来源相对 HEAD 已提交,避免仅 bump 未提交就 release 导致本地与 Jenkins 检出版本不一致

- release-upload 在取版本、OSS 防降级前调用该守卫

- 更新 AGC 更新技术方案文档,并补发布校验回归测试
细化 AGC 发布文档:区分 build 与 release:upload 的校验范围
Project CI / Repository checks (pull_request) Failing after 15m25s
Project CI / Frontend tests (pull_request) Successful in 21m16s
Project CI / Backend tests (pull_request) Failing after 1h45m38s
Project CI / Native shell tests (pull_request) Failing after 1h50m38s
65012e89b6
- build 只校验五个版本来源一致;release:upload 在上传前额外校验版本已提交与防降级
suzmii added 1 commit 2026-09-07 14:59:41 +08:00
修复 bump-version 脚本导入排序以通过 lint:eslint
Project CI / Repository checks (pull_request) Successful in 2m54s
Project CI / Frontend tests (pull_request) Successful in 3m14s
Project CI / Backend tests (pull_request) Successful in 6m0s
Project CI / Native shell tests (pull_request) Successful in 20m42s
2043f8c966
- bump-version.mjs 按 simple-import-sort 调整 node:child_process / node:path / node:url 导入顺序
suzmii self-assigned this 2026-09-07 15:12:53 +08:00
kdletters closed this pull request 2026-09-07 17:15:11 +08:00
Some checks are pending
Project CI / Repository checks (pull_request) Successful in 2m54s
Project CI / Frontend tests (pull_request) Successful in 3m14s
Project CI / Backend tests (pull_request) Successful in 6m0s
Project CI / Native shell tests (pull_request) Successful in 20m42s

Pull request closed

Sign in to join this conversation.