Skip to content

* CI: give every job an explicit timeout-minutes - #11

Merged
Hawkynt merged 1 commit into
mainfrom
ci/job-timeouts
Sep 2, 2026
Merged

* CI: give every job an explicit timeout-minutes#11
Hawkynt merged 1 commit into
mainfrom
ci/job-timeouts

Conversation

@Hawkynt

@Hawkynt Hawkynt commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Every job in this repository inherited GitHub's default 6-hour limit. A wedged
test or a hung screenshot capture therefore holds a runner for six hours and
queues everything behind it. This adds an explicit timeout-minutes to each job.

Sizes are taken from the durations of successful runs (job execution time, not
run wall-clock), at roughly 2-2.5x the observed maximum with a floor of 15
minutes so a slow runner does not trip them. Every job here finishes well under
four minutes, so the floor applies throughout.

workflow job observed max timeout
_build.yml build-exe 3.0 min 15
_build.yml pack-nuget 0.6 min 15
ci.yml screenshots 1.6 min 15
generate.yml screenshots 1.1 min 15
nightly.yml meta 0.1 min 15
nightly.yml publish 0.8 min 15
nightly.yml prune 0.2 min 15
release.yml version 0.1 min 15
release.yml publish-github 0.8 min 15
release.yml publish-nuget 0.2 min 15

Four jobs are deliberately untouched, because a reusable-workflow call cannot
carry timeout-minutes - the limit has to sit on the jobs inside the called
workflow: ci.yml/ci, nightly.yml/build, release.yml/test, release.yml/build.

Note that ci.yml/ci delegates to Hawkynt/RepositoryTemplate/.github/workflows/dotnet-ci.yml@v1,
so the actual test and coverage jobs are still unbounded and can only be capped
in RepositoryTemplate.

Jobs without timeout-minutes inherit the GitHub default of 6 hours, so a
wedged test or a hung screenshot capture occupies a runner for that long
and queues everything behind it.

Sizes come from the observed durations of successful runs, at roughly
2-2.5x each job's maximum with a floor of 15 minutes so a slow runner
does not trip them.

Jobs that delegate through `uses:` are left alone; a reusable-workflow
call cannot carry timeout-minutes, the limit belongs on the jobs inside
the called workflow.
@Hawkynt
Hawkynt merged commit 6710d6e into main Sep 2, 2026
6 checks passed
@Hawkynt
Hawkynt deleted the ci/job-timeouts branch September 2, 2026 14:18
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