Before creating a release candidate, you should test your local checkout:
# git clone https://github.com/apache/sedona-spatialbench.git && cd sedona-spatialbench # or # cd existing/sedona-spatialbench && git fetch upstream && git switch main && git pull upstream main dev/release/verify-release-candidate.sh
This will run all verification tests on your local checkout without requiring any release artifacts.
To create a local tarball for testing:
VERSION="0.3.0" && git archive HEAD --prefix=apache-sedona-spatialbench-${VERSION}/ | gzip > apache-sedona-spatialbench-${VERSION}-src.tar.gz dev/release/verify-release-candidate.sh apache-sedona-spatialbench-${VERSION}-src.tar.gz
Once a release candidate has been uploaded to Apache dist, verify it using:
dev/release/verify-release-candidate.sh 0.3.0 1
This will download the release candidate from https://dist.apache.org/repos/dist/dev/sedona/ and verify it.
Release verification requires:
The verification script will:
When verifying via Docker or on a smaller machine it may be necessary to limit the number of parallel jobs to avoid running out of memory:
export CARGO_BUILD_JOBS=4
Create a release branch on the corresponding remote pointing to the official Apache repository (i.e., https://github.com/apache/sedona-spatialbench). This step must be done by a committer.
git pull upstream main git branch -b branch-0.3.0 git push upstream -u branch-0.3.0:branch-0.3.0
When the state of the branch-x.x.x branch is clean and checks are complete, the release candidate tag can be created:
git tag -a sedona-spatialbench-0.3.0-rc1 -m "Tag Apache Sedona SpatialBench 0.3.0-rc1" git push upstream sedona-spatialbench-0.3.0-rc1
Now the assets need to be signed with signatures.
GPG Signing:
# Sign a file (creates .asc file automatically) gpg -ab apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz # Verify a signature gpg --verify apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz.asc apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz
SHA512 Checksum:
# Generate SHA512 checksum shasum -a 512 apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz > apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz.sha512 # Verify a checksum shasum -a 512 --check apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz.sha512
Upload to Apache SVN:
After the assets are signed, they can be committed and uploaded to the dev/sedona directory of the Apache distribution SVN:
# Set version and RC number variables SEDONA_VERSION="0.3.0" RC_NUMBER="1" # Create the directory in SVN svn mkdir -m "Adding folder" https://dist.apache.org/repos/dist/dev/sedona/sedona-spatialbench-${SEDONA_VERSION}-rc${RC_NUMBER} # Checkout the directory svn co https://dist.apache.org/repos/dist/dev/sedona/sedona-spatialbench-${SEDONA_VERSION}-rc${RC_NUMBER} tmp # Copy files to the checked out directory cp apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz tmp/ cp apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz.asc tmp/ cp apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz.sha512 tmp/ # Add and commit the files cd tmp svn add apache-sedona-spatialbench-${SEDONA_VERSION}-src.tar.gz* svn ci -m "Apache SpatialBench ${SEDONA_VERSION} RC${RC_NUMBER}" cd .. rm -rf tmp
An email must now be sent to dev@sedona.apache.org calling on developers to follow the release verification instructions and vote appropriately on the source release.
After a successful release, versions on the main branch need to be updated. These are currently all derived from Cargo.toml, which can be updated to:
[workspace.package] version = "0.4.0"
After a successful Apache release, the Rust crates can be published to crates.io.
cargo login <your-api-token>
Before publishing, verify that:
All tests pass:
cargo test --workspace
The workspace builds successfully:
cargo build --workspace --release
Check for any issues with dry run:
cargo publish --dry-run
The crates will be published in dependency order. The correct order is:
spatialbench (no workspace dependencies)spatialbench-arrow (depends on spatialbench)spatialbench-cli (depends on both spatialbench and spatialbench-arrow)To publish, run this command:
cargo publish