Complete guide to the Apache Arrow release management process for Release Managers and contributors
This guide provides comprehensive information on the Apache Arrow release process. It serves as both a learning resource and a detailed checklist for Release Managers performing releases.
The Release Manager must have at least committer status. Some tasks require PMC membership and are marked accordingly throughout this guide.
For the first RC of a major release, create a maintenance branch from main.
1
Clean up local environment
# Delete any existing local tagsgit tag -d apache-arrow-<version># Setup GPG agentsource dev/release/setup-gpg-agent.sh
2
Create maintenance branch
# Execute from an up-to-date main branch# This creates a branch called maint-X.Y.Z locally# X.Y.Z = Major.Minor.Patch (e.g., 9.0.0)archery release cherry-pick X.Y.Z --execute# Push the maintenance branchgit push -u upstream maint-X.Y.Z
3
Create release candidate branch and tag
# Start from the maintenance branchgit checkout maint-X.Y.Z# Create RC branch and tag# <rc-number> starts at 0 (so first RC: 0)# On macOS, install gnu-sed: brew install gnu-seddev/release/01-prepare.sh <version> <next-version> <rc-number># Example: dev/release/01-prepare.sh 9.0.0 10.0.0 0# Push the RC taggit push -u upstream apache-arrow-<version>-rc<rc-number># Push the RC branch (triggers verification jobs)git push -u upstream release-<version>-rc<rc-number>
This triggers GitHub Actions workflows:
verify-rc.yml: Verifies the release candidate
release_candidate.yml: Signs source code and creates a GitHub pre-release
4
Build and submit binaries
# Upload source and signatures to SVN (requires PMC member)dev/release/02-source.sh <version> <rc-number># Submit binary tasks using Crossbowdev/release/03-binary-submit.sh <version> <rc-number># Note the crossbow-build-id from output# Wait for Crossbow jobs to finisharchery crossbow status <crossbow-build-id># Download produced binariesdev/release/04-binary-download.sh <version> <rc-number># Sign and upload binaries (requires PMC member)dev/release/05-binary-upload.sh <version> <rc-number># Sign and upload MATLAB artifacts (requires PMC member)dev/release/06-matlab-upload.sh <version> <rc-number># Publish GitHub Releasedev/release/07-publish-gh-release.sh <version> <rc-number># Start binary verificationdev/release/08-binary-verify.sh <version> <rc-number>
5
Start the vote
Once automatic verification passes, start the vote thread on [email protected]:
# Dry-run to see which commits will be cherry-pickedarchery release cherry-pick X.Y.Z --continue# Update the maintenance brancharchery release cherry-pick X.Y.Z --continue --execute# Push updatesgit push -u upstream maint-X.Y.Z
2
Create new RC
Repeat the RC creation steps with an incremented <rc-number> (e.g., 1, 2, 3…).