fix(ci): retry all-required status polling timeouts
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 32s
CI / Detect changes (pull_request) Successful in 1m27s
E2E API Smoke Test / detect-changes (pull_request) Successful in 1m29s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 1m4s
E2E Staging SaaS (full lifecycle) / E2E Staging SaaS (pull_request) Has been skipped
E2E Staging SaaS (full lifecycle) / pr-validate (pull_request) Successful in 1m11s
Handlers Postgres Integration / detect-changes (pull_request) Successful in 1m0s
Harness Replays / detect-changes (pull_request) Successful in 39s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Successful in 19s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Successful in 2m26s
lint-mask-pr-atomicity / lint-mask-pr-atomicity (pull_request) Successful in 2m19s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 1m40s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 2m39s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 28s
E2E Staging External Runtime / E2E Staging External Runtime (pull_request) Successful in 5m30s
Runtime PR-Built Compatibility / detect-changes (pull_request) Successful in 1m1s
sop-checklist / na-declarations (pull_request) N/A: qa-review
lint-required-context-exists-in-bp / lint-required-context-exists-in-bp (pull_request) Successful in 2m44s
security-review / approved (pull_request) Successful in 26s
gate-check-v3 / gate-check (pull_request) Successful in 32s
sop-checklist / all-items-acked (pull_request) Successful in 23s
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 1m45s
sop-tier-check / tier-check (pull_request) Successful in 33s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 1s
CI / Python Lint & Test (pull_request) Successful in 2s
Harness Replays / Harness Replays (pull_request) Successful in 12s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 2m13s
qa-review / approved (pull_request) Refired via /qa-recheck by hongming
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 5m20s
Runtime PR-Built Compatibility / PR-built wheel + import smoke (pull_request) Successful in 8s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 8m38s
CI / Platform (Go) (pull_request) Successful in 16m11s
CI / Canvas (Next.js) (pull_request) Successful in 17m7s
CI / all-required (pull_request) Failing after 26m22s
CI / Canvas Deploy Reminder (pull_request) Successful in 7s

This commit is contained in:
hongming-codex-laptop
2026-05-14 13:38:23 -07:00
parent 3868143c01
commit 3c1a46b067
+11 -2
View File
@@ -579,6 +579,7 @@ jobs:
import os
import sys
import time
import urllib.error
import urllib.request
token = os.environ["GITEA_TOKEN"]
@@ -602,7 +603,7 @@ jobs:
for page in range(1, 6):
url = f"{api_root}/repos/{repo}/commits/{sha}/statuses?page={page}&limit=100"
req = urllib.request.Request(url, headers={"Authorization": f"token {token}"})
with urllib.request.urlopen(req, timeout=20) as resp:
with urllib.request.urlopen(req, timeout=10) as resp:
chunk = json.load(resp)
if not chunk:
break
@@ -618,7 +619,15 @@ jobs:
return latest
while True:
latest = fetch_statuses()
try:
latest = fetch_statuses()
except (TimeoutError, OSError, urllib.error.URLError) as exc:
if time.time() >= deadline:
print(f"FAIL: status polling did not recover before deadline: {exc}", file=sys.stderr)
sys.exit(1)
print(f"WARN: status poll failed, retrying: {exc}", flush=True)
time.sleep(15)
continue
states = {ctx: (latest.get(ctx) or {}).get("status") or (latest.get(ctx) or {}).get("state") or "missing" for ctx in required}
summary = ", ".join(f"{ctx}={state}" for ctx, state in states.items())
if summary != last_summary: