Friday, April 29, 2011

How to realize a Continuous Delivery Pipeline with tool X?

In the last years the idea of Build Pipelines was established, especially in the context of Continuous Deployment or Continuous Delivery. Roughly speaking, a that's Continuous Integration v2.0. Rather than working with a collection of CI builds (often with additional nightly builds plus release builds), there is a sequence of builds which models the workflow of all steps which are required to verify a commit before it can go to production Every single commit can travel thru this pipeline. With some good luck it passes all tests and ends up in production.

For Continuous Integration there are a tons of tools around. Wikipedia lists 20+ tools. So, my question is:
What about their support for Build Pipelines? Are any of these tools able to realize Build Pipelines?

Of course, the answer is YES. -- so far it sounds good. ;)

Unfortunately, more in detail the answer is more something like: 
Up to some degree most tools are able to realize some pipelines in some sense.

Uffs. To many "somes", a very vague and disappointing statement. I am not amused.


Ok, maybe I am too rude. Most tools have some features to "tie builds together" in some sense. Realizing build pipelines requires a lot of different features, depending on the nature of our specific build pipeline scenario. But no features provides some valuable documentations and no one gives any good examples. Especially with Jenkins/hudson the situation is a little bit unpleasant. The tool out of the box does not help to realize pipelines. In the universe of jenkins plugins (note: the jenkins project on github contains 500+ repositories) there roughtly 10 plugins which help to realize pipelines, but in most cases you need more than one plugin, the documentation vacous rather than helpful and it takes a log time to figure out how to solve the puzzle.

For the next month I plan to investigate how to realize build pipelines with different tools. I try to consider different scenarios with different kinds of pipelines which are demanding different features.

In order to provide something which has at least a tiny chance to help others, I try to follow two rules: (1) the scenarios are described scenarios using BDD techniques, Given-When-Then, and (2) I am going to provide the example code on github, including example code for the pipeline as well as the configuration for the CI tool (unless its using a db).

I tend to focus on the following list of tools:
  • Jenkins (formerly known as Hudson) as the most famous and vital open source tool.
  • TeamCity by JetBrains
  • Bamboo by Atlassian
  • Pulse by Zutubi, compare this post
  • Last but not least ThoughtWorks GO! which focuses on realizing pipelines.

Please kick me if I do not continue this series...

3 comments:

  1. Hi Alex

    Looking forward to your series. You might be interested to know that there is an early access of Go 2.2 here: http://community.thoughtworks.com/posts/ceed08929c

    It features clicky administration and there's no license required for community edition. The GA version will be out in less than two weeks.

    ReplyDelete
  2. Hi Jez,

    thanks for your comment, nice that you heard about this blog post. ;)

    GO 2.2 sounds great, I played with eap1 and I am going to start to work with eap2 today.
    Best,
    Alex

    ReplyDelete
  3. Also have a look at the build pipeline plugin for Jenkins. http://code.google.com/p/build-pipeline-plugin/

    Let me know if you find our documentation "vacous rather than helpful":-)

    You'll find some further documentation on our blog - http://www.centrumsystems.com.au/blog/?p=165

    ReplyDelete