From 1a4df59bf37c381e487dd3a891291c0b188d80e7 Mon Sep 17 00:00:00 2001 From: Maurice Date: Wed, 7 Oct 2026 16:52:26 +0200 Subject: [PATCH] ci: give every job a timeout No job had timeout-minutes, so a hung step held a runner for GitHub's six-hour default. Test and housekeeping jobs stop after 45 minutes, the image builds after two hours. --- .github/workflows/close-stale-invalid-titles.yml | 1 + .github/workflows/close-stale-wrong-branch.yml | 1 + .github/workflows/close-untitled-issues.yml | 1 + .github/workflows/docker-dev.yml | 3 +++ .github/workflows/docker.yml | 4 ++++ .github/workflows/enforce-target-branch.yml | 1 + .github/workflows/lint-prettier.yml | 1 + .github/workflows/publish-plugin-sdk.yml | 1 + .github/workflows/security.yml | 1 + .github/workflows/test.yml | 11 +++++++++++ .github/workflows/wiki.yml | 1 + 11 files changed, 26 insertions(+) diff --git a/.github/workflows/close-stale-invalid-titles.yml b/.github/workflows/close-stale-invalid-titles.yml index 93ea61037..1c56d4f77 100644 --- a/.github/workflows/close-stale-invalid-titles.yml +++ b/.github/workflows/close-stale-invalid-titles.yml @@ -11,6 +11,7 @@ jobs: close-stale: if: github.repository == 'liketrek/TREK' runs-on: ubuntu-latest + timeout-minutes: 45 steps: - name: Close stale invalid-title issues uses: actions/github-script@v7 diff --git a/.github/workflows/close-stale-wrong-branch.yml b/.github/workflows/close-stale-wrong-branch.yml index 1859f7018..55ede86b4 100644 --- a/.github/workflows/close-stale-wrong-branch.yml +++ b/.github/workflows/close-stale-wrong-branch.yml @@ -12,6 +12,7 @@ jobs: close-stale: if: github.repository == 'liketrek/TREK' runs-on: ubuntu-latest + timeout-minutes: 45 steps: - name: Close stale wrong-base-branch PRs uses: actions/github-script@v7 diff --git a/.github/workflows/close-untitled-issues.yml b/.github/workflows/close-untitled-issues.yml index f5ada9b6a..c84ce4cce 100644 --- a/.github/workflows/close-untitled-issues.yml +++ b/.github/workflows/close-untitled-issues.yml @@ -11,6 +11,7 @@ jobs: check-title: if: github.repository == 'liketrek/TREK' runs-on: ubuntu-latest + timeout-minutes: 45 steps: - name: Flag or redirect issue uses: actions/github-script@v7 diff --git a/.github/workflows/docker-dev.yml b/.github/workflows/docker-dev.yml index 4a35a0920..ae98b83dc 100644 --- a/.github/workflows/docker-dev.yml +++ b/.github/workflows/docker-dev.yml @@ -20,6 +20,7 @@ jobs: version-bump: if: github.repository == 'liketrek/TREK' runs-on: ubuntu-latest + timeout-minutes: 120 outputs: version: ${{ steps.bump.outputs.VERSION }} sha: ${{ steps.bump.outputs.SHA }} @@ -68,6 +69,7 @@ jobs: build: runs-on: ${{ matrix.runner }} + timeout-minutes: 120 needs: version-bump strategy: fail-fast: false @@ -128,6 +130,7 @@ jobs: merge: runs-on: ubuntu-latest + timeout-minutes: 120 needs: [version-bump, build] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index ec5447c67..fa27a782f 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -24,6 +24,7 @@ jobs: version-bump: if: github.repository == 'liketrek/TREK' runs-on: ubuntu-latest + timeout-minutes: 120 outputs: version: ${{ steps.bump.outputs.VERSION }} steps: @@ -114,6 +115,7 @@ jobs: build: runs-on: ${{ matrix.runner }} + timeout-minutes: 120 needs: version-bump strategy: fail-fast: false @@ -174,6 +176,7 @@ jobs: merge: runs-on: ubuntu-latest + timeout-minutes: 120 needs: [version-bump, build] steps: - uses: actions/checkout@v4 @@ -232,6 +235,7 @@ jobs: release-helm: runs-on: ubuntu-latest + timeout-minutes: 120 needs: version-bump steps: - name: Checkout diff --git a/.github/workflows/enforce-target-branch.yml b/.github/workflows/enforce-target-branch.yml index 2b41b2ec4..bcb9d3a97 100644 --- a/.github/workflows/enforce-target-branch.yml +++ b/.github/workflows/enforce-target-branch.yml @@ -8,6 +8,7 @@ jobs: check-target: if: github.repository == 'liketrek/TREK' runs-on: ubuntu-latest + timeout-minutes: 45 permissions: pull-requests: write issues: write diff --git a/.github/workflows/lint-prettier.yml b/.github/workflows/lint-prettier.yml index b5677fc63..ba0d12474 100644 --- a/.github/workflows/lint-prettier.yml +++ b/.github/workflows/lint-prettier.yml @@ -10,6 +10,7 @@ concurrency: jobs: lint: runs-on: ubuntu-latest + timeout-minutes: 45 permissions: pull-requests: write steps: diff --git a/.github/workflows/publish-plugin-sdk.yml b/.github/workflows/publish-plugin-sdk.yml index 72ed168df..fa3610fa8 100644 --- a/.github/workflows/publish-plugin-sdk.yml +++ b/.github/workflows/publish-plugin-sdk.yml @@ -16,6 +16,7 @@ jobs: publish: if: github.repository == 'liketrek/TREK' runs-on: ubuntu-latest + timeout-minutes: 45 defaults: run: working-directory: plugin-sdk diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index c522f18c1..3ccfecf18 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -19,6 +19,7 @@ jobs: # Scout login can never succeed there. if: github.repository == 'liketrek/TREK' && github.event.pull_request.head.repo.fork != true runs-on: ubuntu-latest + timeout-minutes: 45 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 713a2165f..9300ba259 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -98,6 +98,7 @@ jobs: plugin-facts: name: Plugin Permission Facts runs-on: ubuntu-latest + timeout-minutes: 45 steps: - uses: actions/checkout@v6 @@ -125,6 +126,7 @@ jobs: i18n-parity: name: i18n Key Parity runs-on: ubuntu-latest + timeout-minutes: 45 steps: - uses: actions/checkout@v6 @@ -139,6 +141,7 @@ jobs: server-quality: name: Server Types & Lint runs-on: ubuntu-latest + timeout-minutes: 45 steps: - uses: actions/checkout@v6 @@ -203,6 +206,7 @@ jobs: client-quality: name: Client Types & Lint runs-on: ubuntu-latest + timeout-minutes: 45 steps: - uses: actions/checkout@v6 @@ -231,6 +235,7 @@ jobs: plugin-sdk-quality: name: Plugin SDK Types runs-on: ubuntu-latest + timeout-minutes: 45 defaults: run: working-directory: plugin-sdk @@ -253,6 +258,7 @@ jobs: s3-contract: name: S3 Driver Contract (MinIO) runs-on: ubuntu-latest + timeout-minutes: 45 needs: [plugin-facts, i18n-parity, server-quality, client-quality, plugin-sdk-quality] # Fork PRs don't get repo secrets, so MINIO_LICENSE_KEY would be empty and # the AIStor container would fail to boot. Pushes and manual dispatches do @@ -325,6 +331,7 @@ jobs: server-coverage: name: Server Coverage runs-on: ubuntu-latest + timeout-minutes: 45 needs: [plugin-facts, i18n-parity, server-quality, client-quality, plugin-sdk-quality] steps: - uses: actions/checkout@v6 @@ -363,6 +370,7 @@ jobs: client-coverage: name: Client Coverage runs-on: ubuntu-latest + timeout-minutes: 45 needs: [plugin-facts, i18n-parity, server-quality, client-quality, plugin-sdk-quality] steps: - uses: actions/checkout@v6 @@ -396,6 +404,7 @@ jobs: shared-coverage: name: Shared Coverage runs-on: ubuntu-latest + timeout-minutes: 45 needs: [plugin-facts, i18n-parity, server-quality, client-quality, plugin-sdk-quality] steps: - uses: actions/checkout@v6 @@ -422,6 +431,7 @@ jobs: plugin-sdk-coverage: name: Plugin SDK Coverage runs-on: ubuntu-latest + timeout-minutes: 45 needs: [plugin-facts, i18n-parity, server-quality, client-quality, plugin-sdk-quality] defaults: run: @@ -454,6 +464,7 @@ jobs: scan: name: Scan runs-on: ubuntu-latest + timeout-minutes: 45 # Fork PRs don't receive SONAR_TOKEN — skip the scan rather than fail it. if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository # Coverage jobs failing must stop the scan: a missing lcov file would make diff --git a/.github/workflows/wiki.yml b/.github/workflows/wiki.yml index e36ada88d..5f3ae4fd0 100644 --- a/.github/workflows/wiki.yml +++ b/.github/workflows/wiki.yml @@ -19,6 +19,7 @@ jobs: deploy: if: github.repository == 'liketrek/TREK' runs-on: ubuntu-latest + timeout-minutes: 45 steps: - uses: actions/checkout@v4 - name: Publish to GitHub wiki