===================== KID RELEASE CHECKLIST ===================== These notes describe the general procedure for releasing new version of Kid. Pre-requisites -------------- Make sure the following packages are installed on your system: * Python 2.3, Python 2.4 and Python 2.5 * elementtree * setuptools * docutils * buildutils * pudge * py.test Most of the utility packages can be installed using ``easy_install``. For ``buildutils`` and ``pudge``, it's recommended that you grab the latest revisions from subversion: $ easy_install http://lesscode.org/svn/pudge/trunk $ easy_install http://lesscode.org/svn/buildutils/trunk Since some of the tests require py.test, this should be installed as well (see http://codespeak.net/py/current/doc/getting-started.html). Release Procedure ----------------- 1. Run Tests Check that all tests are passing: $ make test The tests are run for all Python versions 2.3, 2.4 and 2.5. I generally run tests on the following systems when possible: * Debian * SuSE Linux * Fedora Core 4 * FreeBSD * Mac OS X / 10.4+ * Windows XP (run the tests manually) If possible, run the TurboGears nosetests with the new Kid version to make sure nothing ha been broken. 2. Update the ez_setup.py script with the latest version from http://peak.telecommunity.com/dist/ez_setup.py 3. Bump version number in ``kid/release.py`` and ``doc/index.txt``, and ``kid.egg-info/PKG_INFO``. Also change download URL and possibly other meta data in ``kid.egg-info/PKG_INFO``. 4. Update build notes Update ``doc/notes.txt`` with release notes. 5. Commit / Tag After committing release related changes, make a note of the current changeset revision and then tag it: $ svn cp -m 'tagging [changeset] for VERSION release' \ svn://kid-templating.org/trunk \ svn://kid-templating.org/tags/VERSION 6. Build Distributables Make sure you have recent versions of setuptools and buildutils installed for Python 2.3, 2.4 and 2.5. $ pbu -i2.3,2.4,2.5 sdist bdist_egg You should now have ``dist/kid-VERSION.tar.gz``, ``dist/kid-VERSION-py2.3.egg``, ``dist/kid-VERSION-py2.4.egg`` and ``dist/kid-VERSION-py2.5.egg``. This is generally all I release. I like to scan the file contents just to make sure nothing funny made its way into the dist process: $ tar tzf dist/kid-VERSION.tar.gz | less $ ls -1 dist/kid-0.9-*.egg | xargs -n1 unzip -l | less Now it is time to push to the CheeseShop: $ pbu -i2.3,2.4,2.5 sdist bdist_egg upload 7. Generate Checksums This is important for package maintainers. Most package repositories hold the policy that upstream distributables MUST include checksums and many require checksums to be signed. $ pbu checksum --sign (Leave off the --sign option if you're not setup with GPG.) This generates a `dist/kid-VERSION.sha` file and a `dist/kid-VERSION.sha.asc` file if the checksums are signed. 8. Publish Distributables Copy the entire dist directory to kid-templating.org: $ scp -rp dist kid-templating.org:/srv/kid-templating.org/www/htdocs/dist/VERSION Any release (major, minor, build, nightly) should have its own directory. Don't copy new distributables into existing dist directories. i.e., VERSION may be 0.9, 0.9a1, 0.9.5, 20060101, etc... Check that the files made it up properly and are accessible via HTTP: $ links http://www.kid-templating.org/dist/VERSION/ or perhaps: $ curl http://www.kid-templating.org/dist/VERSION/kid-VERSION.sha NOTE: This process was automated through ``pbu`` at one point but I can't seem to get it working properly. I'll get it figured out and update this doc accordingly. 9. Build documentation Build the docs using buildutils/pudge: $ pbu pudge Files generated by pudge are placed under the ``doc/html`` directory. 10. Publish Docs Transfer the files generated under ``doc/html`` to kid-templating.org: $ scp -r doc/*.txt doc/html/* kid-templating.org:/srv/kid-templating.org/www/htdocs/ Check and update the wiki pages at http://www.kid-templating.org/trac/wiki/, particularly make sure that this page is up to date: http://www.kid-templating.org/trac/wiki/GettingStarted