I was listening to the Oracle Author Podcasts yesterday and they had the authors of Hudson Continuous Integration in Practice. Ed Burns and Winston Prakash were discussing the main uses for Hudson and some of the best practices.
I have used Hudson for continuous integration at Dice and now at Zirous. I think it is a must have for any Java project. When you have more than one developer you need to be building your code and quickly see when the code doesn’t compile or when unit tests are not running.
In this podcast Ed and Winston talked about building software and creating a build pipeline with a hierarchy. I remember a time I was doing some consulting at a company that had no continuous integration environment. Multiple developers would check in code and constantly people would have issues with their build not working. This problem could have been easily solved with Hudson.
Hudson is a helpful tool to keep your build compiling and finding out quickly when a check in has caused a problem. Hudson has many plug ins and tools it can incorporate to help with your code base. It integrates well with many types of Software Configuration Management (SCM). I have used it with CVS and Subversion, I know many people use it too with Git or other distributed SCM tools.
The authors also discussed using it with distributed teams that may be in different time zones. A tool like Hudson is a must. You can setup automated builds to run at certain times too and perhaps do full run of unit tests or automated regression. The authors also stressed Hudson is written in Java but can be used for lots of other platforms.