feat: release CI 加入全流程测试门禁
新增独立可复用测试 workflow(test.yml),在 release 构建前串行执行 lint、默认测试、MySQL 测试和 E2E 测试,测试不通过则阻止发布构建。
This commit is contained in:
@@ -8,12 +8,12 @@
|
||||
|
||||
### Requirement: Tag 驱动发布流水线
|
||||
|
||||
系统 SHALL 仅在符合 `vX.Y.Z` 格式的 Git tag 上触发发布流水线,普通分支 push SHALL NOT 创建发布。发布流水线 SHALL 使用 `./versionctl` 而非 `./backend/cmd/versionctl` 调用版本管理工具。
|
||||
系统 SHALL 仅在符合 `vX.Y.Z` 格式的 Git tag 上触发发布流水线,普通分支 push SHALL NOT 创建发布。发布流水线 SHALL 使用 `./versionctl` 而非 `./backend/cmd/versionctl` 调用版本管理工具。发布流水线 SHALL 在进入构建阶段前完成全流程测试验证,测试未通过 SHALL NOT 执行任何构建。
|
||||
|
||||
#### Scenario: 有效发布 tag
|
||||
|
||||
- **WHEN** 仓库收到 `v1.2.3` tag push
|
||||
- **THEN** 发布流水线 SHALL 启动版本校验、构建和 Release 组装步骤
|
||||
- **THEN** 发布流水线 SHALL 启动版本校验、全流程测试、构建和 Release 组装步骤
|
||||
- **AND** 版本校验步骤 SHALL 使用 `go run ./versionctl print` 和 `go run ./versionctl verify-tag` 获取并验证版本
|
||||
|
||||
#### Scenario: 普通分支推送
|
||||
@@ -21,6 +21,19 @@
|
||||
- **WHEN** 仓库收到非 tag 的分支 push
|
||||
- **THEN** 系统 SHALL NOT 创建 GitHub Release
|
||||
|
||||
#### Scenario: 测试门禁阻止构建
|
||||
|
||||
- **WHEN** 发布流水线中全流程测试步骤(lint、默认测试、MySQL 测试、E2E 测试)任一失败
|
||||
- **THEN** 发布流水线 SHALL NOT 执行任何平台构建
|
||||
- **THEN** 发布流水线 SHALL NOT 创建 Draft Release
|
||||
- **AND** 系统 SHALL NOT 产生可直接公开的成功发布结果
|
||||
|
||||
#### Scenario: 测试通过后并行构建
|
||||
|
||||
- **WHEN** 全流程测试全部通过
|
||||
- **THEN** web、Linux、Windows、macOS 构建 SHALL 并行执行
|
||||
- **AND** 所有构建 job SHALL 依赖 `prepare` 和 `test-gate`
|
||||
|
||||
### Requirement: 发布流水线 Go 模块缓存覆盖
|
||||
|
||||
发布流水线 SHALL 在所有 Go module 的 go.sum 文件存在时正确设置 Go 模块缓存路径,确保新增的 `versionctl` module 依赖也被缓存。
|
||||
@@ -198,7 +211,7 @@
|
||||
|
||||
#### Scenario: 发布成功时创建 Draft Release
|
||||
|
||||
- **WHEN** 版本校验通过且 server、web、desktop 的全部目标发布资产构建完成
|
||||
- **WHEN** 版本校验通过、全流程测试通过且 server、web、desktop 的全部目标发布资产构建完成
|
||||
- **THEN** 系统 SHALL 创建或更新与该 tag 对应的 GitHub Draft Release
|
||||
- **AND** 系统 SHALL 上传 server、web 与 desktop 的全部发布资产
|
||||
- **AND** 系统 SHALL 上传 `SHA256SUMS`
|
||||
@@ -211,7 +224,7 @@
|
||||
|
||||
#### Scenario: 构建失败时阻止完成发布
|
||||
|
||||
- **WHEN** 任一目标发布资产构建失败、打包失败、校验失败、artifact 上传为空或版本校验失败
|
||||
- **WHEN** 任一目标发布资产构建失败、打包失败、校验失败、artifact 上传为空、版本校验失败或全流程测试失败
|
||||
- **THEN** 发布流水线 SHALL 失败
|
||||
- **AND** 系统 SHALL NOT 产生可直接公开的成功发布结果
|
||||
|
||||
|
||||
Reference in New Issue
Block a user