Skip to content

Commit 6674851

Browse files
ci: bound all 16 unbounded workflow jobs on main with timeout-minutes
The main branch carries a different, older set of workflow files than development (which now calls the shared reusable workflows in ConductionNL/.github, bounded at source). None of main's 16 jobs declared timeout-minutes, so a hung job burned a runner for GitHub's 6-hour default. These are not dead files: release-workflow.yaml has recent runs on main, and the PR-triggered jobs (php-checks matrix, frontend-quality, lint-check, both check-branch duplicates) fire on every PR into main, i.e. on every release. Bounds are derived from measured fleet-wide durations (successful and failed executions, skipped excluded) and are deliberately loose -- a timeout that fires under normal contention turns a slow run into a phantom defect. php-checks is set to 30 rather than 20: one job-level bound covers all six matrix legs, and while lint/PHPCS/PHPMD/Psalm/PHPStan run ~4 min, the PHPUnit leg has been observed at 18.9 min while succeeding. No job here calls a reusable workflow, so timeout-minutes is valid on all 16. Additions only; no step, trigger, or job was modified.
1 parent a1d7bee commit 6674851

14 files changed

Lines changed: 41 additions & 0 deletions

.github/workflows/beta-release.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ on:
88
jobs:
99
release-management:
1010
runs-on: ubuntu-latest
11+
# Observed max 0.7 min across 26 fleet runs; 45 matches the shared release
12+
# jobs — a spurious release failure is expensive, so keep this loose.
13+
timeout-minutes: 45
1114
steps:
1215

1316
- name: Checkout Code

.github/workflows/code-quality.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ jobs:
1212
php-checks:
1313
name: ${{ matrix.check.name }}
1414
runs-on: ubuntu-latest
15+
# One job-level bound covers every matrix leg, so it must clear the
16+
# SLOWEST leg. Lint/PHPCS/PHPMD/Psalm/PHPStan run ~4 min, but the PHPUnit
17+
# leg has been observed at 18.9 min while SUCCEEDING — a 20 bound would
18+
# leave ~6% headroom and turn a slow-but-healthy run into a red check.
19+
timeout-minutes: 30
1520
strategy:
1621
fail-fast: false
1722
matrix:
@@ -49,6 +54,8 @@ jobs:
4954
frontend-quality:
5055
name: Frontend Quality
5156
runs-on: ubuntu-latest
57+
# Observed max 5.3 min across 49 fleet runs; 20 leaves ample headroom.
58+
timeout-minutes: 20
5259

5360
steps:
5461
- name: Checkout

.github/workflows/documentation.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ jobs:
1212
deploy:
1313
name: Deploy Documentation
1414
runs-on: ubuntu-latest
15+
# Observed max 2.5 min across 23 fleet runs; 20 leaves ample headroom.
16+
timeout-minutes: 20
1517
if: github.event_name == 'push'
1618
permissions:
1719
contents: write

.github/workflows/pr-check.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ on:
99
jobs:
1010
check-branch:
1111
runs-on: ubuntu-latest
12+
# Observed max 0.1 min across 123 fleet runs; 10 leaves ample headroom.
13+
timeout-minutes: 10
1214
steps:
1315
- name: Check branch
1416
run: |

.github/workflows/pull-request-from-branch-check.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ on:
99
jobs:
1010
check-branch:
1111
runs-on: ubuntu-latest
12+
# Observed max 0.1 min across 123 fleet runs; 10 leaves ample headroom.
13+
timeout-minutes: 10
1214
steps:
1315
- name: Check branch
1416
run: |

.github/workflows/pull-request-lint-check.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ on:
99
jobs:
1010
lint-check:
1111
runs-on: ubuntu-latest
12+
# Observed max 1.4 min across 176 fleet runs; 15 leaves ample headroom.
13+
timeout-minutes: 15
1214

1315
steps:
1416
- name: Checkout repository

.github/workflows/push-development-to-beta.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ on:
1212
jobs:
1313
create-pr:
1414
runs-on: ubuntu-latest
15+
# Observed max 5.6 min across 152 fleet runs; 20 leaves ample headroom.
16+
timeout-minutes: 20
1517
steps:
1618
- name: Checkout Code
1719
uses: actions/checkout@v3

.github/workflows/release-beta.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ on:
88
jobs:
99
release-management:
1010
runs-on: ubuntu-latest
11+
# Observed max 0.7 min across 26 fleet runs; 45 matches the shared release
12+
# jobs — a spurious release failure is expensive, so keep this loose.
13+
timeout-minutes: 45
1114
steps:
1215
- name: Checkout Code
1316
uses: actions/checkout@v3

.github/workflows/release-stable.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ on:
1414
jobs:
1515
release-management:
1616
runs-on: ubuntu-latest
17+
# Observed max 0.7 min across 26 fleet runs; 45 matches the shared release
18+
# jobs — a spurious release failure is expensive, so keep this loose.
19+
timeout-minutes: 45
1720
steps:
1821
- name: Checkout Code
1922
uses: actions/checkout@v3
@@ -149,6 +152,8 @@ jobs:
149152
150153
update-changelog:
151154
runs-on: ubuntu-latest
155+
# Observed ~0.2 min; 15 leaves ample headroom.
156+
timeout-minutes: 15
152157
steps:
153158
- name: Checkout Code
154159
uses: actions/checkout@v3

.github/workflows/release-unstable.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ on:
88
jobs:
99
release-management:
1010
runs-on: ubuntu-latest
11+
# Observed max 0.7 min across 26 fleet runs; 45 matches the shared release
12+
# jobs — a spurious release failure is expensive, so keep this loose.
13+
timeout-minutes: 45
1114
steps:
1215
- name: Checkout Code
1316
uses: actions/checkout@v3

0 commit comments

Comments
 (0)