Continuous integration stack
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.