A friend asked what my current Continuous Integration stack is, so I thought I would share with my every growing list of readers. So here goes, this is what I use at work:

  • Subversion for source control. On Windows TortoiseSVN is a must!
  • Apache ANT for build automation. I use Ant-Contrib Tasks for doing fiddly stuff. More recently I now use of the Groovy Ant Task which makes life a lot easier.
  • Apache Ivy for dependency management. We run an internal repository, so not dependant on the Internet.
  • Testing frameworks include JUnit, DbUnit, StrutsTestCase and EasyMock.
  • Code coverage is measured using EMMA.
  • Static analysis is done using:
    • Checkstyle for coding standards - have zero tolerance for errors.
    • FindBugs for catching bugs - have a policy not allowing any more errors to be introduced and actively trying to reduce to zero.
    • PMD in a sweeper role - report generated largely as an FYI.
  • Hudson is the CI server used to automate the process. It is setup with a master and two slave machines. It works a treat!

Some of you may be asking why ANT instead of Maven? I use Maven for my personal projects, but am not willing to roll it on a large project. Love it or hate it, the fact is that ANT works everywhere and is supported by everything. I also find on larger projects that you often need to deal with corner cases, and this is not (that) easy in Maven.

More recently I have switched to use Mercurial for personal projects, and love it! TortoiseHg on Windows is nice. Next time I have the choice to select a source control system at work, this will be a serious contender with Subversion.