Posted by kohsuke
on May 5, 2006 at 1:59 PM PDT
I just posted Hudson 1.28. Today I'm going to recap what's been happening to Hudson since my last blog, which was about 1.19.
I just posted Hudson 1.28 .
My group uses Hudson for all sorts of projects now, in particular testing. Thus many recent improvements to Hudson is in this area.
- Build status used to be just "success" or "failure". A new state "unstable" is introduced to indicate that a build was OK but tests failed. Hudson got a bit more colorful :-)
- Test results are displayed inside Hudson, with sortable tables and URLs that persists across test runs. For example, if you bookmark a particular test failure in the last successful build, and Hudson runs a new build, then your bookmark will still point to that particular test in the last successful build.
- Test results are now plotted into a chart, allowing you to see a trend in the test result. For example, in the picture below you can see that there were two serious regressions.
Since Hudson supports distributed builds now, another area of improvements is the utilization of nodes and scheduling. For example, the performance team wanted to run tests in Hudson, and when running performance tests, you have to make sure that it runs on the same machine (for trend tracking), and it needs to be the only thing that runs on that machine. So Hudson can now allocate a certain slave node exclusively for certain set of jobs.
Yet another area of improvements is the fingerprint support. We have a large number of interdependent projects on Hudson, and those projects integrate their dependencies from Hudson. So, for example, when a JAXB related bug is reported in JAX-WSA build #123, we need to know which build of JAXB went into this. Or when our continuous JAXB-head/JAXWS-head testing #46 reports regresions, we need to know which JAXB build and JAX-WS build are used for that.
The fingerprinting feature is where Hudson records MD5 sums of "important" files, such as jar files. This allows Hudson to keep track of where a particular jar is used and when, so from this information Hudson can figure out how jars propagate from projects to projects, builds to tests, etc. Wanna now which build of SJSXP is used in JAXB #3533? No problem. What's the SQE test result for JAX-WS #1150? No problem at all.
I'm still working on how to best present this information, but this is already starting to be very useful.
Thanks to my colleagues who are eating the dogfood for me everyday :-), Hudson is improving rapidly. I hope you find it useful, too.