1
0
Files
nex/openspec/specs/repository-versioning/spec.md
lanyuanxiaoyao a9972360c2 feat: 增加版本化构建与发布流程
引入 VERSION 作为统一版本源,避免前端、后端、桌面打包和发布资产之间的版本漂移。
新增 tag 驱动的 Draft Release 流程与版本化资产命名,使本地演进和 GitHub 发布共享同一套约束。
2026-04-28 14:20:27 +08:00

69 lines
2.5 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.
# 仓库版本管理
## 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` 中的版本号