From 2d6961c9a98694f6645bb6b687bbc061cfa2dda7 Mon Sep 17 00:00:00 2001 From: Jonathan Hendler Date: Mon, 23 Mar 2026 18:21:16 -0700 Subject: [PATCH] ci: restrict macOS runners to tagged releases only macOS runners consume Actions minutes at 10x the Linux rate, burning through the org 3,000 included minutes. This month JACS alone used 221 dollars worth of metered minutes. - nodejs.yml: remove macOS from CI matrix (Linux-only) - homebrew.yml: only run on tagged releases, not push/PR - python.yml: remove macOS from CI wheel builds (release-pypi handles tags) - rust.yml: change nightly schedule from daily to weekly (Monday) - Add concurrency groups to jacsgo, python, jacs-mcp workflows Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/homebrew.yml | 20 +------------------- .github/workflows/jacs-mcp.yml | 4 ++++ .github/workflows/jacsgo.yml | 4 ++++ .github/workflows/nodejs.yml | 2 +- .github/workflows/python.yml | 8 ++++++-- .github/workflows/rust.yml | 2 +- 6 files changed, 17 insertions(+), 23 deletions(-) diff --git a/.github/workflows/homebrew.yml b/.github/workflows/homebrew.yml index c85b1c32..240d653c 100644 --- a/.github/workflows/homebrew.yml +++ b/.github/workflows/homebrew.yml @@ -2,25 +2,7 @@ name: Homebrew Install Smoke Tests on: push: - branches: ["main"] - paths: - - "jacs/**" - - "jacs-cli/**" - - "binding-core/**" - - "Cargo.toml" - - "Cargo.lock" - - "Formula/**" - - ".github/workflows/homebrew.yml" - pull_request: - branches: ["main"] - paths: - - "jacs/**" - - "jacs-cli/**" - - "binding-core/**" - - "Cargo.toml" - - "Cargo.lock" - - "Formula/**" - - ".github/workflows/homebrew.yml" + tags: ["v*", "cli/v*", "crate/v*"] workflow_dispatch: jobs: diff --git a/.github/workflows/jacs-mcp.yml b/.github/workflows/jacs-mcp.yml index 88d152c5..7918bdaf 100644 --- a/.github/workflows/jacs-mcp.yml +++ b/.github/workflows/jacs-mcp.yml @@ -23,6 +23,10 @@ on: - ".github/workflows/jacs-mcp.yml" workflow_dispatch: +concurrency: + group: mcp-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + env: CARGO_TERM_COLOR: always diff --git a/.github/workflows/jacsgo.yml b/.github/workflows/jacsgo.yml index cd0cb55d..79a84eb3 100644 --- a/.github/workflows/jacsgo.yml +++ b/.github/workflows/jacsgo.yml @@ -21,6 +21,10 @@ on: - ".github/workflows/jacsgo.yml" workflow_dispatch: +concurrency: + group: go-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + env: CARGO_TERM_COLOR: always diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index fd498a59..d5099692 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -31,7 +31,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest] + os: [ubuntu-latest] node-version: ['20'] steps: diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index ba14afd6..81619fa4 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -21,6 +21,10 @@ on: - ".github/workflows/python.yml" workflow_dispatch: # Allows manual triggering +concurrency: + group: python-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + env: CARGO_TERM_COLOR: always @@ -116,7 +120,7 @@ jobs: PY # Job to build wheels for CI coverage (PyPI package name is jacs) - # Only runs on pushes to main (not on PRs) to avoid slow QEMU aarch64 builds. + # macOS wheels built by release-pypi.yml on tagged releases only (macOS = 10x minute multiplier). build-jacs-wheels: name: Build jacs wheels on ${{ matrix.os }} if: github.event_name == 'push' @@ -125,7 +129,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-14, macos-latest] + os: [ubuntu-latest] steps: - name: Checkout code diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 87c78a97..585cc18b 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -38,7 +38,7 @@ on: default: false type: boolean schedule: - - cron: "0 9 * * *" + - cron: "0 9 * * 1" # Weekly on Monday (was daily — saves ~150 min/month) env: CARGO_TERM_COLOR: always