fix(staging): bound frontend quality build
Staging Backend Quality Gate / validate (pull_request) Successful in 11m6s
Staging Backend Quality Gate / publish (pull_request) Has been skipped

This commit is contained in:
Jesse
2026-08-07 00:06:45 +08:00
parent 6fd2292119
commit f145f52b01
4 changed files with 28 additions and 1 deletions
+16
View File
@@ -2336,3 +2336,19 @@
- 相关记录:BUG-128、BUG-134、ERR-093、ERR-098
- 复发自:无
- 修复版本:待 staging service runtime 对齐与 exact-SHA 部署验收
## BUG-136 | staging quality gate frontend build 无界卡住并耗尽 45 分钟 job
- 状态:investigating
- 首次发现:2026-08-06
- 最近更新:2026-08-06
- 影响面:Gitea `Staging Backend Quality Gate` validate job、staging artifact publication;应用代码、staging host 和 production 未被本次失败修改。
- 用户现象:push gate `1507` 对 reviewed SHA `6fd22921197715e065d0d137fbd7ea5a82a188e4` 完成 frontend `1472/1472`、ESLint `0 error`Next.js 输出 `Compiled successfully in 38.2s` 后约 44 分钟无 further output45 分钟 job 超时,publish 被跳过;公网继续运行旧健康 SHA `e59f15d352787f3d05425ba8c459d092e9801a20`
- 触发条件:质量门禁执行 `npm run build --prefix frontend` 没有命令级 bounded timeoutTurbopack 在编译后静态生成/收尾阶段无输出卡住时只能等待 job-level timeout。
- 根因:quality gate 只有 45 分钟 job 上限,缺少针对生产构建步骤的 fail-closed deadline;此前 PR gate `1503/1505` 同一代码完整 build 通过,说明本次是 runner/build hang,不是已观测的业务编译错误。
- 修复:在 Gitea validate 中将 frontend production build 包在 `timeout 600` 内,超时输出明确事实并以非零状态失败;不跳过 build、不降低测试、不发布旧 artifact。新增 workflow contract 锁定该 bounded timeout。
- 验证:待本地 workflow contract、完整 PR gate、同一 reviewed main/staging SHA 的 push gate、immutable manifest 和 deploy 验收;完成前不得标记 resolved。
- 防复发:所有可能长时间静默的编译、镜像构建和外部网络步骤都必须有命令级 deadline,且 deadline 失败必须 fail closed;保留 job-level timeout 作为第二层上限,不把 timeout 当成功。
- 相关记录:BUG-129、BUG-131、ERR-096、ERR-099
- 复发自:无
- 修复版本:待 frontend build bounded timeout 与 staging exact-SHA 验收