Lots of folks in NetBeans started to use Hudson as a tool for continuous integration, or just for building NetBeans from various clones, or to build test, whatever you can imagine. Just take a look at Deadlock machine and you will see a plenty of NetBeans related jobs. We (NetBeans QE) recently got an idea to utilize Hudson as our testing infrastructure. Yes, NetBeans have a lot of automated tests that are being ran daily and test results are evaluated for potential problems. So you have tests, you have machines, but you still need an infrastructure to connect this together.
We chose Hudson, because it's a great tool, and what's really cool - is extensible by various plugins (available on Hudson's web, or you can write your own if you wish).
The basic idea was to use Hudson as "master-slave" architecture, where you simply set up on master what do you want to run, and master distributes the work to the slaves, that execute the jobs. More detailed approach to this - configure on master which tests do you want to run on which platforms, and they will get executed on appropriate slaves. And getting one level lower - to achieve this, you have to have something we called generic Ant script, which will provide all the stuff needed to execute test:
The main benefits we take from Hudson (aka features we really like):
- Download IDE - the IDE build which will be tested
- Download NetBeans Test Distribution - Test Distribution contains binaries of all tests from NetBeans repo.
- Run selected tests - Specify which tests from Test Distribution will run in tested IDE
The main benefits we take from Hudson (aka features we really like):
- Master-slave architecture - you can have various machine with various architectures/OS added into testing farm.
- JUnit results processing - nice HTML, results trends, charts,...
- Scheduler - triggering of testrun by another job (which can listen e.g. if new production build is available), or "cron-like" settings.
- Email notification - send email if tests do not pass.
- SCP plugin - we can send test results to remote machine that can parse them and store into DB.
- Authentication - simply configure and point Hudson to your LDAP server, really out of box functionality.
- Multiple JDK installations - specify location where are JDKs located and voila - you can run whole matrix of tests - one axis is JDKs, second is platform.
- ...many many others:-)