From f30b940119eda57e3ff0a04849b5f4c44b204d6b Mon Sep 17 00:00:00 2001 From: miguelgfierro Date: Thu, 23 Jul 2026 12:02:00 +0200 Subject: [PATCH] ci: cap every job with a timeout A job with no timeout runs to GitHub's 6-hour default when it hangs, billing 360 Actions minutes from one stuck step. Sized off measured runtimes. --- .github/workflows/docs.yml | 2 ++ .github/workflows/nightly.yml | 3 +++ .github/workflows/pr-gate.yml | 5 +++++ .github/workflows/release.yml | 1 + 4 files changed, 11 insertions(+) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index cdd67dce..983b8df8 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -31,6 +31,7 @@ concurrency: jobs: build: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 @@ -53,6 +54,7 @@ jobs: deploy: needs: build runs-on: ubuntu-latest + timeout-minutes: 15 environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 63cb4c39..42f715c3 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -9,6 +9,7 @@ jobs: test: name: Test (nightly) runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: read steps: @@ -27,6 +28,7 @@ jobs: needs: test if: failure() runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: read issues: write @@ -85,6 +87,7 @@ jobs: needs: test if: success() runs-on: ubuntu-latest + timeout-minutes: 15 permissions: contents: read issues: write diff --git a/.github/workflows/pr-gate.yml b/.github/workflows/pr-gate.yml index 28519cfe..62350eb7 100644 --- a/.github/workflows/pr-gate.yml +++ b/.github/workflows/pr-gate.yml @@ -21,6 +21,7 @@ jobs: pre-commit: name: Pre-commit runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@v6 - uses: actions/setup-python@v6 @@ -32,6 +33,7 @@ jobs: lint: name: Lint runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@v6 - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 @@ -48,6 +50,7 @@ jobs: typecheck: name: Type Check runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@v6 - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 @@ -63,6 +66,7 @@ jobs: test: name: Test runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@v6 - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 @@ -78,6 +82,7 @@ jobs: build: name: Build Package runs-on: ubuntu-latest + timeout-minutes: 15 needs: [lint, typecheck, test] steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 73232709..39264bd1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,6 +11,7 @@ jobs: release: name: Build & Release runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@v6 - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0