Go: Agile Release Management
At my current company we are moving towards a much more automated continuous delivery model. This reflects more of what some companies such as Facebook are doing to allow a very rapid deployment and integration cycle, such as rolling code on a daily basis to production.
But before you can do this, you need a few things in place from the infrastruture side of things. One of those in my opinion needs to be a good and efficient release model, which allows you to hook in your integration gates through some sort of pipeline flow. For this we use Go by ThoughtWorks.
Workflows
One really awesome feature about Go is it’s purely driven by a pipieline workflow system. So this allows you to configure each pipeline stage within your environments, and push a batch of code from one end down to the other. Usually the latter is a production system which makes this automated process very easy to use.

Realtime
Another great feature is the interface is very easy to use and realtime. So as your pipeline is running, you can see what the progress is at each state within the pipeline. This is handy to quickly catch errors or stages that are not passing acceptance.

Distributed Agents
As your organization grows and more users begin using the system to automate more deployments, the use of agents is what drives the parallel processing of each pipeline job. So everything is distributed so you do not get queued in waiting for your deployment to run. This is very nice, as you can scale these to your needs. Also, you can configure different agents for different purposes, so if you have pipelines that need Windows and some with Linux, you can configure appropriately.

nAnt
Another very helpful feature is that each job can be configured to run an nAnt script. So you can configure each process within your pipeline to fire a seperate nAnt task that can be implemented at your own discretion. For example, a task to run unit tests against your solution or another to automate a xcopy process. This is extremely powerful.
Overall, this is an extremely powerful system not to mention done by some of the industry leaders in the agile space. You can download it now and give it a try, I highly recommend this software and will continue to find uses for it going forward in my own time.
Making a Continuous Deployment Model Succeed
So I’m not going to go into the specifics of what a continuous delivery model is or what it’s supposed to do. I wanted to talk about what I felt could make a continuous delivery model succeed.
