# 仓库版本管理 ## Purpose 定义仓库统一版本源、镜像同步、发布一致性校验与构建版本注入规则,确保所有构建消费者使用同一版本语义。 ## Requirements ### Requirement: 统一版本源 系统 SHALL 使用仓库根目录 `VERSION` 文件作为全仓唯一版本源,文件内容 SHALL 仅包含一行 `x.y.z` 格式的语义版本号。 #### Scenario: 读取有效版本号 - **WHEN** 仓库中的 `VERSION` 文件内容为 `1.2.3` - **THEN** 本地工具和 CI SHALL 将 `1.2.3` 视为当前仓库版本 - **AND** 其他版本消费者 SHALL NOT 覆盖该值作为权威来源 #### Scenario: 拒绝非法版本格式 - **WHEN** `VERSION` 文件内容不是 `x.y.z` 格式 - **THEN** 版本同步与发布校验流程 SHALL 失败 - **AND** 系统 SHALL 输出格式错误信息 ### Requirement: 版本镜像同步 系统 SHALL 提供仓库内的版本同步入口,将 `VERSION` 中的版本值写入需要镜像版本号的构建消费者。 #### Scenario: 同步前端镜像字段 - **WHEN** 执行版本同步流程且 `VERSION` 为 `1.2.3` - **THEN** `frontend/package.json` 中的 `version` 字段 SHALL 被同步为 `1.2.3` #### Scenario: 同步构建模板值 - **WHEN** 执行版本同步流程且存在依赖版本号的构建模板或元数据模板 - **THEN** 这些模板消费的版本值 SHALL 与 `VERSION` 保持一致 - **AND** 系统 SHALL NOT 要求用户手工修改多个版本文件 ### Requirement: 发布版本一致性校验 系统 SHALL 在发布前校验仓库版本与 Git tag 一致,确保发布锚点与仓库状态不漂移。 #### Scenario: tag 与 VERSION 一致 - **WHEN** 发布使用的 Git tag 为 `v1.2.3` 且 `VERSION` 为 `1.2.3` - **THEN** 发布校验 SHALL 通过 #### Scenario: tag 与 VERSION 不一致 - **WHEN** 发布使用的 Git tag 为 `v1.2.4` 但 `VERSION` 为 `1.2.3` - **THEN** 发布校验 SHALL 失败 - **AND** 系统 SHALL 阻止后续发布步骤继续执行 ### Requirement: 统一构建版本注入 系统 SHALL 在构建阶段把统一版本信息注入 frontend、server 和 desktop,而不是在运行时依赖外部发布平台查询版本。 #### Scenario: Go 二进制注入版本元数据 - **WHEN** 构建 server 或 desktop 二进制 - **THEN** 构建流程 SHALL 注入 `version`、`commit` 和 `buildTime` 元数据 #### Scenario: 前端注入构建版本 - **WHEN** 执行前端生产构建 - **THEN** 构建流程 SHALL 注入 `VITE_APP_VERSION` - **AND** 该值 SHALL 等于 `VERSION` 中的版本号