Draft aims to be a simple continuous integration system.
- Requires Python 2.6
- No external packages
- Simple setup using wsgi
- Configuration is a python module
- No seperate process to run builds, everything happens via forks from one
- Build framework not included. Draft simply runs a shell command. If the
command has a non zero exit code, then the build is considered failed. stdout
and stderr are saved for each build.
- No web interface required. Use the command line interface if that's all you
- History of each build is kept on the filesystem in a directory, easily
introspected by hand or programatically
Possible future goals:
- A beautiful web interface
- Sending email on failure
- Assocaite build artifacts with the build such as code coverage reports
- Notifications to build are send via an http POST, in json format or via a
command line call
- Scale to large numbers of builds
- Builds on remote machines. Use ssh if you must.
- Require a web interface
- Require more than typing in build commands to configure
Draft requires a python module for configuration. Draft looks in
DRAFT_SETTINGS environment variable for a module name, then the
default of 'settings'. Note the module must be in your python path.
The settings module has one required parameter, 'builds' a list of
dictionaries containing keys 'name' and 'command'. See
There's an optional STATUS_DIR, a path to a draft-writeable directory
which will be created if it doesn't exist. Defaults to './var'.