Writing, they say, is never done, it’s just due; as it is with software.
I’m happy to announce a project I’ve been working on for some time now: QuickRelease.
QuickRelease is a lightweight harness1 with a focus on automating build and release-related activities.
Searching Google Images for “quick release”
returns some… interesting results…
It’s designed to fit snuggly into your build and release process, between the existing build system-proper2 and the continuous integration system3, freeing you from being tied to a particular continuous integration system, but also allowing you to define processes (release processes, especially) that don’t belong in the build system and don’t make any sense to put in the continuous integration system. It also supports “unit tested” processes, which aren’t the main focus of build or continuous integration systems.
- This is a production-level project: it’s being used by projects and companies to build and ship their software today.
- And they’re doing this on all the major platforms: Linux, Mac, and Windows.
- Extremely lightweight. By design. The only dependency is Python 2.x4
- Designed to provide a framework to help guide the design of and clearly describe build/release processes and steps, but places very few restrictions on the build engineer; steps are implemented in pure-Python; few assumptions are made once execution is handed off to those classes5.
- Prompts the design of “unit-testable” processes… but doesn’t force it (see above principle).
- Promotes common build/release-related concepts—deliverables, for instance—to first-class, manipulable objects
- Supports both re-running and re-verification of defined processes.
- None; it’s totally wonderful!
- Ok, ok, there is a TODO list in the README
- And a few open issues6…
- Like many software projects, it could use more documentation. A lot more documentation. For now, there are some examples to look at.
You can get the source code directly from github.
(It turns out they have a spiffy download link for the last release, too.)
And there’s a Google group for discussion and help.
If, like me, you spend your days designing release processes, take a few moments, check it out, and join the dev group and let us know what you think!
1 Quick release harness… get it?
2 Makefiles, build.xml, etc.
3 buildbot, Bamboo, Hudson
4 We don’t have time to spend installing twister-this and zorp-interface-that on entire build-farm; we figured you didn’t either…
5 No “got unexpected keyword argument(s)”-garbage
6 Feel free to file more!