- Make sure everything is committed to version control.
- Branch trunk to a release-X.Y branch.
- Run automatic tests.
- typically:
make clean all check
- typically:
- Update version number,
NEWS,debian/changelog,setup.py. - Test-build upstream tarball, Debian packages, other release files
using unperish.
# unperish clean deb --basetgz=/home/pbuilder-tgz/sid-amd64-debian.tgz lintian# unperish --verbose dch --upload-target=squeeze deb --basetgz=/home/pbuilder-tgz/squeeze-amd64-custom.tgz
- Merge release branch to trunk.
# cd ../trunk && bzr merge ../release-X.Y
- Build again, from trunk, see commands above.
# debsign ../build-area/*.changes# dput ftp-master ../build-area/something.changes# dput code ../build-area/something-else.changes- Build and upload for other architectures too, if relevant.
- Tag the revision in version control.
# bzr tag PROJECTNAME-X.Y(previouslyversion_X_Y, but not anymore)
- Push version control.
# bzr push
- Update bug tracker.
- Copy
NEWS,README, examples, other relevant files to the project home page.# unperish publish-docs --web-directory=$HOME/liw.fi/PROJECT# unperish rsync-publish --rsync-glob=doc/_build/html/. --rsync-to=pieni.net:code.liw.fi/PROJECT/docs/.
- Upload to pypi, if relevant.
# python setup.py register
- Announce on the relevant forums.
- my blog
- a dedicated announcement mailing list
- identi.ca
- Clean up build artifacts, mainly from
...
On version numbers
By default, my projects use X.Y as version numbers, where X changes whenever there is a really good reason to do so, and Y increments for each new release.
If there is a bug-fix-only release, then X.Y.Z can be used as the version number.