ci: skip test matrix on docs-only changes + add job timeouts #108

Merged
the_og merged 1 commits from ci/harden-runner into main 2026-08-13 12:53:23 -04:00
Owner

Hardens CI against the self-hosted Windows runner stall (a docs-only PR — the changelog #107 — got stuck because the Windows job sat in "Waiting to run" behind an offline runner).

Two fixes

  1. paths-ignore: ["**/*.md"] on push + pull_request — a pure-docs PR no longer triggers the test matrix, so it can't wedge behind the Windows runner. Mixed code+docs PRs still run everything.
  2. timeout-minutes per job (lint 10 / test 15 / catalog 10) — a job that hangs mid-run fails instead of hanging forever.

Honest scope

timeout-minutes counts from when a runner picks up the job, so it does not rescue a job stuck "Waiting to run" because the Windows runner is offline; paths-ignore covers the docs case, and code PRs still need the runner up. If you'd rather Windows never block, I can add continue-on-error — say the word.

Caveat

If the repo has branch-protection required checks by name, a docs-only PR (now runs no jobs) could show pending and block; if so we switch to the always-runs-stub pattern. This PR edits ci.yml (not docs), so it runs the full matrix itself.

Hardens CI against the self-hosted **Windows runner** stall (a docs-only PR — the changelog #107 — got stuck because the Windows job sat in "Waiting to run" behind an offline runner). ## Two fixes 1. **`paths-ignore: ["**/*.md"]`** on `push` + `pull_request` — a pure-docs PR no longer triggers the test matrix, so it can't wedge behind the Windows runner. Mixed code+docs PRs still run everything. 2. **`timeout-minutes`** per job (lint 10 / test 15 / catalog 10) — a job that hangs *mid-run* fails instead of hanging forever. ## Honest scope `timeout-minutes` counts from when a runner *picks up* the job, so it does not rescue a job stuck "Waiting to run" because the Windows runner is offline; `paths-ignore` covers the docs case, and code PRs still need the runner up. If you'd rather Windows never block, I can add `continue-on-error` — say the word. ## Caveat If the repo has branch-protection *required* checks by name, a docs-only PR (now runs no jobs) could show pending and block; if so we switch to the always-runs-stub pattern. This PR edits `ci.yml` (not docs), so it runs the full matrix itself.
the_og added 1 commit 2026-08-13 12:51:08 -04:00
ci: skip test matrix on docs-only changes + add job timeouts
CI / Lint (ruff) (pull_request) Successful in 7s
CI / Tests (py3.10 / ubuntu-latest) (pull_request) Successful in 13s
CI / Tests (py3.12 / windows-latest) (pull_request) Successful in 27s
CI / Tests (py3.12 / ubuntu-latest) (pull_request) Successful in 12s
CI / Tests (py3.13 / ubuntu-latest) (pull_request) Successful in 13s
CI / Catalog signature (pull_request) Successful in 7s
583e4e4af0
- paths-ignore '**/*.md' on push/pull_request so a CHANGELOG/README-only PR
  doesn't spin up the (self-hosted, sometimes-offline) Windows test job.
- timeout-minutes on lint (10) / test (15) / catalog-signature (10) so a job
  that hangs mid-run fails instead of hanging forever.

Note: timeout-minutes counts from job start, so it does not rescue a job stuck
'Waiting to run' when the Windows runner is offline — paths-ignore covers the
docs case; code PRs still need the runner up.
the_og merged commit 675490e3c3 into main 2026-08-13 12:53:23 -04:00
the_og deleted branch ci/harden-runner 2026-08-13 12:53:23 -04:00
Sign in to join this conversation.