I'm pre-emptively marking this a community wiki because, well, it is.
I'm interested in hearing from people who have real life success stories in moving to continuous integration for a web application. In particular, I'm most interested in the following:
- What tools did you use for aggregation of reporting (e.g. Hudson)?
- What code did your application consist of (e.g. just a JavaScript API, mix of server side code + client side code, etc.)
- What tools did you use for performing Unit Testing?
- What tools did your QA use for performing functional, smoke, etc. testing?
- What cultural obstacles did you have to overcome, if you had to overcome anything, to move to CI?
As for me, I'm in the middle of what will be a successful integration, but there has been a cost to this integration (I actually cried at one point late at night). The reason: I'm artificially constrained by my environment, and I'm additionally trying to do things in my constrained environment that no one has done.
But never fear, there's no crying in programming (most of the time) and here's my own answers to my questions:
- Hudson is my CI master tool. Development is happening on Mac, Windows and Linux, but the CI builds are all happening on Linux.
- I'm responsible for a pure JavaScript API, plus a tiny bit of PHP.
- I'm using YUI Test 3 for unit testing, pushed through Selenium Remote Control running in a headless environment on a Linux box.
- QA is using Selenium with all tests written in Java Selenese.
- Cultural obstacles: This was interesting. People just don't understand testing JavaScript. For example, here's a response from a meeting, "No really, I need a browser to run my unit tests in. Why would I ever run my tests outside of a browser?" Or, "Come on, developers need to run these unit tests, too. Why do I have to package everything up and treat everything in such a formal way?"