From ccecfbcc5904173371056a4230a0ad1ec5def96c Mon Sep 17 00:00:00 2001 From: Forketyfork Date: Fri, 29 May 2026 14:07:52 +0200 Subject: [PATCH] ci(release): bound macOS build steps with timeouts Issue: the v0.65.5 release stalled because the x86_64 build on the Intel runner hung mid-compile and, with no timeout configured, would have sat there until the 6-hour Actions limit, blocking the release and the Homebrew formula update. Solution: add a 30-minute job-level timeout as a backstop, plus tighter per-step timeouts on the two steps that can stall (20m for the build, 10m for the dependency prefetch). A normal job finishes in under 10 minutes, so these leave comfortable headroom while turning a multi-hour hang into a fast failure that frees the runner. The existing retry loop still covers transient non-zero failures. --- .github/workflows/release.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 22762a3..a762283 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -20,6 +20,10 @@ jobs: - arch: x86_64 runner: macos-15-intel runs-on: ${{ matrix.runner }} + # Backstop against a hung build (e.g. a stalled Zig compile on the Intel + # runner) so the job fails fast and frees the runner instead of sitting + # until the 6-hour Actions limit. A normal job finishes in well under 10m. + timeout-minutes: 30 env: ZIG_GLOBAL_CACHE_DIR: ${{ github.workspace }}/architect/.zig-cache ZIG_LOCAL_CACHE_DIR: ${{ github.workspace }}/architect/.zig-cache/local @@ -52,6 +56,7 @@ jobs: authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - name: Prefetch Zig dependencies + timeout-minutes: 10 run: | for i in 1 2 3; do nix develop --command just setup && break @@ -61,6 +66,7 @@ jobs: working-directory: architect - name: Build release + timeout-minutes: 20 run: | for i in 1 2 3; do nix develop --command zig build -Doptimize=ReleaseFast && break