The hudson plugins you can't live without
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 :).
The The Setenv plugin lets you set environment variables for a job upon build execution. During migration from CruiseControl I found this plugin 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 plugin:
Parameterized Trigger plugin
The Parameterized Trigger plugin lets you add parameters to your build jobs that users enter when they trigger a build. This a very useful plugin 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 plugin is the default value so even automatic / SCM triggers get a default value to execute silently.
The Cygpath Plugin 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 plugin
Definitely the #1 plugin on the list here - this plugin 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 plugin you "cannot live without". Without this plugin you will need to configure a seperate job or Bach Task (see batch tasks plugin for more details) for every task you want to perform on your build - which makes managing hudson job a nightmare ...
Clover is a non-free code coverage tool which is the commercial alternative to Cobertura Emma etc, the Hudson Clover plugin 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 plugin have overcome.
Although I am only "P.O.C ing" Sonar+Hudson+Clover, The Sonar plugin 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 plugins".
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 plugins wiki page see:
Nested Views plugin
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.
Sheleve Project plugin
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 plugin 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 plugin does just that.
Bugzilla & Jira plugins (& 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 plugin 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.