feat: 扩展发布打包支持多组件多架构多格式产物
- 新增 web 组件独立发布为 nex-web_<version>.tar.gz
- server 新增 arm64 架构、macOS universal、Windows arm64 产物
- desktop 新增 arm64 架构支持(Linux/Windows)
- Linux desktop 新增 AppImage、deb、rpm 安装包格式
- macOS desktop 新增 unsigned DMG 安装包
- 统一发布资产命名为 {component}_{version}_{platform}_{arch}.{ext}
- 新增 SHA256SUMS 校验和清单覆盖全部发布资产
- versionctl 新增 asset-name CLI 支持按参数生成资产文件名
- Makefile release target 重构为组件/平台/架构参数化
- GitHub Actions release workflow 扩展多组件多架构构建矩阵
- 同步更新 openspec 主规范(desktop-app/release-pipeline/workspace-command-flows)
This commit is contained in:
@@ -8,17 +8,26 @@
|
||||
|
||||
### Requirement: 根目录公开命令分层
|
||||
|
||||
根目录 `Makefile` SHALL 仅暴露全局命令、版本命令、server 产品命令、desktop 产品命令和 release 命令,不再作为 backend 局部维护命令或内部打包步骤的公开入口。
|
||||
根目录 `Makefile` SHALL 仅暴露全局命令、版本命令、server 产品命令、desktop 产品命令和 release 命令,不再作为 backend 局部维护命令或内部打包步骤的公开入口。release 命令 SHALL 使用 `release-assets` 前缀,并 SHALL 通过清晰的目标名或变量参数表达 component、platform、arch 和 format。
|
||||
|
||||
#### Scenario: 查看根目录公开命令
|
||||
|
||||
- **WHEN** 开发者查看根目录 `Makefile` 的公开 target
|
||||
- **THEN** SHALL 仅看到 `lint`、`test`、`clean`、`version-sync`、`version-check`、`server-run`、`server-build`、`server-lint`、`server-test`、`server-clean`、`desktop-build-mac`、`desktop-build-win`、`desktop-build-linux`、`desktop-lint`、`desktop-test`、`desktop-clean`、`release-assets-linux`、`release-assets-windows`、`release-assets-macos` 这类公共入口
|
||||
- **THEN** SHALL 仅看到 `lint`、`test`、`clean`、`version-sync`、`version-check`、`server-run`、`server-build`、`server-lint`、`server-test`、`server-clean`、`desktop-build-mac`、`desktop-build-win`、`desktop-build-linux`、`desktop-lint`、`desktop-test`、`desktop-clean` 和 `release-assets` 前缀的 release 公共入口
|
||||
- **AND** release 公共入口 SHALL 能覆盖 server、web、desktop 的目标发布产物
|
||||
|
||||
#### Scenario: 根目录不暴露局部和内部命令
|
||||
|
||||
- **WHEN** 开发者查看根目录 `Makefile` 的公开 target
|
||||
- **THEN** SHALL NOT 暴露 `backend-*`、`frontend-*`、数据库迁移命令、MySQL 专项测试命令或 `desktop-prepare-*` 之类内部步骤
|
||||
- **THEN** SHALL NOT 暴露 `dev`、`build`、`all`、`desktop-dev`、`desktop-build` 这类模糊或聚合式公共命令
|
||||
|
||||
#### Scenario: release 内部步骤保持内部化
|
||||
|
||||
- **WHEN** 根目录 `Makefile` 需要复用 release 构建、打包、校验辅助步骤
|
||||
- **THEN** 内部辅助 target SHALL 使用 `_` 前缀或 Make 变量参数化方式表达
|
||||
- **AND** 内部辅助 target SHALL NOT 成为文档化的公共入口
|
||||
|
||||
### Requirement: 全局质量与清理命令
|
||||
|
||||
根目录 `Makefile` SHALL 提供 `lint`、`test`、`clean` 作为全仓默认入口。
|
||||
@@ -97,12 +106,33 @@
|
||||
|
||||
### Requirement: Release 命令沿用根目录入口
|
||||
|
||||
根目录 `Makefile` SHALL 继续提供 `release-assets-*` 作为发布资产入口,并与新的版本校验规则保持一致。
|
||||
根目录 `Makefile` SHALL 继续提供 `release-assets` 前缀 target 作为发布资产入口,并与版本校验、发布资产预检和多组件打包规则保持一致。
|
||||
|
||||
#### Scenario: 执行 release 资产命令
|
||||
- **WHEN** 执行 `make release-assets-linux`、`make release-assets-windows` 或 `make release-assets-macos`
|
||||
|
||||
- **WHEN** 执行任一 `release-assets` 前缀的公共 release target
|
||||
- **THEN** SHALL 在构建发布资产前执行版本一致性校验
|
||||
- **THEN** SHALL NOT 隐式执行 `version-sync` 或修改版本镜像文件
|
||||
- **AND** SHALL 在需要图标或桌面资源的构建前执行发布资产预检
|
||||
- **AND** SHALL NOT 隐式执行 `version-sync` 或修改版本镜像文件
|
||||
|
||||
#### Scenario: release target 职责清晰
|
||||
|
||||
- **WHEN** GitHub Actions 调用根目录 `Makefile` 生成 release 产物
|
||||
- **THEN** 对应 release target SHALL 明确生成的 component、platform、arch 或 format 范围
|
||||
- **AND** GitHub Actions SHALL NOT 以内联脚本替代 Makefile 中已有的核心构建和打包逻辑
|
||||
|
||||
#### Scenario: web release 产物生成
|
||||
|
||||
- **WHEN** 执行 web release 资产命令
|
||||
- **THEN** SHALL 使用 Bun 构建 `frontend/dist`
|
||||
- **AND** SHALL 打包生成 `nex-web_<version>.tar.gz`
|
||||
- **AND** SHALL NOT 修改前端版本镜像文件
|
||||
|
||||
#### Scenario: checksum release 产物生成
|
||||
|
||||
- **WHEN** 执行 release 汇总或 Draft Release 组装相关命令
|
||||
- **THEN** SHALL 能基于当前 release 产物目录生成 `SHA256SUMS`
|
||||
- **AND** `SHA256SUMS` SHALL 覆盖除自身以外的全部 release 资产
|
||||
|
||||
### Requirement: Backend 局部命令下沉
|
||||
|
||||
|
||||
Reference in New Issue
Block a user