Over the passed two months the team I have been working have trialling Cruise Release Management (ThoughtWorks). The trial consists of several phases,
- 1) Replacing CruiseControl.NET with Cruise as the continuous integration (CI) tool. (Current phase)
- 2) Automate releases to the test and showcase environments
- 3) Automate releases to the live environment. Overall I’ve been very impressed with cruise and the transition has gone very well.
Cruise has some very useful feature the main being the ability to run tasks in parallel. The documentation provided with the tool is very in depth around the tools configuration options but there is a gap in theory and ideal setup architecture, this is were this article will try and fill in the gaps. Cruise Concepts: From what we’ve picked up Cruise has two main and very simple concepts behind it:
- 1) Speed through automation.
- 2) Fast feedback by releasing software frequently.
A good resource on these concepts is “Continuous Delivery: A Handbook for Building, Deploying, Testing and Releasing Software” by “Jez Humble; David Farley” currently in Rough Cuts on Safari. Jez Humble is the product manager for Cruise Release Management (ThoughtWorks Studios)
Cruise is build upon pipeline concept (effectively a work flow), a pipeline allows you to break down a complex build into stages, each stage consists of one or more tasks which can be run in parallel this is where cruise can reduce the build time of an application. Each task relates to a Nant task (there are several build tools support Nant and Rake are two of them).
To start using cruise you need to install Cruise Server and a Cruise Agent, in an ideal world you would install a Cruise Agent per environment this way you can run multiple task in parallel on the pipeline without them causing issues with each others state. Some overview links: