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
