- 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)
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}
$ GH_TOKEN=${YOUR_GITHUB_TOKEN} dev/release/bump_version.sh ${NEW_VERSION}Here is an example to bump version to 19.0.0:
$ GH_TOKEN=${YOUR_GITHUB_TOKEN} 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 by gh pr create. So you
need gh command and GitHub personal access token.
We need to merge the pull request before we cut a RC. If we try cut 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
If you don't have a PGP key, https://infra.apache.org/release-signing.html#generate may be helpful.
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 KEYSConfigure 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
$ GH_TOKEN=${YOUR_GITHUB_TOKEN} 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:
$ GH_TOKEN=${YOUR_GITHUB_TOKEN} 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:
$ GH_TOKEN=${YOUR_GITHUB_TOKEN} dev/release/release.sh ${VERSION} ${RC}Here is an example to release 19.0.0 RC1:
$ GH_TOKEN=${YOUR_GITHUB_TOKEN} 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}
$ GH_TOKEN=${YOUR_GITHUB_TOKEN} dev/release/bump_version.sh ${NEW_VERSION}-SNAPSHOTHere is an example to bump version to 19.0.1-SNAPSHOT:
$ GH_TOKEN=${YOUR_GITHUB_TOKEN} 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.
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.