Skip to content

Commit 20cea03

Browse files
ci: bound every job, so a hang fails instead of idling
None of the four jobs had a `timeout-minutes`, so each inherited GitHub's six-hour default. That is what a test blocking on `accept()` with no deadline cost the Windows leg — six hours per run, and the only reason it went unnoticed for a day is that every run on `main` was cancelled by the next push before it could finish. Twenty minutes is not a budget; these legs take one to two minutes. It is a tripwire, set about ten times longer than anything here has ever needed. On all four rather than the one that broke. `installer` and `installer-windows` both stand up local servers in `test-install.sh` and `test-install.ps1` and could wedge exactly the same way, and a job that suddenly needs twenty minutes has something wrong with it worth hearing about whichever it is. The comment explaining this lives once, on `build`, where it happened.
1 parent bdd3815 commit 20cea03

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,18 @@ jobs:
3232
matrix:
3333
os: [ubuntu-latest, macos-14, windows-2022]
3434
runs-on: ${{ matrix.os }}
35+
# These legs take one to two minutes. Twenty is not a budget, it is a
36+
# tripwire: without one, a job that stops making progress runs to GitHub's
37+
# six-hour default before anyone hears about it. That is not hypothetical —
38+
# a test that blocked on `accept()` with no deadline wedged the Windows leg
39+
# for its full six hours, and the only reason it went unnoticed for a day
40+
# is that every run on `main` was cancelled by the next push first.
41+
#
42+
# On all three rather than Windows alone: nobody here runs Windows as a
43+
# daily driver, so CI is the only signal it has — but a Unix leg that
44+
# suddenly needs twenty minutes has something wrong with it worth hearing
45+
# about too.
46+
timeout-minutes: 20
3547
permissions:
3648
contents: read
3749
steps:
@@ -113,6 +125,7 @@ jobs:
113125
matrix:
114126
os: [ubuntu-latest, macos-14]
115127
runs-on: ${{ matrix.os }}
128+
timeout-minutes: 20
116129
permissions:
117130
contents: read
118131
steps:
@@ -148,6 +161,7 @@ jobs:
148161
matrix:
149162
shell: [powershell, pwsh]
150163
runs-on: windows-2022
164+
timeout-minutes: 20
151165
permissions:
152166
contents: read
153167
steps:
@@ -268,6 +282,7 @@ jobs:
268282
audit:
269283
name: advisories (blocks on a vulnerability)
270284
runs-on: ubuntu-latest
285+
timeout-minutes: 20
271286
permissions:
272287
contents: read
273288
steps:

0 commit comments

Comments
 (0)