Build Pipelines Using Hudson/Jenkins or Bamboo

I’m currently working with the Go CI system from Thoughtworks. One of the things I really like about it is the way that you can have a build “pipeline”. What this means is that you can have a build job which is broken down into, let’s say, 3 different steps:

  1. Checkout and build code, and run unit tests
  2. Package and deploy to a test server
  3. Run acceptance test suite

The way they’ve set this up is pretty decent, it means that every check-in build can be setup to do all of those steps. But you don’t want to wait an hour just to get some feedback on your commit, so Go handles this by giving feedback at the end of each step, rather than having to wait to the end of the whole job.

In the past, when I’ve used Bamboo or Hudson, I’ve setup separate jobs for the check-in builds (which mainly just run unit tests and some light static analysis) and the nightly builds (which do the same, but also include much more static analysis as well as run automated functional tests).

However, it is possible to mimic the Go behaviour using Hudson/Jenkins or Bamboo.  These all support the practice of dependent builds. Hudson jobs have a “Build after other projects are built” option for example. So, to recreate what Go does, you can create separate jobs/plans which run in series. For example:

Job 1: Checks out code, compiles and runs unit tests.

Job 2: Runs coverage report and other static analysis tools such as CPD, PMD and FindBugs

Job 3: Packages up distributable, deploys it and initiates automated tests (e.g. using Selenium)

The developers will get their compile & unit test feedback as quickly as usual, but the process of running a much more exhaustive system will have been spawned as well. No need to wait for the results of the nightly builds to get the full build reports 🙂



  1. Geoff Bullen · April 14, 2011

    Have a look at the build pipeline plugin, it was written for exactly this scenario (and its free). Release notes for 1.1 are here and give you an idea of what it can do:

  2. jamesbetteley · April 14, 2011

    Hi Geoff,
    Yes, I was reading about that this week. I also believe it’s listed in the forthcoming “Jenkins: The Definitive Guide” book. Looking forward to seeing that. The UI with that plugin looks really good, certainly as good as the cruise/Go equivalent. I’ll check it out this weekend.

  3. Jörg · July 5, 2011

    Hi James,

    can you give a hint on how to divide the jobs in hudson? Its rather easy to set up job 1, but what kind of job do I need to pick up the results of job 1? Or does job 2 repeat the steps of job 1?


  4. Farouk · December 13, 2011

    My name is farouk i need a job abut bamboo

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s