From 577843cecfc8e5ec1aab08080d2f65e96fb4061c Mon Sep 17 00:00:00 2001 From: Andy Grove Date: Mon, 11 May 2026 13:39:15 -0600 Subject: [PATCH 1/2] ci: skip workflows for PRs tagged [skip ci] Add a job-level if: gate to the entry job of every PR-triggered workflow. When the PR title contains [skip ci], the entry job is skipped and downstream jobs cascade-skip via needs. Push triggers are unaffected since GitHub natively honors [skip ci] in commit messages for push events. --- .github/workflows/codeql.yml | 1 + .github/workflows/iceberg_spark_test.yml | 1 + .github/workflows/miri.yml | 1 + .github/workflows/pr_benchmark_check.yml | 1 + .github/workflows/pr_build_linux.yml | 1 + .github/workflows/pr_build_macos.yml | 1 + .github/workflows/pr_markdown_format.yml | 1 + .github/workflows/pr_missing_suites.yml | 1 + .github/workflows/pr_rat_check.yml | 1 + .github/workflows/pr_title_check.yml | 1 + .github/workflows/spark_sql_test.yml | 1 + .github/workflows/validate_workflows.yml | 1 + 12 files changed, 12 insertions(+) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f44b701c8b..918de7231a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -36,6 +36,7 @@ permissions: jobs: analyze: name: Analyze Actions + if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} runs-on: ubuntu-24.04 permissions: contents: read diff --git a/.github/workflows/iceberg_spark_test.yml b/.github/workflows/iceberg_spark_test.yml index 2159af9ad4..525cdea430 100644 --- a/.github/workflows/iceberg_spark_test.yml +++ b/.github/workflows/iceberg_spark_test.yml @@ -66,6 +66,7 @@ jobs: # Build native library once and share with all test jobs build-native: name: Build Native Library + if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} runs-on: ubuntu-24.04 container: image: amd64/rust diff --git a/.github/workflows/miri.yml b/.github/workflows/miri.yml index 438b48f15c..df0b6ba17c 100644 --- a/.github/workflows/miri.yml +++ b/.github/workflows/miri.yml @@ -51,6 +51,7 @@ on: jobs: miri: name: "Miri" + if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/pr_benchmark_check.yml b/.github/workflows/pr_benchmark_check.yml index b07cc03c34..4d727e02a5 100644 --- a/.github/workflows/pr_benchmark_check.yml +++ b/.github/workflows/pr_benchmark_check.yml @@ -46,6 +46,7 @@ env: jobs: benchmark-check: name: Benchmark Compile & Lint Check + if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} runs-on: ubuntu-24.04 container: image: amd64/rust diff --git a/.github/workflows/pr_build_linux.yml b/.github/workflows/pr_build_linux.yml index c7e0c91f74..215165321f 100644 --- a/.github/workflows/pr_build_linux.yml +++ b/.github/workflows/pr_build_linux.yml @@ -63,6 +63,7 @@ jobs: # Fast lint check - gates all other jobs lint: name: Lint + if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} runs-on: ubuntu-24.04 container: image: amd64/rust diff --git a/.github/workflows/pr_build_macos.yml b/.github/workflows/pr_build_macos.yml index 263317cd15..5f2b1d9f6f 100644 --- a/.github/workflows/pr_build_macos.yml +++ b/.github/workflows/pr_build_macos.yml @@ -59,6 +59,7 @@ jobs: # Fast lint check - gates all other jobs (runs on Linux for cost efficiency) lint: name: Lint + if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} runs-on: ubuntu-latest container: image: amd64/rust diff --git a/.github/workflows/pr_markdown_format.yml b/.github/workflows/pr_markdown_format.yml index fa9fe73d52..32d326279e 100644 --- a/.github/workflows/pr_markdown_format.yml +++ b/.github/workflows/pr_markdown_format.yml @@ -28,6 +28,7 @@ on: jobs: prettier-check: + if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/pr_missing_suites.yml b/.github/workflows/pr_missing_suites.yml index 88d32be30b..ca7d2b0d6c 100644 --- a/.github/workflows/pr_missing_suites.yml +++ b/.github/workflows/pr_missing_suites.yml @@ -30,6 +30,7 @@ on: jobs: check-missing-suites: + if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/pr_rat_check.yml b/.github/workflows/pr_rat_check.yml index 5c2352ee3b..32d9b217b4 100644 --- a/.github/workflows/pr_rat_check.yml +++ b/.github/workflows/pr_rat_check.yml @@ -35,6 +35,7 @@ on: jobs: rat-check: name: RAT License Check + if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} runs-on: ubuntu-slim steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/pr_title_check.yml b/.github/workflows/pr_title_check.yml index 339ce1cd2d..91bbd1fdcc 100644 --- a/.github/workflows/pr_title_check.yml +++ b/.github/workflows/pr_title_check.yml @@ -27,6 +27,7 @@ on: jobs: check-pr-title: + if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/spark_sql_test.yml b/.github/workflows/spark_sql_test.yml index ea232738fb..a455de8105 100644 --- a/.github/workflows/spark_sql_test.yml +++ b/.github/workflows/spark_sql_test.yml @@ -73,6 +73,7 @@ jobs: # Build native library once and share with all test jobs build-native: name: Build Native Library + if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} runs-on: ubuntu-24.04 container: image: amd64/rust diff --git a/.github/workflows/validate_workflows.yml b/.github/workflows/validate_workflows.yml index 7ed16995d8..68c6c24a95 100644 --- a/.github/workflows/validate_workflows.yml +++ b/.github/workflows/validate_workflows.yml @@ -32,6 +32,7 @@ on: jobs: validate: + if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 From 36b03bd8f44a8ee020e7887ff52161cec5d5f5b5 Mon Sep 17 00:00:00 2001 From: Andy Grove Date: Mon, 11 May 2026 18:01:33 -0600 Subject: [PATCH 2/2] ci: also honor 'skip-ci' label on PRs --- .github/workflows/codeql.yml | 2 +- .github/workflows/iceberg_spark_test.yml | 2 +- .github/workflows/miri.yml | 2 +- .github/workflows/pr_benchmark_check.yml | 2 +- .github/workflows/pr_build_linux.yml | 2 +- .github/workflows/pr_build_macos.yml | 2 +- .github/workflows/pr_markdown_format.yml | 2 +- .github/workflows/pr_missing_suites.yml | 2 +- .github/workflows/pr_rat_check.yml | 2 +- .github/workflows/pr_title_check.yml | 2 +- .github/workflows/spark_sql_test.yml | 2 +- .github/workflows/validate_workflows.yml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 918de7231a..24d1078d2b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -36,7 +36,7 @@ permissions: jobs: analyze: name: Analyze Actions - if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} + if: ${{ github.event_name != 'pull_request' || (!contains(github.event.pull_request.labels.*.name, 'skip-ci') && !contains(github.event.pull_request.title, '[skip ci]')) }} runs-on: ubuntu-24.04 permissions: contents: read diff --git a/.github/workflows/iceberg_spark_test.yml b/.github/workflows/iceberg_spark_test.yml index 525cdea430..2aed79e6a0 100644 --- a/.github/workflows/iceberg_spark_test.yml +++ b/.github/workflows/iceberg_spark_test.yml @@ -66,7 +66,7 @@ jobs: # Build native library once and share with all test jobs build-native: name: Build Native Library - if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} + if: ${{ github.event_name != 'pull_request' || (!contains(github.event.pull_request.labels.*.name, 'skip-ci') && !contains(github.event.pull_request.title, '[skip ci]')) }} runs-on: ubuntu-24.04 container: image: amd64/rust diff --git a/.github/workflows/miri.yml b/.github/workflows/miri.yml index df0b6ba17c..e31861c786 100644 --- a/.github/workflows/miri.yml +++ b/.github/workflows/miri.yml @@ -51,7 +51,7 @@ on: jobs: miri: name: "Miri" - if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} + if: ${{ github.event_name != 'pull_request' || (!contains(github.event.pull_request.labels.*.name, 'skip-ci') && !contains(github.event.pull_request.title, '[skip ci]')) }} runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/pr_benchmark_check.yml b/.github/workflows/pr_benchmark_check.yml index 4d727e02a5..4d1d4fed14 100644 --- a/.github/workflows/pr_benchmark_check.yml +++ b/.github/workflows/pr_benchmark_check.yml @@ -46,7 +46,7 @@ env: jobs: benchmark-check: name: Benchmark Compile & Lint Check - if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} + if: ${{ github.event_name != 'pull_request' || (!contains(github.event.pull_request.labels.*.name, 'skip-ci') && !contains(github.event.pull_request.title, '[skip ci]')) }} runs-on: ubuntu-24.04 container: image: amd64/rust diff --git a/.github/workflows/pr_build_linux.yml b/.github/workflows/pr_build_linux.yml index 215165321f..d3bf5484f9 100644 --- a/.github/workflows/pr_build_linux.yml +++ b/.github/workflows/pr_build_linux.yml @@ -63,7 +63,7 @@ jobs: # Fast lint check - gates all other jobs lint: name: Lint - if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} + if: ${{ github.event_name != 'pull_request' || (!contains(github.event.pull_request.labels.*.name, 'skip-ci') && !contains(github.event.pull_request.title, '[skip ci]')) }} runs-on: ubuntu-24.04 container: image: amd64/rust diff --git a/.github/workflows/pr_build_macos.yml b/.github/workflows/pr_build_macos.yml index 5f2b1d9f6f..e1ff0749a7 100644 --- a/.github/workflows/pr_build_macos.yml +++ b/.github/workflows/pr_build_macos.yml @@ -59,7 +59,7 @@ jobs: # Fast lint check - gates all other jobs (runs on Linux for cost efficiency) lint: name: Lint - if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} + if: ${{ github.event_name != 'pull_request' || (!contains(github.event.pull_request.labels.*.name, 'skip-ci') && !contains(github.event.pull_request.title, '[skip ci]')) }} runs-on: ubuntu-latest container: image: amd64/rust diff --git a/.github/workflows/pr_markdown_format.yml b/.github/workflows/pr_markdown_format.yml index 32d326279e..d0c122c7a4 100644 --- a/.github/workflows/pr_markdown_format.yml +++ b/.github/workflows/pr_markdown_format.yml @@ -28,7 +28,7 @@ on: jobs: prettier-check: - if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} + if: ${{ github.event_name != 'pull_request' || (!contains(github.event.pull_request.labels.*.name, 'skip-ci') && !contains(github.event.pull_request.title, '[skip ci]')) }} runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/pr_missing_suites.yml b/.github/workflows/pr_missing_suites.yml index ca7d2b0d6c..cd89a651bd 100644 --- a/.github/workflows/pr_missing_suites.yml +++ b/.github/workflows/pr_missing_suites.yml @@ -30,7 +30,7 @@ on: jobs: check-missing-suites: - if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} + if: ${{ github.event_name != 'pull_request' || (!contains(github.event.pull_request.labels.*.name, 'skip-ci') && !contains(github.event.pull_request.title, '[skip ci]')) }} runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/pr_rat_check.yml b/.github/workflows/pr_rat_check.yml index 32d9b217b4..f7d9ca2f0b 100644 --- a/.github/workflows/pr_rat_check.yml +++ b/.github/workflows/pr_rat_check.yml @@ -35,7 +35,7 @@ on: jobs: rat-check: name: RAT License Check - if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} + if: ${{ github.event_name != 'pull_request' || (!contains(github.event.pull_request.labels.*.name, 'skip-ci') && !contains(github.event.pull_request.title, '[skip ci]')) }} runs-on: ubuntu-slim steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/pr_title_check.yml b/.github/workflows/pr_title_check.yml index 91bbd1fdcc..c8abf738c5 100644 --- a/.github/workflows/pr_title_check.yml +++ b/.github/workflows/pr_title_check.yml @@ -27,7 +27,7 @@ on: jobs: check-pr-title: - if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} + if: ${{ github.event_name != 'pull_request' || (!contains(github.event.pull_request.labels.*.name, 'skip-ci') && !contains(github.event.pull_request.title, '[skip ci]')) }} runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/spark_sql_test.yml b/.github/workflows/spark_sql_test.yml index a455de8105..b570d02d36 100644 --- a/.github/workflows/spark_sql_test.yml +++ b/.github/workflows/spark_sql_test.yml @@ -73,7 +73,7 @@ jobs: # Build native library once and share with all test jobs build-native: name: Build Native Library - if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} + if: ${{ github.event_name != 'pull_request' || (!contains(github.event.pull_request.labels.*.name, 'skip-ci') && !contains(github.event.pull_request.title, '[skip ci]')) }} runs-on: ubuntu-24.04 container: image: amd64/rust diff --git a/.github/workflows/validate_workflows.yml b/.github/workflows/validate_workflows.yml index 68c6c24a95..94971c4ce7 100644 --- a/.github/workflows/validate_workflows.yml +++ b/.github/workflows/validate_workflows.yml @@ -32,7 +32,7 @@ on: jobs: validate: - if: ${{ github.event_name != 'pull_request' || !contains(github.event.pull_request.title, '[skip ci]') }} + if: ${{ github.event_name != 'pull_request' || (!contains(github.event.pull_request.labels.*.name, 'skip-ci') && !contains(github.event.pull_request.title, '[skip ci]')) }} runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6