Releasing
Reference:
Environment and requirements
twine is used to register Python projects to PyPI and upload release artifacts:
PKG-INFO
: project description and metadata defined insetup.py
sdist
: source distribution tarballwheel
: binary release that can be platform- and interpreter- dependent
Development libraries need to be installed to build the project and upload artifacts (see Testing):
(shaarli) $ pip install -r requirements/dev.txt
PyPI and TestPyPI configuration
Danger
Once uploaded, artifacts cannot be overwritten. If something goes wrong while releasing artifacts, you will need to bump the release version code and issue a new release.
It is safer to test the release process on TestPyPI first; it provides a sandbox to experiment with project registration and upload.
~/.pypirc
[distutils]
index-servers=
pypi
testpypi
[pypi]
repository = https://upload.pypi.org/legacy/
username = <PyPI username>
[testpypi]
repository = https://test.pypi.org/legacy/
username = <TestPyPI username>
password = <TestPyPI password>
Releasing shaarli-client
Checklist
install Python dependencies
setup PyPI and TestPyPI:
create an account on both servers
edit
~/.pypirc
register the project on both servers
get a GnuPG key to sign the artifacts
double check project binaries and metadata
tag the new release
build and upload the release on TestPyPI
build and upload the release on PyPI
TestPyPI
(shaarli) $ export IDENTITY=<GPG key ID>
(shaarli) $ make test_release
PyPI
(shaarli) $ export IDENTITY=<GPG key ID>
(shaarli) $ make release