You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem or challenge?
It would be great to have a local script to run full CI, for all functional and non-functional(e.g. lints) tests, this helps development process for human and AI agents.
./dev/ci.sh # Run full CI locally
Here is a previous work that provides a single script to run some non-functional tests
Create a similar script for all functional tests (rust tests, sqllogictests, extended tests, ...)
(might use xtask instead of scripts, see #23414) ### Tracker for non-functional tests
./dev/rust_lint.sh should fully reproduce non-functional CI locally. ./dev/rust_lint.sh --write --allow-dirty should do best-effort fixing where applicable.
Today the script covers cargo fmt, clippy, Cargo.toml formatting, license headers, typos, markdown prettier, and cargo doc.
Remaining CI checks that could be migrated similarly:
Semver / breaking API detector: .github/workflows/breaking_changes_detector.yml, ci/scripts/changed_crates.sh
Markdown link check: .github/workflows/dev.yml, ci/scripts/markdown_link_check.sh
ASF required status check validation: .github/workflows/dev.yml, ci/scripts/check_asf_yaml_status_checks.py
Plan, following #25359: move the size check out of the inline run: block in .github/workflows/large_files.yml into ci/scripts/check_large_files.sh. The script takes a base ref and defaults to the merge base with origin/main, so it can run on a local branch; CI passes the PR or merge-queue SHAs it already has. The workflow's run: line becomes a call to the script so CI and the local suite share one definition, and dev/rust_lint.sh gets it as a read-only step.
Activity
[-]Add Local Scripts to Reproduce Full CI[/-][+]EPIC: Add Local Scripts to Reproduce Full CI[/+]feat(CI): Introduce `xtask` to keep local test and CI commands in sync (
[-]EPIC: Add Local Scripts to Reproduce Full CI[/-][+]Add Local Scripts to Reproduce Full CI[/+]ci: share extended test commands through xtask (apache#25256)
dev: include Markdown link checks in the local lint suite (apache#25287)
dev: include ASF status checks in the local lint suite (apache#25313)
kumarUjjawal commentedon Sep 16, 2026
Future improvements #25359 (review)
dev: include security auditing in the local lint suite (apache#25359)
dev: include dependency checks in the local lint suite (apache#25399)
akashjainn commentedon Sep 17, 2026
I'd like to take the Large file check item.
Plan, following #25359: move the size check out of the inline
run:block in.github/workflows/large_files.ymlintoci/scripts/check_large_files.sh. The script takes a base ref and defaults to the merge base withorigin/main, so it can run on a local branch; CI passes the PR or merge-queue SHAs it already has. The workflow'srun:line becomes a call to the script so CI and the local suite share one definition, anddev/rust_lint.shgets it as a read-only step.dev: include examples README checks in the local lint suite (apache#2…
dev: include dependency checks in the local lint suite (apache#25399)
2 remaining items
dev: add local CodeQL analysis for GitHub Actions
dev: include the HTML documentation build in the local lint suite (ap…
dev: include the HTML documentation build in the local lint suite (ap…
dev: add local CodeQL analysis for GitHub Actions
dev: add local CodeQL analysis for GitHub Actions
ci: share extended test commands through xtask (apache#25256)
dev: include Markdown link checks in the local lint suite (apache#25287)
dev: include ASF status checks in the local lint suite (apache#25313)
dev: include security auditing in the local lint suite (apache#25359)
dev: include dependency checks in the local lint suite (apache#25399)
dev: include examples README checks in the local lint suite (apache#2…
ci: move the large file check into a script shared with rust_lint.sh (a…
dev: include generated config and function docs in the local lint sui…
dev: include the HTML documentation build in the local lint suite (ap…
chore(ci): Register the substrait check job with runs-on, route spark…