Draft aims to be a simple continuous integration system. Design goals: - 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 process - 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 need - 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 - Documentation - Notifications to build are send via an http POST, in json format or via a command line call Anti-goals: - 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 INSTALL: 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 settings_example.py 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'.