Continuous Integration build tools are great: they help us ensure our product works after every commit, keep historical data and metrics, build our product for all target environments, and do many more useful things. But there's one key aspect that often gets overlooked: They're fun.
More specifically, creating ways to get notified about the build status is fun. Sure, a simple e-mail with a title like BUILD SUCCEEDED or BUILD FAILED is not all that entertaining. But if you look beyond e-mails and RSS feeds, build status notification becomes an engaging, creative challenge. There's something fascinating about making a computer trigger some physical event - turning on a light, making a sound, or displaying a message on a big screen - that gets people excited about Continuous Integration.
Here's what our team is using right now:
We are a small team distributed across two states working on the one project. There are several builds associated with this project, from unit tests to automated end-to-end "smoke tests" using Selenium. We use TeamCity as our automated build server tool and the Nabaztag wifi-enabled talking rabbit to announce build status. When the rabbit alerts us to a problem, we look at the TeamCity web interface to get more information.
We had to experiment with the various TeamCity notification settings to avoid too much "rabbit chatter" (which was distracting), but now whenever the rabbit speaks, we know it's going to say something important. For us, this meant announcing only whenever a build fails or is fixed (the first successful build after a failure). As a further enhancement, we've tweaked the BuildBunny plug-in to allow us to specify a different text-to-speech voice for success and failure messages, so we can quickly tell if the rabbit has good or bad news by its tone of voice.
There are many other creative tools to announce build status, such as a BetaBrite LED scrolling sign, a light board, or lava lamps. "The Continuous Integration Game" plug-in for the Hudson build server takes this to a whole new level by turning the build into a game that gives committers points for writing unit tests and fixing the build.
How does your team monitor its build?