fix(staging): extend Gitea publish timeout
Staging Backend Quality Gate / validate (push) Successful in 20m7s
Staging Backend Quality Gate / publish (push) Successful in 14m51s

This commit is contained in:
Jesse_Chen
2026-08-07 15:18:42 +08:00
parent 162d0b252a
commit 07223b6b4a
3 changed files with 18 additions and 1 deletions
+1 -1
View File
@@ -192,7 +192,7 @@ jobs:
if: gitea.event_name == 'push' && gitea.ref == 'refs/heads/staging'
needs: validate
runs-on: manman-linux
timeout-minutes: 45
timeout-minutes: 60
env:
GITEA_SHA: ${{ gitea.sha }}
GITEA_RUN_ATTEMPT: ${{ gitea.run_attempt }}
+16
View File
@@ -2426,3 +2426,19 @@
- 修复:按列类型将查询结果中的 `DATE` 归一化为本地日历字符串,timestamp 仍保持 `Date`;同步删除 legacy rectification 后的 account stale test。
- 验证:focused 回归 37/37、完整前端 1017/1017、local quick quality gate 291 passed/1 skippedTypeScript、lint0 error)、production build 与 `git diff --check` 通过。
- 修复版本:本次 staging-only 集成候选
## BUG-142 | Gitea staging publish job Run 1540 post-job timeout
- 状态:resolvedlocal candidate
- 首次发现:2026-08-07
- 最近更新:2026-08-07
- 影响面:Gitea `Staging Backend Quality Gate` publish jobvalidate、exact-SHA 与安全校验未修改,production 未涉及。
- 用户现象:Run 1540 在发布步骤完成后进入 post-job timeout,质量门禁未能正常收口。
- 触发条件:publish job 的 45 分钟 job timeout 不足以覆盖发布后的收尾阶段。
- 根因:publish job 与 validate job 共用 45 分钟上限,未为发布收尾保留独立余量。
- 修复:仅将 `.gitea/workflows/backend-quality-gate.yml` 的 publish timeout 从 45 分钟调整为 60 分钟;validate 仍为 45 分钟,安全检查与 exact-SHA 行为保持不变。
- 验证:新增合同断言区分 validate=45 与 publish=60;聚焦 staging workflow test、YAML 解析和 `git diff --check` 通过;未 push、deploy 或触碰 production。
- 防复发:合同测试必须同时锁定 validate 与 publish 的 job timeout,避免发布收尾预算被误改。
- 相关记录:BUG-136
- 复发自:无
- 修复版本:本次提交(staging-only
@@ -125,6 +125,7 @@ test("Gitea quality gate validates before publishing an immutable ACR manifest",
assert.match(workflow, /push:\n\s+branches: \[staging\]/);
assert.match(workflow, /workflow_dispatch:/);
assert.equal((workflow.match(/runs-on: manman-linux/g) ?? []).length, 2);
assert.match(workflow, /validate:[\s\S]*?timeout-minutes: 45[\s\S]*?publish:[\s\S]*?timeout-minutes: 60/);
assert.match(workflow, /GITEA_SHA: \$\{\{ gitea\.sha \}\}/);
assert.equal((workflow.match(/git clean -ffdx/g) ?? []).length, 2);
assert.equal((workflow.match(/git status --porcelain --untracked-files=all/g) ?? []).length, 2);