Verifying a release¶
Each Apache PyIceberg release is validated by the community by holding a vote. A community release manager will prepare a release candidate and call a vote on the Iceberg dev list. To validate the release candidate, community members will test it out in their downstream projects and environments.
In addition to testing in downstream projects, community members also check the release’s signatures, checksums, and license documentation.
Validating a release candidate¶
Release announcements include links to the following:
- A source tarball
- A signature (.asc)
- A checksum (.sha512)
- KEYS file
- GitHub change comparison
After downloading the source tarball, signature, checksum, and KEYS file, here are instructions on how to verify signatures, checksums, and documentation.
Verifying signatures¶
First, import the keys.
Set an environment variable to the version to verify and path to use
export PYICEBERG_VERSION=<version> # e.g. 0.6.1rc3
export PYICEBERG_VERIFICATION_DIR=/tmp/pyiceberg/${PYICEBERG_VERSION}
Next, verify the .asc
file.
svn checkout https://dist.apache.org/repos/dist/dev/iceberg/pyiceberg-${PYICEBERG_VERSION}/ ${PYICEBERG_VERIFICATION_DIR}
cd ${PYICEBERG_VERIFICATION_DIR}
for name in $(ls pyiceberg-*.whl pyiceberg-*.tar.gz)
do
gpg --verify ${name}.asc ${name}
done
Verifying checksums¶
cd ${PYICEBERG_VERIFICATION_DIR}
for name in $(ls pyiceberg-*.whl.sha512 pyiceberg-*.tar.gz.sha512)
do
shasum -a 512 --check ${name}
done
Verifying License Documentation¶
export PYICEBERG_RELEASE_VERSION=${PYICEBERG_VERSION/rc?/} # remove rcX qualifier
tar xzf pyiceberg-${PYICEBERG_RELEASE_VERSION}.tar.gz
cd pyiceberg-${PYICEBERG_RELEASE_VERSION}
Run RAT checks to validate license header:
Testing¶
This section explains how to run the tests of the source distribution.
Python Version
Make sure you're using a supported Python version
First step is to install the package:
To run the full test coverage, with both unit tests and integration tests:
This will spin up Docker containers to faciliate running test coverage.
Cast the vote¶
Votes are cast by replying to the release candidate announcement email on the dev mailing list with either +1
, 0
, or -1
. For example :
[ ] +1 Release this as PyIceberg 0.3.0
[ ] +0
[ ] -1 Do not release this because…
In addition to your vote, it’s customary to specify if your vote is binding or non-binding. Only members of the Project Management Committee have formally binding votes. If you’re unsure, you can specify that your vote is non-binding. To read more about voting in the Apache framework, checkout the Voting information page on the Apache foundation’s website.