Skip to content

ci: enable GitHub merge queue with required CI gates - #3195

Open
kevinjqliu wants to merge 1 commit into
apache:mainfrom
kevinjqliu:claude/iceberg-rust-3140-6a505e
Open

ci: enable GitHub merge queue with required CI gates#3195
kevinjqliu wants to merge 1 commit into
apache:mainfrom
kevinjqliu:claude/iceberg-rust-3140-6a505e

Conversation

@kevinjqliu

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

What changes are included in this PR?

Enable GitHub merge queue, same setup as pyiceberg: apache/iceberg-python#3815 (auto-merge) and apache/iceberg-python#3832 (merge queue + required checks).

  • .asf.yaml: required check contexts, Merge Queue ruleset (squash, one at a time), allow_auto_merge. Dropped strict since the queue already tests against latest main.
  • Required workflows now run on merge_group.
  • Removed pull_request path/branch filters from required workflows. A skipped workflow never reports its check, which blocks the PR and the queue entry.
  • ci-required and bindings-python-ci-required aggregate jobs so we don't have to list matrix job names in .asf.yaml.

Not required: audit and website.

After this lands, open PRs need a push or close/reopen to pick up the new checks.

Are these changes tested?

Checked that every required context maps to a job that runs on both pull_request and merge_group, and that the aggregate needs lists cover every job. actionlint and zizmor are clean. The ruleset only takes effect once this is on main.

AI Disclosure

Written with Claude Code, reviewed by me.

Closes apache#3140.

Mirror apache/iceberg-python#3832: define the required checks in
.asf.yaml, add an ASF-managed Merge Queue ruleset (one-at-a-time squash
merges on main), enable auto-merge, and make every required workflow run
on merge_group without pull_request path or branch filters so its check
always reports. CI and Bindings Python CI gain an always-run aggregate
job (ci-required, bindings-python-ci-required) so matrix job names do
not have to be enumerated as required contexts.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 10, 2026 17:16

@kevinjqliu kevinjqliu left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this pr changes .asf.yaml which will trigger asf infra to provision merge queue after the pr is merged


on:
pull_request:
merge_group:

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

allows this workflow to run in merge queue

branches:
- main
pull_request:
paths:

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we need to get rid of all paths: filters, otherwise merge queue might be blocked.

i think this is a good tradeoff in order to enable merge queue. and we can look at optimizations at a later time

run: |
make test

bindings-python-ci-required:

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add this so we dont need to add all the checks to the contexts: block in .asf.yaml and instead just reference this one check by name.

otherwise we'd have to keep them in sync

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It changes repository-wide merge/branch-protection enforcement and required CI gating, so a human should confirm the new required contexts and merge queue behavior won’t block contributions unexpectedly.

Pull request overview

This PR enables GitHub Merge Queue for the main branch by defining required status check contexts in .asf.yaml, adding a merge-queue ruleset, and ensuring the CI workflows that produce those contexts run on merge_group events without being skipped by path/branch filters.

Changes:

  • Configure branch protection required check contexts and a Merge Queue ruleset in .asf.yaml (including enabling auto-merge).
  • Update required GitHub Actions workflows to run on merge_group in addition to existing triggers.
  • Add “aggregate” required-check jobs (ci-required, bindings-python-ci-required) to avoid having to enumerate matrix job names in branch protection.
File summaries
File Description
.asf.yaml Defines required status check contexts for main and adds an active Merge Queue ruleset plus auto-merge enablement.
.github/workflows/ci.yml Adds merge_group trigger and introduces ci-required aggregate gate over the core Rust CI jobs.
.github/workflows/bindings_python_ci.yml Adds merge_group trigger and introduces bindings-python-ci-required aggregate gate for the Python bindings CI.
.github/workflows/public-api.yml Ensures the Public API check runs for merge queue entries via merge_group.
.github/workflows/codeql.yml Ensures the “Analyze Actions” CodeQL job runs for merge queue entries via merge_group.
.github/workflows/zizmor.yml Ensures the “Run zizmor 🌈” job runs for merge queue entries via merge_group.
.github/workflows/asf-allowlist-check.yml Ensures the ASF allowlist checker runs for merge queue entries via merge_group.
Review details
  • Files reviewed: 7/7 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[discuss] enable github merge queue

2 participants