Skip to content

ci: add per-job timeout-minutes to bound runner hangs - #96

Merged
swperb merged 1 commit into
mainfrom
ci/job-timeouts
Jun 16, 2026
Merged

ci: add per-job timeout-minutes to bound runner hangs#96
swperb merged 1 commit into
mainfrom
ci/job-timeouts

Conversation

@swperb

@swperb swperb commented Jun 16, 2026

Copy link
Copy Markdown
Owner

Why

Run #130's leaks (macOS) job showed as failing ~45 minutes after starting. Root cause: the leak check itself passed (~10s), but the GitHub-hosted macOS runner then hung on the auto-injected Post Run actions/checkout cleanup step and was eventually reclaimed (logs returned BlobNotFound). A re-run passed cleanly — it's a transient runner-infra flake, not a code or memory-leak issue. leaks is a non-required check, so nothing was ever blocked.

With no timeout-minutes, every job inherits GitHub's 6-hour default, so a hung runner can sit for a very long time.

What

Add a per-job timeout-minutes to all 7 CI jobs (10–20 min, vs real runtimes of seconds to ~1 min). A stuck runner now fails fast instead of hanging. No effect on healthy runs.

YAML validated; the affected run #130 is already green after re-run.

🤖 Generated with Claude Code

Run #130's `leaks (macOS)` job passed its actual leak check in ~10s, then hung
~45 minutes on the post-job checkout cleanup before the hosted runner was
reclaimed and the job was marked failed — a known macOS-runner infra flake (the
re-run passed cleanly). With no `timeout-minutes`, jobs inherit the 6-hour
default, so a hung runner ties up the job for a very long time.

Add a generous per-job timeout (10-20 min; real runtimes are seconds to ~1 min)
so a stuck runner fails fast instead of hanging. No effect on healthy runs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@swperb
swperb merged commit e8895d1 into main Jun 16, 2026
12 checks passed
@swperb
swperb deleted the ci/job-timeouts branch June 16, 2026 13:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant