For the first "User Spotlight" interview ever on Continuous Blog, I am talking with Matt Girard of ITA Software, a Boston-based software company that produces travel industry software which is used by many of the major carriers in the U.S. and abroad. When I sent out a message asking for users of Hudson in the corporate space to ping me about doing a "spotlight" on them, ITA Software stuck out in particular; they’re hiring a Hudson expert!
The format for the "spotlight" series isn’t entirely nailed down yet so feel free to ask questions in the comments section and I’ll follow-up with Matt after the fact if need be. That said, without further delay, Matt Girard from ITA Software, on Hudson. ---
|Hudson||Matt, appreciate you taking the time to answer some questions about Hudson at ITA Software, let’s start with a simple one: How long has ITA been using Hudson?|
|Matt||My pleasure, glad to be a part of the community. We have been using Hudson in some form since early 2008. Predictably our usage has increased over time and now encompasses the majority of our automated build and test infrastructure.|
|Hudson||Was continuous integration a part of ITA’s workflow prior to adopting Hudson? If so: what did ITA switch to Hudson from, and why?|
|Matt||Yes, though not to the degree that we have now. Prior to Hudson we were reliant on BuildBot for our automated builds, but we were not doing continuous integration across our components until after the transition to Hudson. The easy to understand UI and flexibility were primary features that compelled our switch. I should mention that when we decided to switch we also evaluated CruiseControl but Hudson came out on top for our needs.|
|Hudson||What kind of projects are you typically using Hudson for? What languages/build system(s)? What platforms is Hudson performing builds? What kinds of jobs primarily run on ITA’s Hudson cluster?|
|Matt||Our Hudson environments (yes, we have more than one) have been optimized for building C++, Java (all maven based), Lisp (a surprise to some to be sure more about that here), and Python on Linux build agents (Fedora and CentOS).
Our jobs are (loosely) grouped into one of three categories: rpm (we are primarily RedHat based), tests, and tools. The rpm jobs are the actual code builds and individual component unit tests. The test jobs (thank you parameterized trigger plugin!) are part of a larger cross-component integration testing and promotion scheme. The (handful of) tools jobs support us in tasks such as cleaning up stale sandbox database connections.
|Hudson||Given the flexibility of Hudson, it’s safe to say that not everybody is using it in the exact same fashion, is there anything you would consider interesting or noteworthy about the use of Hudson at ITA?|
|Matt||I think that our most interesting usage of Hudson has to be how we have combined parameterized builds with the parameterized trigger plugin in order to do cross-component testing of trunk code. More specifically, we pass a properties file (to us a "scoreboard" that tells the jobs what exact revisions of which projects to
test together) to several jobs and only build a final promotion job if ALL of downstream jobs (with the same scoreboard) passed. In this way we create a hurdle that all of our code must clear before we even consider deploying it anywhere else.
The next most interesting thing we are doing is using Hudson for continuous deployment of monitoring changes into our staging environment. It’s quite rewarding to watch a check-in makes it’s way through Hudson, into and rpm, and out to a server without a human being involved.
|Hudson||Are there any additional tools ITA has written to better integrate things "behind the scenes"?|
|Matt||We evolved what became a very large build script (mostly derived from what we had for BuildBot) that handles all of the nitty-gritty details involved in the building, packaging, and testing of our software. Recently we have been working to refactor this into several smaller build tools each with a more focused purpose. The first of these is designed (largely as a wrapper to rpmbuild) to standardize our package building while leaving the .spec files (with the real specifics) living alongside the code where they belong.|
|Hudson||On a scale from 1-10, how important would you rate Hudson for ITA’s day-to-day workflow?|
|Matt||ITA is a decent size company and there is plenty of work that goes on that does not involve Hudson in any way. Still since we rely on the building and testing that Hudson does in order to promote new code to production, I would say that we are somewhere around an 8.|
I’d like to thank Matt again for being a good sport as the very first in what I hope will be a long line of "spotlights" on companies using Hudson to help them work smart, better and faster. If you would like to discuss your company’s use of Hudson for Continuous Blog, you can contact me at
Editor’s Note: Matt Girard is the Manager of Build and Integration at ITA Software and a passionate advocate for continuous integration and continuous deployment. He believes that release engineering exists to make developers lives easier — not harder — and can be found posting about such topics on Twitter as @equalize.