apache/arrow
CI workflows
Apache Arrow's CI is implemented as GitHub Actions. Every workflow lives in .github/workflows/. This page summarizes what each one does.
Build / test workflows (one per language)
| Workflow | Triggers | What it builds | Where it runs |
|---|---|---|---|
cpp.yml |
Push, PR | C++ core + Parquet + Acero + Dataset, plus c_glib in many jobs | Ubuntu, Fedora, AlmaLinux, macOS, also static-only and bundled-only variants |
cpp_extra.yml |
Manual / scheduled | Extended C++ matrix (older toolchains, sanitizers, alternative deps) | Various |
cpp_windows.yml |
Push, PR | C++ + Parquet on Windows | windows-latest |
cuda_extra.yml |
Manual | CUDA-enabled C++ build | Self-hosted GPU runners |
python.yml |
Push, PR | PyArrow with various component combinations | Ubuntu, macOS, Windows |
r.yml |
Push, PR | R package on Linux + macOS + Windows | Multiple R versions |
r_extra.yml |
Manual / scheduled | Extended R matrix (cran-likeness checks, dev R, valgrind) | Linux |
r_nightly.yml |
Scheduled | R-universe nightly builds | Ubuntu |
ruby.yml |
Push, PR | Ruby gems on Ubuntu, Fedora, AlmaLinux, Debian, macOS | Various |
matlab.yml |
Push, PR | MATLAB bindings | macOS, Linux, Windows with MATLAB runners |
archery.yml |
Push, PR | The archery CLI itself |
Ubuntu |
Cross-cutting workflows
| Workflow | Purpose |
|---|---|
integration.yml |
Runs the cross-language integration test suite (C++ ↔ Java ↔ Go ↔ JS ↔ Rust ↔ C# ↔ nano-arrow). |
dev.yml |
Repository hygiene: pre-commit, clang-format, RAT (Release Audit Tool), generated-file drift checks. |
docs.yml |
Builds the Sphinx documentation. |
docs_light.yml |
Lightweight docs build for PRs that only touch documentation. |
Bots and automation
| Workflow | Purpose |
|---|---|
dev_pr.yml |
Validates PR titles against the GH-NNN: [Component] Title convention. |
dev_pr/ |
Sub-workflows triggered by PR-related events. |
pr_bot.yml |
The bot that handles @github-actions crossbow submit ... comments. |
pr_review_trigger.yml |
Triggers downstream checks when reviews complete. |
comment_bot.yml |
Handles the various comment commands (rebase, label, ...). |
check_labels.yml |
Validates issue/PR labels. |
issue_bot.yml |
Handles the take comment to assign issues. |
stale.yml |
Closes stale issues and PRs. |
report_ci.yml |
Aggregates CI results into a single status. |
Release workflows
| Workflow | Purpose |
|---|---|
release.yml |
Builds release artifacts: source tarball, binary wheels, deb/rpm packages. Triggered by tag pushes. |
release_candidate.yml |
Builds release candidates and posts them for verification. |
verify_rc.yml |
Verifies an RC: signature checks, integration tests, source builds across platforms. |
package_linux.yml |
Builds Linux distro packages (Apt, Yum). |
What "required" looks like for a PR
Every PR triggers the per-language workflow for the directories it touched (cpp.yml if cpp/ changed, etc.). The integration workflow runs whenever format files or core C++ change. The lint and PR-validation workflows run on every PR. Crossbow runs are triggered manually by maintainers via pr_bot.yml.
Reusable scripts
Workflows mostly delegate the actual work to scripts in ci/scripts/:
cpp_build.sh,cpp_test.sh— C++.python_build.sh,python_test.sh— Python.r_install.sh,r_test.sh,r_pkgdown.sh— R.ruby_test.sh— Ruby + c_glib.c_glib_build.sh,c_glib_test.sh— c_glib.integration_arrow.sh,integration_dask.sh,integration_substrait.sh— Cross-implementation tests.install_minio.sh,install_azurite.sh,install_gcs_testbench.sh— Local cloud-storage emulators.install_thrift.sh,install_protobuf.sh, etc. — Toolchain installers used when building from source.
All of these are also runnable locally inside the corresponding compose.yaml services.
Self-hosted runners
A few workflows use self-hosted runners — notably the CUDA and ARM nightly jobs. The configuration is declared in the workflow files via runs-on: [self-hosted, ...] labels and is provisioned by runs-on.com. The README acknowledges runs-on as a CI sponsor.
Crossbow dispatcher
Crossbow tasks (dev/tasks/) are dispatched via the GitHub Actions in the apache/arrow-crossbow sibling repo. The PR bot in pr_bot.yml triggers a Crossbow run by posting to the dispatcher with a list of tasks. Each task's success/failure is reported back to the originating PR via comment.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.