This is an automated email from the ASF dual-hosted git repository.

github-merge-queue[bot] pushed a commit to branch 
gh-readonly-queue/main/pr-11991-348878b27b0bf93cad5eff94dc4f153e21c262e0
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git

commit b1d70cf74cea0de62dde1e533cbbe680c7bc17d8
Author: Ed Seidl <[email protected]>
AuthorDate: Thu Oct 29 15:50:39 2026 +0000

    ci: Skip macOS checks in forks (#11991)
    
    # Which issue does this PR close?
    
    - Closes #11976
    
    # Rationale for this change
    
    CI checks in contributors' forks are timing out frequently on macOS.
    
    # What changes are included in this PR?
    
    - Restrict the macOS workspace test job to upstream runs, preserving its
    existing lint-only guard.
    - Update CI configuration validation and add regression cases for both
    guards.
     - Document the fork exclusions and retained upstream coverage.
    
     Windows, MSRV, and Linux testing are unchanged.
    
    # Are these changes tested?
    
    Added configuration regressions covering removal of the macOS guard or
    either clause. All configuration/routing and fork-status tests pass,
    along with
     spelling and whitespace checks.
    
    AI assistance was used for the workflow, validator, regression tests,
    and documentation changes.
    
    # Are there any significant user-facing changes?
    
    No
---
 .github/ci/scripts/check-ci-config.py |  5 +++++
 .github/workflows/README.md           |  3 +++
 .github/workflows/rust.yml            |  6 +++---
 CONTRIBUTING.md                       | 10 ++++++----
 4 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/.github/ci/scripts/check-ci-config.py 
b/.github/ci/scripts/check-ci-config.py
index 332d90956b..fbfc6df1ef 100644
--- a/.github/ci/scripts/check-ci-config.py
+++ b/.github/ci/scripts/check-ci-config.py
@@ -70,6 +70,8 @@ def validate_fork_ci(workflows, ci):
     for name, job in rust["jobs"].items():
         if name in {"lint", "unused-dependencies"}:
             assert "if" not in job, f"rust/{name}: lightweight check must run 
upstream"
+        elif name == "macos":
+            assert job.get("if") == "${{ !inputs.lint-only && 
github.repository == 'apache/arrow-rs' }}", "rust/macos: must only run upstream 
outside lint-only mode"
         else:
             assert job.get("if") == "${{ !inputs.lint-only }}", f"rust/{name}: 
runs during lint-only mode"
     docs = load_yaml(workflows / "docs.yml")
@@ -307,6 +309,9 @@ class ConfigurationTests(unittest.TestCase):
             (".asf.yaml", "enforcement: active", "enforcement: disabled"),
             (".asf.yaml", "type: merge_queue", "type: deletion"),
             (".github/workflows/rust.yml", "    if: ${{ !inputs.lint-only 
}}\n", ""),
+            (".github/workflows/rust.yml", "    if: ${{ !inputs.lint-only && 
github.repository == 'apache/arrow-rs' }}\n", ""),
+            (".github/workflows/rust.yml", " && github.repository == 
'apache/arrow-rs'", ""),
+            (".github/workflows/rust.yml", "!inputs.lint-only && ", ""),
             (".github/workflows/ci.yml", "      lint-only: ${{ 
needs.changes.outputs.fork-pr == 'true' }}\n", ""),
             (".github/workflows/docs.yml", "github.repository == 
'apache/arrow-rs' && ", ""),
             (".asf.yaml", '"Required Checks"', '"Missing Check"'),
diff --git a/.github/workflows/README.md b/.github/workflows/README.md
index 67db463f0c..8bdb61e610 100644
--- a/.github/workflows/README.md
+++ b/.github/workflows/README.md
@@ -19,6 +19,9 @@
 
 CI selects checks for pull requests according to their source and changed 
files.
 See the [contributor guide](../../CONTRIBUTING.md#pull-requests-from-forks) 
for fork CI setup.
+Fork pushes and manual runs execute the regular suites except macOS tests and 
Miri.
+macOS tests run only upstream to avoid frequent timeouts on fork runners; they 
remain
+enabled for same-repository and release-branch PRs, upstream manual runs, and 
the merge queue.
 The merge queue runs the full test suite, except Miri, against the proposed 
merge result.
 Pushes to upstream `main` populate caches and publish documentation without 
repeating tests.
 A single required status check combines the results and blocks merging on 
failure.
diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml
index e758a8fc80..720f91dfc2 100644
--- a/.github/workflows/rust.yml
+++ b/.github/workflows/rust.yml
@@ -31,10 +31,10 @@ permissions:
   contents: read
 
 jobs:
-  # Check workspace wide compile and test with default features for
-  # mac
+  # Check workspace wide compile and test with default features for macOS.
+  # Fork macOS runners frequently time out, so keep this testing upstream.
   macos:
-    if: ${{ !inputs.lint-only }}
+    if: ${{ !inputs.lint-only && github.repository == 'apache/arrow-rs' }}
     name: Test on Mac
     runs-on: macos-latest
     steps:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 9d165d4a83..ddbabcf8ba 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -85,11 +85,13 @@ lightweight checks upstream. To enable Actions in your fork:
 3. Push your branch, or manually run `CI` from your fork's **Actions** tab.
    View results and rerun failed jobs there; the PR's `CI (fork)` check may 
lag.
 
-Fork branch pushes and manual runs execute all regular suites, excluding Miri.
+Fork branch pushes and manual runs execute all regular suites, excluding macOS
+tests and Miri. macOS tests are skipped in forks to avoid frequent runner 
timeouts.
 The `CI (fork)` check links to the fork run and is informational. When your PR 
is
-approved and added to the merge queue, the final CI checks run using ASF's 
runners
-against the proposed merge with `main`. Same-repository and release-branch PRs
-retain upstream testing. Miri runs separately on a daily schedule and on 
demand.
+approved and added to the merge queue, the final CI checks, including macOS 
tests,
+run using ASF's runners against the proposed merge with `main`. Same-repository
+and release-branch PRs retain upstream testing. Miri runs separately on a daily
+schedule and on demand.
 
 ## Developer's guide to Arrow Rust
 

Reply via email to