Infra: Enable Merge Queue with required CI gates - #3832
Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates the repository’s CI/merge infrastructure so GitHub auto-merge cannot merge a PR until merge-critical workflows have actually produced the expected check contexts.
Changes:
- Removes
pull_request.pathsfilters from key workflows so they always run on PRs (preventing “required check pending because workflow was skipped”). - Adds an explicit
required_status_checks.contextsallowlist formainin.asf.yamlto require specific CI check contexts before merging.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| .github/workflows/python-integration.yml | Removes PR path filters so integration suites always run on PRs. |
| .github/workflows/python-ci.yml | Removes PR path filters so unit/lint/Windows/smoke checks always run on PRs. |
| .github/workflows/check-md-link.yml | Removes PR path filters so markdown link checking runs on all PRs. |
| .asf.yaml | Explicitly enumerates required CI check contexts for branch protection / auto-merge gating. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
rambleraptor
left a comment
There was a problem hiding this comment.
This will increase our runner usage for non-code changes. Most of our PRs are code related, so this is hopefully a wash.
| # strict means "Require branches to be up to date before merging". | ||
| strict: true |
There was a problem hiding this comment.
removed so merge queue is the source of truth
| paths: | ||
| - '**' # Include all files and directories in the repository by default. | ||
| - '!.github/workflows/**' # Exclude all workflow files | ||
| - '.github/workflows/python-ci.yml' # except the current file. | ||
| - '!.github/ISSUE_TEMPLATE/**' # Exclude files and directories that don't impact tests or code like templates, metadata, and documentation. | ||
| - '!.gitignore' | ||
| - '!.asf.yml' | ||
| - '!mkdocs/**' | ||
| - '!.gitattributes' | ||
| - '!README.md' | ||
| - '!CONTRIBUTING.md' | ||
| - '!LICENSE' | ||
| - '!NOTICE' |
There was a problem hiding this comment.
i think this is a ok trade off to enable merge queue.
merge queue requires checks to always run
| ### Required CI and Merge Queue | ||
|
|
||
| - Keep the `required_status_checks.contexts` list in `.asf.yaml` synchronized whenever a required job/check is added, renamed, or removed. Each entry is a job/check context name, not a workflow filename. | ||
| - Verify that every required context reports for both `pull_request` and `merge_group`. Its producer workflow must run on both events. | ||
| - When a workflow uses an aggregate required job, such as `python-ci-required`, keep `if: always()` and its `needs` list in sync with every job whose result should block merging. | ||
| - Do not use `pull_request` path filters in workflows that produce required contexts. A skipped workflow does not report its required context, which blocks pull requests and causes Merge Queue entries to time out. | ||
|
|
There was a problem hiding this comment.
added some rules here so agents can understand the links between files
Fokko
left a comment
There was a problem hiding this comment.
This is new to me, but I guess we can give it a spin
Rationale
PR #3815 enabled auto-merge. This PR completes that work by adding the required checks and configuration needed for GitHub Merge Queue.
Changes
.asf.yamldefines the checks Merge Queue must wait for. Stable aggregate Python gates cover all jobs and always report a final result, following DataFusion's pattern (workflow, required context).Analyze Actionsgates the CodeQL workflow; the separateCodeQLstatus is omitted because it is not reported for merge groups (GitHub CodeQL issue).strictis omitted because Merge Queue provides up-to-date validation and ASF defaults it tofalse(ASF branch protection).merge_group; GitHub requires this event for queue checks to report (GitHub documentation). This matches DataFusion's configuration (lines 24-39).Testing
Repository lint hooks, YAML validation, and workflow coverage assertions pass. No user-facing changes.