This guide is for maintainers creating release candidates of Apache DataFusion Java and running the release process.
The instructions below assume the upstream git repo
git@github.com:apache/datafusion-java.git is configured as the remote
named apache:
git remote add apache git@github.com:apache/datafusion-java.gitIf you will be releasing the final tarball, your GPG public key must be present in:
- https://dist.apache.org/repos/dist/dev/datafusion/KEYS
- https://dist.apache.org/repos/dist/release/datafusion/KEYS
See https://infra.apache.org/release-signing.html#generate for generating keys.
Committers can add signing keys via Subversion using their ASF account:
svn co https://dist.apache.org/repos/dist/dev/datafusion
cd datafusion
(gpg --list-sigs "Your Name" && gpg --armor --export "Your Name") >> KEYS
svn commit KEYS -m "Add key for Your Name"As part of the Apache governance model, official releases consist of signed source tarballs approved by the PMC.
Pick numbers in sequential order, with 1 for rc1, 2 for rc2, and
so on.
Release tags look like 0.1.0, and release candidate tags look like
0.1.0-rc1.
git fetch apache
git tag 0.1.0-rc1 apache/main
git push apache 0.1.0-rc1Run create-tarball.sh with the version and RC number:
./dev/release/create-tarball.sh 0.1.0 1The script:
- Creates and uploads the release candidate artifacts to the
dist/dev/datafusionlocation on the Apache SVN distribution server, underapache-datafusion-java-<version>-rc<rc>/. - Prints an email template to send to
dev@datafusion.apache.orgfor the release vote.
Send the email printed by the script to dev@datafusion.apache.org.
The vote must remain open for at least 72 hours and requires at least
three PMC +1 votes and no -1 votes to pass.
dev/release/verify-release-candidate.sh downloads the candidate
tarball, verifies its signature and checksums, and builds and tests the
source distribution:
./dev/release/verify-release-candidate.sh 0.1.0 1The script requires curl, git, gpg, a C toolchain, java, and
either shasum or sha256sum/sha512sum to be on the PATH. It will
install a temporary Rust toolchain into the sandbox directory.
Move artifacts from the dev SVN area to the release area using
release-tarball.sh:
./dev/release/release-tarball.sh 0.1.0 1Tag the same release candidate commit with the final release tag:
git checkout 0.1.0-rc1
git tag 0.1.0
git push apache 0.1.0Add the release at https://reporter.apache.org/addrelease.html?datafusion so it appears in the project's board report.
See the ASF documentation on when to archive.
Release candidates should be deleted once the release is published:
svn ls https://dist.apache.org/repos/dist/dev/datafusion | grep datafusion-java
svn delete -m "delete old DataFusion Java RC" \
https://dist.apache.org/repos/dist/dev/datafusion/apache-datafusion-java-0.1.0-rc1/Only the latest release should remain in the release SVN area. Delete
older releases after publishing a new one:
svn ls https://dist.apache.org/repos/dist/release/datafusion | grep datafusion-java
svn delete -m "delete old DataFusion Java release" \
https://dist.apache.org/repos/dist/release/datafusion/datafusion-java-0.1.0