This is an internal EEA tool to be used together with zc.buildout, mr.developer and jarn.mkrelease. Its purpose is to automate a series of 10 steps that are required in order to produce and upload an egg to an eggrepo.
The ten steps are:
- Bump version.txt to correct version; from -dev to final
- Update history file with release date; Record final release date
- Run "mkrelease -d eea" in package dir
- (Optional) Run "python setup.py sdist upload -r eea"
- Update versions.cfg file in buildout: svn up eea-buildout/versions.cfg
- Change version for package in eea-buildout/versions.cfg
- Commit versions.cfg file: svn commit versions.cfg
- Bump package version file; From final to +1-dev
- Update history file. Add Unreleased section
- SVN commit the dev version of the package.
Note: the eggmonkey is scm aware, so it will switch to using svn, git or hg wherever appropriate, but only git and svn are the better tested scm options.
eea.eggmonkey requires python2.6+
To use it, you need to add eea.eggmonkey as an extension to zc.buildout, for example:
[buildout]
extensions =
mr.developer
eea.eggmonkey
parts =
monkey
...
Also, you need to add a new part (+ the python26 part, if you don't already have it):
[monkey]
recipe = zc.recipe.egg
eggs = eea.eggmonkey
python = python26
[python26]
executable = /usr/bin/python2.6
Before you use it, you need to run bin/buildout
(or bin/develop
) at least once.
This allows eggmonkey to learn about the sources and the packages in
auto-checkout.
After that, you can use the monkey script from bin. Learn about its parameters by running
bin/monkey -h
Typical usage would be:
bin/monkey eea.indicators
You can specify multiple packages on the command line, they will all be processed:
bin/monkey eea.indicators eea.workflow eea.version
Or, if you want to release all eggs specified in the auto-checkout section of buildout:
bin/monkey -a
There is a special option that works around bugs in registering the egg with eggrepos and will run a "python sdist upload" operation, using the -u switch:
bin/monkey -u eea.indicators
If you're doing manual upload, you may need to specify a different python path, with the -p switch:
bin/monkey -u eea.indicators -p ~/tools/bin/python
If you need to specify the path to the mkrelease script, you can give it as an argument to the script, using the -m switch:
bin/monkey eea.indicators -m /path/to/bin/mkrelease
If you don't want to specify this path, place the mkrelease script in the PATH environment variable (typically this can be achieved by activating its virtualenv).
Finally, if you're releasing eggs to a different repository, or if you have eggrepo.eea.europa.eu aliased as something different then "eea", you can manually specify this using the -d switch:
bin/monkey -d eeaeggs eea.indicators
If you want to forbid all network operations (for example, during testing), you can run
bin/monkey -n eea.indicators
If you want to skip versions.cfg update (for example running in a buildout without versions.cfg), you can run
bin/monkey -B eea.indicators
If you encounter an error in normal operation, you can resume the release process (after manually fixing the problem) with the -R flag
bin/monkey -R 4 eea.indicators
You can write a file ~/.eggmonkey in the following format:
[*] python = /path/to/python mkrelease = /path/to/mkrelease manual_upload = true domain = eea [eea.indicators] domain = eea pypi
This is a ConfigParser file format where each section is a package name, with the exception of the star (*), which provides defaults for all packages. The following options can be configured: python, mkrelease, manual_upload and domain. The domain option can be a space separated list of package repository aliases where the package will be uploaded.
Needs libsvn-dev and libaprutil1-dev (on Debian systems) and apr-util-devel, subversion-devel on Redhat systems