- Test the revision to be released
- Bump version for new release (detailed later)
- Prepare RC and vote (detailed later)
- Publish (detailed later)
- Bump version for new development (detailed later)
This step is needed only when you act as a release manager first time.
We use the following variables in multiple steps:
GH_TOKEN: GitHub personal access token to automate GitHub related operationsGPG_KEY_ID: PGP key ID that is used for signing official artifacts by GnuPG
We use dev/release/.env to share these variables in multiple
steps. You can use dev/release/.env.example as a template:
$ cp dev/release/.env{.example,}
$ chmod go-r dev/release/.env
$ editor dev/release/.envSee
https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
how to prepare GitHub personal access token for GH_TOKEN.
Note that you also need to install gh command because our scripts
use gh command to use GitHub API. See
https://github.com/cli/cli#installation how to install gh
command.
If you don't have a PGP key for GPG_KEY_ID, see
https://infra.apache.org/release-signing.html#genegrate how to
generate your PGP key.
Your PGP key must be registered to the followings:
- https://dist.apache.org/repos/dist/dev/arrow/KEYS
- https://dist.apache.org/repos/dist/release/arrow/KEYS
See the header comment of them how to add a PGP key.
Apache arrow committers can update them by Subversion client with their ASF account. e.g.:
$ svn co https://dist.apache.org/repos/dist/dev/arrow
$ cd arrow
$ head KEYS
(This shows how to update KEYS)
$ svn ci KEYSRun dev/release/bump_version.sh on a working copy of your fork not
git@github.com:apache/arrow-java:
$ git clone git@github.com:${YOUR_GITHUB_ACCOUNT}/arrow-java.git arrow-java.${YOUR_GITHUB_ACCOUNT}
$ cd arrow-java.${YOUR_GITHUB_ACCOUNT}
$ dev/release/bump_version.sh ${NEW_VERSION}Here is an example to bump version to 19.0.0:
$ dev/release/bump_version.sh 19.0.0
It creates a feature branch and adds a commit that bumps version. This opens a pull request from the feature branch.
We need to merge the pull request before we cut a RC. If we try cutting a RC without merging the pull request, the script to cut a RC is failed.
You can use dev/release/release_rc.sh.
Requirements to run release_rc.sh:
- You must be an Apache Arrow committer or PMC member
- You must prepare your PGP key for signing
- You must configure Maven
Configure Maven to publish artifacts to Apache repositories. You will
need to setup a master password at ~/.m2/settings-security.xml and
~/.m2/settings.xml as specified on the Apache
guide. It
can be tested with the following command:
# You might need to export GPG_TTY=$(tty) to properly prompt for a passphrase
mvn clean install -Papache-releaseRun dev/release/release_rc.sh on a working copy of
git@github.com:apache/arrow-java not your fork:
$ git clone git@github.com:apache/arrow-java.git
$ cd arrow-java
$ dev/release/release_rc.sh ${RC}
(Send a vote email to dev@arrow.apache.org.
You can use a draft shown by release_rc.sh for the email.)Here is an example to release RC1:
$ dev/release/release_rc.sh 1The argument of release_rc.sh is the RC number. If RC1 has a
problem, we'll increment the RC number such as RC2, RC3 and so on.
We need to do the followings to publish a new release:
- Publish the source archive to apache.org
- Publish the binary artifacts to repository.apache.org
Run dev/release/release.sh on a working copy of
git@github.com:apache/arrow-java not your fork to publish the source
archive to apache.org:
$ dev/release/release.sh ${VERSION} ${RC}Here is an example to release 19.0.0 RC1:
$ dev/release/release.sh 19.0.0 1Add the release to ASF's report database via Apache Committee Report Helper.
You need to do the followings to publish the binary artifacts to repository.apache.org:
- Logon to the Apache repository: https://repository.apache.org/#stagingRepositories
- Select the Arrow staging repository you created for RC:
orgapachearrow-XXXX - Click the
releasebutton
We should bump version in the main branch for new development after we release a new version.
Run dev/release/bump_version.sh on a working copy of your fork not
git@github.com:apache/arrow-java:
$ git clone git@github.com:${YOUR_GITHUB_ACCOUNT}/arrow-java.git arrow-java.${YOUR_GITHUB_ACCOUNT}
$ cd arrow-java.${YOUR_GITHUB_ACCOUNT}
$ dev/release/bump_version.sh ${NEW_VERSION}-SNAPSHOTHere is an example to bump version to 19.0.1-SNAPSHOT:
$ dev/release/bump_version.sh 19.0.0-SNAPSHOT
It creates a feature branch and adds a commit that bumps version. This
opens a pull request from the feature branch by gh pr create.
Close the milestone here, then open a new milestone for the next release:
https://github.com/apache/arrow-java/milestones
The milestone should be named after the version (e.g. "18.4.0").
Open a pull request on apache/arrow-site announcing the new release and summarizing the changes. Do not include the full changelog, just important entries (breaking changes, new features, major bug fixes) and a link to the full changelog. See an example PR.
Send an email to "announce@apache.org" from your Apache email, CC'ing dev@arrow.apache.org/user@arrow.apache.org. See an example post.
To: announce@apache.org
CC: dev@arrow.apache.org, user@arrow.apache.org
Subject: [ANNOUNCE] Apache Arrow Java 18.2.0 released
The Apache Arrow community is pleased to announce the Arrow Java 18.2.0 release.
The release is available now from our website:
https://arrow.apache.org/install/
and
https://www.apache.org/dyn/closer.cgi/arrow/apache-arrow-java-18.2.0/
Read about what's new in the release at:
https://arrow.apache.org/blog/2025/02/19/arrow-java-18.2.0/
Read the full changelog:
https://github.com/apache/arrow-java/commits/v18.2.0
What is Apache Arrow?
-------------------------------
Apache Arrow is a universal columnar format and multi-language toolbox
for fast data interchange and in-memory analytics. It houses a set of
canonical in-memory representations of flat and hierarchical data
along with multiple language-bindings for structure manipulation. It
also provides low-overhead streaming and batch messaging, zero-copy
interprocess communication (IPC), and vectorized in-memory analytics
libraries.
Please report any feedback to the mailing lists:
https://lists.apache.org/list.html?dev@arrow.apache.org
Regards,
The Apache Arrow community.
Make a post on our BlueSky and LinkedIn accounts. (Ask your fellow PMC members for access if need be, or ask a PMC member to make the post on your behalf.) The post should link to the blog post. See example BlueSky post and example LinkedIn post.
We have a script to verify a RC.
You must install the following commands to use the script:
curlgpgshasumorsha256sum/sha512sumtar
To verify a RC, run the following command line:
$ dev/release/verify_rc.sh ${VERSION} ${RC}Here is an example to verify the release 19.0.0 RC1:
$ dev/release/verify_rc.sh 19.0.0 1If the verification is successful, the message RC looks good! is shown.