Python Packages releasen mit zest.releaser
Releasemanagement mit zest.releaser ist sehr einfach und komfortabel. Unterstützt werden eine Reihe von VC-Systemen wie z.B. SVN, Mercurial und Bazaar. Auf einfache Art und Weise ist es so möglich seine Packages im PyPi (Python Package Index) zu veröffentlichen.
Nachdem wir unser Package mit Leben gefüllt und es unter die Versionskontrolle von Bazaar gestellt haben, wird es Zeit ein erstes Release zu machen. Wir verwenden im folgenden den Weg über zc.buildout, es ist aber auch möglich ohne buildout den zest.releaser zu verwenden.
Installieren von buildout
Falls zc.buildout noch nicht verfügbar sein sollte, können wir dies wie folgt installieren.
easy_install zc.buildout
oder
pip install zc.buildout
Eine Buildout-Struktur erzeugen
In unserem neuen Package erzeugen wir nun eine initiale buildout-Struktur.
builout init
zest.releaser mit buildout instalieren und einrichten
Die nun vorhandene Datei buildout.cfg passen wir wie folgt an.
[buildout]
parts = releaser
[releaser]
recipe = zc.recipe.egg
eggs = zest.releaser
Mit einem Aufruf von buildout wird nun zest.releaser installiert und nützliche scripte erzeugt.
./bin/buildout
ls bin/
buildout fullrelease lasttagdiff longtest \
postrelease prerelease release
Releasemanagement mit zest.releaser
prerelease
Fragt nach einer Versionsnummer (Vorgabe ist die aktuelle Versionsnummer ohne 'dev' suffix), passt mit die setup.py oder version.txt und die HISTORY.txt/CHANGES.txt/CHANGES Dateien an, und bietet an die Änderungen gleich zu committen.
release
Tagged den aktuellen Stand im VCS und checkt diesen in eine temporäres Verzeichnis aus. Bietet an das Package mittels register und upload als source dist im PyPI (Python Package Index) zu veröffentlichen. Hinweis: Wenn das Package noch nicht für den PyPi registriert wurde, wird dieser Punkt sicherheitshalber übersprungen. Soll das Package wirklich im PyPi veröffentlicht werden, kann man es einmalig mit python setup.py register dort registrieren. Läßt man das Registrieren weg, kann man zest.releaser auch für eigene Realeases verwenden die nicht im PyPi veröffentlicht werden sollen.
postrelease
Fragt nach der nächsten Versionsnummer und gibt einen sinnvollen Vorgabewert an. An diese Nummer wird eine Kennzeichnung (dev) angehängt, die kenntlich macht da es sich um eine Entwicklerversion handelt. Dann werden noch die üblichen Dateien setup.py, version.txt und die HISTORY.txt angepasst und ein Commit angeboten.
fullrelease
Vereint alle vorherigen Schritte der Reihenfolge nach. Daher wird man häufig einfach 'fullrelease' verwenden.
Es gibt noch ein paar weitere Helfer die in der originalen Beschreibung erleutert werden.