1
0

feat: 增加版本化构建与发布流程

引入 VERSION 作为统一版本源,避免前端、后端、桌面打包和发布资产之间的版本漂移。
新增 tag 驱动的 Draft Release 流程与版本化资产命名,使本地演进和 GitHub 发布共享同一套约束。
This commit is contained in:
2026-04-28 14:20:27 +08:00
parent b00fa4dcee
commit a9972360c2
18 changed files with 1082 additions and 68 deletions

View File

@@ -0,0 +1,78 @@
# 发布流水线
## Purpose
定义 tag 驱动的发布流程、跨平台构建产物要求与 Draft Release 组装规则,确保发布结果可复现且可审阅。
## Requirements
### Requirement: Tag 驱动发布流水线
系统 SHALL 仅在符合 `vX.Y.Z` 格式的 Git tag 上触发发布流水线,普通分支 push SHALL NOT 创建发布。
#### Scenario: 有效发布 tag
- **WHEN** 仓库收到 `v1.2.3` tag push
- **THEN** 发布流水线 SHALL 启动版本校验、构建和 Release 组装步骤
#### Scenario: 普通分支推送
- **WHEN** 仓库收到非 tag 的分支 push
- **THEN** 系统 SHALL NOT 创建 GitHub Release
### Requirement: 三平台发布构建
系统 SHALL 在发布流水线中构建 server 与 desktop 的 Linux、Windows、macOS 三个平台产物。
#### Scenario: Linux 发布构建
- **WHEN** 发布流水线执行 Linux 构建 job
- **THEN** 系统 SHALL 生成 Linux server 发布资产
- **AND** 系统 SHALL 生成 Linux desktop 发布资产
#### Scenario: Windows 发布构建
- **WHEN** 发布流水线执行 Windows 构建 job
- **THEN** 系统 SHALL 生成 Windows server 发布资产
- **AND** 系统 SHALL 生成 Windows desktop 发布资产
#### Scenario: macOS 发布构建
- **WHEN** 发布流水线执行 macOS 构建 job
- **THEN** 系统 SHALL 生成 darwin-amd64 server 发布资产
- **AND** 系统 SHALL 生成 darwin-arm64 server 发布资产
- **AND** 系统 SHALL 生成 macOS desktop universal 发布资产
### Requirement: 版本化发布资产命名
系统 SHALL 为 server 与 desktop 的发布资产使用包含统一版本号和目标平台信息的文件名,确保 Release 页面可直接区分产物用途与平台。
#### Scenario: server 资产命名
- **WHEN** 当前发布版本为 `1.2.3`
- **THEN** Linux server 发布资产文件名 SHALL 包含 `1.2.3``linux``amd64`
- **AND** Windows server 发布资产文件名 SHALL 包含 `1.2.3``windows``amd64`
- **AND** macOS server 发布资产文件名 SHALL 分别包含 `1.2.3``darwin``amd64``1.2.3``darwin``arm64`
#### Scenario: desktop 资产命名
- **WHEN** 当前发布版本为 `1.2.3`
- **THEN** Linux desktop 发布资产文件名 SHALL 包含 `1.2.3``linux`
- **AND** Windows desktop 发布资产文件名 SHALL 包含 `1.2.3``windows`
- **AND** macOS desktop universal 发布资产文件名 SHALL 包含 `1.2.3``macOS`
### Requirement: Draft Release 组装
系统 SHALL 将发布流水线产物上传到 GitHub Draft Release由人工确认后再公开发布。
#### Scenario: 发布成功时创建 Draft Release
- **WHEN** 版本校验通过且三平台发布资产构建完成
- **THEN** 系统 SHALL 创建或更新与该 tag 对应的 GitHub Draft Release
- **AND** 系统 SHALL 上传 server 与 desktop 的全部发布资产
#### Scenario: 构建失败时阻止完成发布
- **WHEN** 任一平台发布资产构建失败或版本校验失败
- **THEN** 发布流水线 SHALL 失败
- **AND** 系统 SHALL NOT 产生可直接公开的成功发布结果