README

QuickRelease
=============
QuickRelease is a lightweight release harness[0] that aims to provide a
framework and supporting infrastructure to help define a process.
This can be a release process, a QA process... just about any kind of process.
Its design goals are to be:
* Lightweight: you shouldn't have to install _anything_ other than Python to
use it.
* Out-of-the-way: it provides a structure to write Python to get your work done
but imposes the least number of limitations on what that code can do or how
it works.
It's especially useful for developing processes that may be driven by your
continuous integration system; use quickrelease to develop the process and
steps anywhere, with low setup-costs for engineers, and have your CI system
call quickrelease when you're ready.
Installation
------------
Like most good Python citizens, quickrelease uses setuptools; installation
should consist of:
python setup.py build
python setup.py install
To get you up and running, there is a TestProcess and TestSteps in the
examples directory.
You can use them in two ways:
1. Copy TestProcess.py into the quickrelease/processes directory and
copy TestSteps.py into the quickrelease/steps directory, under your local
python site-packages directory, if you have permissions to do so.
2. Perform the following steps:
a. Create a directory with a name of your choosing
b. Under it, create two directories named "processes" and "steps"
c. Create a file called "__init__.py" (no quotes) in each the processes
and steps directories.
d. Copy TestProcess.py into the processes directory
e. Copy TestSteps.py into the steps directory
f. Set the QUICKRELEASE_DEFINITIONS_PATH environment variable, pointing
to the directory you created in step 2a.
You should then then be able to run the following to see if it worked:
quickrelease -l
quickrelease -l -p TestProcess
If you'd like to try it out, run:
quickrelease -c examples/sample.cfg -p TestProcess
Then, start modifying TestProcess.py and TestStep.py to fit your needs.
QuickRelease is smart enough to find any new processes and steps that you
put into these directories, and offer them to you, as long as they're
derived from quickrelease's Process and Step classes.
Documentation
-------------
QuickRelease documentation is embedded in the source in the form of
epydoc-style markup.
Generated docs are available at:
http://releng-approaches.com/quickrelease/docs/
In the examples/firefox directory, there is a more complex example of a set of
processes and steps to download the Firefox 3.6.28 source tarball, build it,
and copy the resulting installer to /tmp.
TODOs
-----
The following are considered deficiencies in quickrelease and are at the
top of the list to fix.
* Better logging handling; currently, implementors of steps are mostly
responsible for their own logging, usually through printing to sys.stderr
and hoping the person running the script is capturing the output with
shell redirects or /usr/bin/tee. This should provided by quickrelease.
* Cygwin support (works on Win32 under MSYS/MozillaBuild)
A comprehensive list of issues being tracked can be found at:
https://github.com/preed/quickrelease/issues
[0] "Quick release harness"... get it?