Skip to content

ci: bound how long every job may run - #761

Merged
TarikGul merged 3 commits into
mainfrom
tg/ci-timeouts
Sep 14, 2026
Merged

TarikGul merged 3 commits into
mainfrom
tg/ci-timeouts

Conversation

@TarikGul

Copy link
Copy Markdown
Member

Fourteen of eighteen jobs in ci.yml set no timeout-minutes, so GitHub's
six-hour default applied.

That is not theoretical. The rust job hung today on #741, wedged in post-job
cleanup with cargo build, test, three clippy passes and fmt --check all
already green. It sat for 59 minutes before being cancelled by hand, and would
have held the pull request until 18:38. A hung job is worse than a failing one:
it reads as slowness, so nobody investigates.

Budgets are measured, not guessed, taken from the worst duration over six
successful runs on main:

job observed max budget
rust 14m 45m
ios-bindings 4m 15m
everything else 0 to 3m 10m

ios-swift, android-bindings, e2e and workflow-lint already had one
and are untouched.

These are a backstop against a hung runner, not a performance target. A job
legitimately approaching its budget wants the budget raised rather than the job
hurried.

Fourteen of eighteen jobs set no timeout, so GitHub's six-hour default applied.
A job that hangs rather than fails is the worst case: it reads as slowness, it
holds the pull request, and nobody gets a signal until the day is gone. The rust
job did exactly that today, sitting in post-job cleanup with every real step
already green.

Budgets come from the worst duration over six successful runs on the default
branch, with headroom for a cold cache. Rust peaks at fourteen minutes and gets
forty-five; nothing else exceeds five and gets ten, except the uniffi bindings at
fifteen.

These are a backstop for a hung runner, not a performance target. A job that
starts legitimately approaching its budget wants the budget raised.
@github-actions github-actions Bot added the github_actions Pull requests that update GitHub Actions code label Sep 14, 2026
@github-actions

github-actions Bot commented Sep 14, 2026

Copy link
Copy Markdown

CI Status: 17 required jobs green, 15 passed and 2 skipped by path filter.

All job results
job result
android-bindings success
changes success
changeset-guard skipped
codegen success
e2e skipped
explorer success
ios-bindings success
ios-swift success
licenses success
playground success
release-guard success
rust success
ts-client success
ts-debugger success
ts-host success
wasm-provider success
workflow-lint success

Commit 54c89f6a · run log

@TarikGul
TarikGul marked this pull request as ready for review September 14, 2026 16:00
@TarikGul
TarikGul requested a review from a team September 14, 2026 16:00
Comment thread .github/workflows/ci.yml Outdated
Forty five was too generous. Over twenty five successful runs the job sits at a
p50 of 7.5 minutes with a maximum of 14.4, so thirty is a little over twice the
worst case while cutting the dead time a hang can waste by a third.
@TarikGul
TarikGul added this pull request to the merge queue Sep 14, 2026
Merged via the queue into main with commit 30d8569 Sep 14, 2026
27 checks passed
@TarikGul
TarikGul deleted the tg/ci-timeouts branch September 14, 2026 18:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

github_actions Pull requests that update GitHub Actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants