fix: 加固发布流水线运行环境
修复 Windows 发布作业在 MSYS2 环境下无法访问 Go 工具链的问题。 为三平台发布增加工具链预检并升级 release workflow 运行时兼容性,减少版本检查噪音和 CI 告警。
This commit is contained in:
@@ -27,22 +27,67 @@
|
||||
#### Scenario: Linux 发布构建
|
||||
|
||||
- **WHEN** 发布流水线执行 Linux 构建 job
|
||||
- **THEN** 系统 SHALL 生成 Linux server 发布资产
|
||||
- **THEN** 系统 SHALL 在可访问 Go、Bun 和 Linux 桌面构建依赖的 shell 环境中执行 Linux 发布构建
|
||||
- **AND** 系统 SHALL 生成 Linux server 发布资产
|
||||
- **AND** 系统 SHALL 生成 Linux desktop 发布资产
|
||||
|
||||
#### Scenario: Windows 发布构建
|
||||
|
||||
- **WHEN** 发布流水线执行 Windows 构建 job
|
||||
- **THEN** 系统 SHALL 生成 Windows server 发布资产
|
||||
- **THEN** 系统 SHALL 在包含 MSYS2 / MINGW64 构建工具且可访问 Go 与 Bun 工具链的 shell 环境中执行 Windows 发布构建
|
||||
- **AND** 系统 SHALL 生成 Windows server 发布资产
|
||||
- **AND** 系统 SHALL 生成 Windows desktop 发布资产
|
||||
|
||||
#### Scenario: macOS 发布构建
|
||||
|
||||
- **WHEN** 发布流水线执行 macOS 构建 job
|
||||
- **THEN** 系统 SHALL 生成 darwin-amd64 server 发布资产
|
||||
- **THEN** 系统 SHALL 在可访问 Go、Bun 和 macOS 打包工具链的 shell 环境中执行 macOS 发布构建
|
||||
- **AND** 系统 SHALL 生成 darwin-amd64 server 发布资产
|
||||
- **AND** 系统 SHALL 生成 darwin-arm64 server 发布资产
|
||||
- **AND** 系统 SHALL 生成 macOS desktop universal 发布资产
|
||||
|
||||
### Requirement: 三平台发布构建预检
|
||||
|
||||
系统 SHALL 在正式执行各平台 `make release-assets-*` 前验证对应发布 job 的关键工具链可用性,并在环境不完整时快速失败且输出明确诊断。
|
||||
|
||||
#### Scenario: Linux 预检通过后开始构建
|
||||
|
||||
- **WHEN** Linux 发布 job 中的 `go`、`bun` 与 Linux 桌面构建依赖均可用
|
||||
- **THEN** 系统 SHALL 输出关键工具的版本信息或解析路径
|
||||
- **AND** 系统 SHALL 继续执行 `make release-assets-linux`
|
||||
|
||||
#### Scenario: Windows 预检通过后开始构建
|
||||
|
||||
- **WHEN** Windows 发布 job 中的 `go`、`bun` 与 MSYS2 构建工具均可用
|
||||
- **THEN** 系统 SHALL 输出关键工具的版本信息或解析路径
|
||||
- **AND** 系统 SHALL 继续执行 `make release-assets-windows`
|
||||
|
||||
#### Scenario: macOS 预检通过后开始构建
|
||||
|
||||
- **WHEN** macOS 发布 job 中的 `go`、`bun` 与 macOS 打包工具均可用
|
||||
- **THEN** 系统 SHALL 输出关键工具的版本信息或解析路径
|
||||
- **AND** 系统 SHALL 继续执行 `make release-assets-macos`
|
||||
|
||||
#### Scenario: 任一平台预检发现工具缺失
|
||||
|
||||
- **WHEN** 任一平台发布 job 中存在关键工具不可用
|
||||
- **THEN** 发布流水线 SHALL 在正式构建前失败
|
||||
- **AND** 系统 SHALL 在日志中标识缺失的工具链名称
|
||||
|
||||
### Requirement: 发布流水线运行时兼容性
|
||||
|
||||
系统 SHALL 保持与 GitHub-hosted runner 当前受支持的 workflow runtime 约束兼容,避免发布流程依赖已声明弃用的 runtime 或执行约束。
|
||||
|
||||
#### Scenario: runner runtime 升级前完成兼容更新
|
||||
|
||||
- **WHEN** GitHub-hosted runner 宣布 workflow runtime 或关键执行约束将从旧版本迁移到新版本
|
||||
- **THEN** 发布流水线 SHALL 在旧约束移除前完成兼容性更新
|
||||
|
||||
#### Scenario: 发布流水线执行时不依赖已弃用 runtime
|
||||
|
||||
- **WHEN** 发布流水线运行 release workflow
|
||||
- **THEN** 关键发布步骤 SHALL NOT 依赖已被 GitHub-hosted runner 标记为待移除的 runtime 或执行约束
|
||||
|
||||
### Requirement: 版本化发布资产命名
|
||||
|
||||
系统 SHALL 为 server 与 desktop 的发布资产使用包含统一版本号和目标平台信息的文件名,确保 Release 页面可直接区分产物用途与平台。
|
||||
|
||||
Reference in New Issue
Block a user