Continuous Integration For One Person Projects?

posted on 12/14/07 at 08:21:43 pm by Joel Ross

Scott Reynolds put together a nice post giving high level reasoning for using Continuous Integration. If you're not using CI now, but are looking for a reason to do so, he's got a nice anecdotal example.

I think it's great that Scott's put up some content for beginners. I'd love to see a lot of people put up beginner guides. Having said that, he started out with a statement I disagree with.

If you are alone, writing code with no team, no release cycle, no QA, or anything of the sort of stuff that represents professional software development, then CI is probably nothing more than mental masturbation , and a nice exercise to do that nets you no gain.

I have a few side projects that I've written, and I have my own personal CI server set up for those projects. I'm the only developer on it, but there's a reason I have CI. I know if it builds locally, it'll build on the server, so I don't get that benefit out of it. But I do get something out of it. Whenever I set up a CI server, for every project checked in, I typically create at least two CI "projects" for it. The first is a dev build. In a single person environment, this doesn't get you much. It's "mental masturbation". The other one is a Production build, which does everything in release mode and completely automates how I deploy my software. Any manual deployment steps I would take without CI are automated here.

As an example, I have a web site that I have to upload to another server. It has different web.config settings between dev and production, as well. My build process handles all of that for me - well, not completely. I don't go as far as automatically deploying, but it does drop a zip file on the web server for me so I can get it easily.

Bottom line is that even if it's just me, any part of a manual process that can be automated should be. It's not hard to zip up a release build and copy it to the web server, but it's much easier to click a button and come back later when it's done. And the more manual steps, the more likely you are to mess it up!


Categories: Development