Balaji Vajjala's Blog

A DevOps Blog from Trenches

The hudson plug-ins you can't live without

This post was originally posted & active @: http://www.tikalk.com As a big fan of hudson-ci I would like to take a note of the most commonly used hudson plug-ins (at least by me) needed in order to maintain a good build environment. This list was collected as part of my experience in the last couple of years. I am sure your may differ then mine mine :).

Setenv plug-in

The The Setenv plug-in lets you set environment variables for a job upon build execution. During migration from CruiseControl I found this plug-in extremely useful, for I could provide the imported script the exact environment it had on the CC machine without the need to change a thing in the build’s logic / parameters, this also applied to the following recommended plug-in:

Parameterized Trigger plug-in

The Parameterized Trigger plug-in lets you add parameters to your build jobs that users enter when they trigger a build. This a very useful plug-in for release or deployment automation, for example, where you want to enter the version number (or label) you want to release or deploy. The biggest feature of this plug-in is the default value so even automatic / SCM triggers get a default value to execute silently.

The Cygpath plug-in

for a *nix oriented guy as myself, this was a great help, all our “special” shell script do not have to be re-written when we are running builds on Windows nodes – and yest we have too … :)

The Cygpath gave me the opportunity to share tools between linux and windows machines this gave us the ability to maintain one tool repository for all our slave regardless of their architecture.

And did I forget to say all you need it to enable this and automatically every batch executed on a windows slave will automatically use Cygwin ? from Cygpath wiki:

  • You install Cygwin on all the Windows slaves

  • Jobs on Hudson that assume Unix environment can now run on all the slaves (including Windows ones)

  • In the system configuration, you use Unix paths for all your tools.

Promoted Builds plug-in

Definitely the #1 plug-in on the list here – this plug-in enables you to do almost anything you can do in a certain Job but run it as a promotion task – if you wish to promote you build to your QA team for testing, or if you want to tag it in SVN or Deploy your artifacts to a maven repository, this is the plug-in you “cannot live without”. Without this plug-in you will need to configure a separate job or Bach Task (see batch tasks plug-in for more details) for every task you want to perform on your build – which makes managing Hudson job a nightmare …

Clover plug-in

Clover is a non-free code coverage tool which is the commercial alternative to Cobertura Emma etc, the Hudson Clover plug-in is an amazing add on which integrates Clover reports and Historical reports into the build flow, which I found extremely helpful. Try configuring Clover to generate historical reports and then publish them to some third-party web server for viewing – this has made Clover integration a breeze, the challenge is even bigger with a distributed build environment which Hudson & Clover plug-in have overcome.

If you don’t have Clover, as mentioned above – the Cobertura and Emma plug-ins are great too which will also integrate with:

Sonar plug-in

Although I am only “P.O.C ing” Sonar+Hudson+Clover, The Sonar plug-in made it trivial to integrate hudson projects with Sonar. Sonar is a powerful open source code quality metrics reporting tool, which displays code quality metrics for multiple projects in a variety of ways on a centralized web location.

For Maven based builds you do not even need to change a line of code in order to get sonar to work which made this module a #2 on my “can’t live without plug-ins”.

Sectioned View plug-in

Sectioned view gives you the ability to create a “Dashboard view” for your job(s) / project(s) – it is quite feature rich if you take a look at it’s configuration and it is very simple to comprehend. A great example is taken from the plug-ins wiki page see:

Section view scrrenshot

Nested Views plug-in

Nested views another View type which allows grouping job views into multiple levels instead of one big list of tabs – this is quite useful and the only disadvantage is you can have both a view and jobs in the same page it’s either a nested view or a list of views – but I presume it will sure be included.

Shelve Project plug-in

If you ever wanted to Hide a jo you are working on and you also would like to prevent it from being triggered by mistake this is the plug-in for you. I often find my self setting up a job and it becomes a work in progress so hiding it to a later time is a great help – this plug-in does just that.

Bugzilla & Jira plug-ins (& there or others I presume)

Well the fact I need both in the same Hudson cluster and I can still have them work side by side was really important. In order for this plug-in to serve you well your CM team has to some extra work on your SCM side, that done you got yourself a link directly into your bug tracking system – the latest versions, query Bugzilla & Jira and can display the Bug details.