From 4b0d9919d7d0985596d0a032f2f76d2942e0d98a Mon Sep 17 00:00:00 2001 From: Le Ha Quang Date: Mon, 3 Aug 2026 10:57:06 +0200 Subject: [PATCH] ci: add per-job timeout backstops to CI and release Cap every CI job (10min, 15 for the Playwright browser job) and the release job (25min) so a wedged step can't pin a runner until GitHub's ~6h default. Mirrors the timeout-minutes backstop used in the dim0 Tests workflow. --- .github/workflows/ci.yml | 8 ++++++++ .github/workflows/release.yml | 3 +++ 2 files changed, 11 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 54a36e4..2080a09 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,6 +18,9 @@ concurrency: jobs: lint-typecheck: runs-on: ubuntu-latest + # Backstop so a wedged step can't pin the runner until GitHub's ~6h + # default. Generous vs. the ~1-2min this job actually takes. + timeout-minutes: 10 steps: - uses: actions/checkout@v4 # pnpm version is read from `packageManager` in root package.json. @@ -37,6 +40,7 @@ jobs: test-unit: runs-on: ubuntu-latest + timeout-minutes: 10 steps: - uses: actions/checkout@v4 # pnpm version is read from `packageManager` in root package.json. @@ -55,6 +59,9 @@ jobs: test-browser: runs-on: ubuntu-latest + # Higher cap: a hung Playwright/chromium page is the most likely + # thing to wedge, and the chromium download adds cold-start time. + timeout-minutes: 15 steps: - uses: actions/checkout@v4 # pnpm version is read from `packageManager` in root package.json. @@ -76,6 +83,7 @@ jobs: build: runs-on: ubuntu-latest + timeout-minutes: 10 steps: - uses: actions/checkout@v4 # pnpm version is read from `packageManager` in root package.json. diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d29d499..4815ffd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,6 +44,9 @@ concurrency: jobs: release: runs-on: ubuntu-latest + # Full suite + browser tests + rebuild + npm publish in one job. + # Backstop against a wedged test/publish holding the runner open. + timeout-minutes: 25 steps: - name: Checkout uses: actions/checkout@v4