From 59a19235239089a72170d71e1476ad98a5191815 Mon Sep 17 00:00:00 2001 From: Brian Love Date: Fri, 19 Jun 2026 16:58:06 -0700 Subject: [PATCH] ci: cap Vercel deploy jobs at 30min to prevent concurrency-group lockups MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The main CI concurrency group is cancel-in-progress:false (don't kill a deploy mid-flight), so a hung job blocks all later runs/deploys. The four Vercel deploy jobs had no timeout (GitHub's 6h default) — today a hung 'Deploy → Vercel' froze deploys for ~4h. A 30min cap (legit deploys take ~12min) turns a hang into a fast failure instead of a multi-hour lockup. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6b1a7c33..a15974c8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -229,6 +229,7 @@ jobs: cockpit-deploy-smoke: name: Cockpit — deploy smoke dry-run + timeout-minutes: 30 # fail fast instead of blocking the main concurrency group on a hang needs: ci-scope if: github.event_name == 'push' || needs.ci-scope.outputs.cockpit_deploy_smoke == 'true' runs-on: ubuntu-latest @@ -595,6 +596,7 @@ jobs: deploy: name: Deploy → Vercel + timeout-minutes: 30 # fail fast instead of blocking the main concurrency group on a hang needs: [ library, @@ -783,6 +785,7 @@ jobs: demo-deploy: name: Canonical demo → Vercel + timeout-minutes: 30 # fail fast instead of blocking the main concurrency group on a hang needs: [examples-chat-smoke, examples-chat-e2e] runs-on: ubuntu-latest if: ${{ always() && !cancelled() && github.ref == 'refs/heads/main' && github.event_name == 'push' }} @@ -859,6 +862,7 @@ jobs: ag-ui-demo-deploy: name: ag-ui demo → Vercel + timeout-minutes: 30 # fail fast instead of blocking the main concurrency group on a hang needs: [examples-ag-ui-e2e] runs-on: ubuntu-latest if: ${{ always() && !cancelled() && github.ref == 'refs/heads/main' && github.event_name == 'push' }}