Continuous Integration – Advantages for Solo Projects

buildscontinuous integrationsolo-developmentversion control

If you're doing a solo project – would you use CI tools to build from a repository? I've used Hudson and Cruise Control in a team environment, where it's essential to build as soon as anyone checks anything in.

I think the value of version control is still obvious, but do I need to build after every commit, seeing as I would just have built on my local machine, and no-one else is committing?

Best Answer

Well I'm planning to use an continuous integration tool on a project and I'm the unique developer. The need comes because

  1. One goal is to make it cross-platform, and having an integration tool helps you implicitelly (basic) check your app on several platform once you've pushed your changes in the integration repository (or the central one, or whatever is the one that will be used as authoritative).
  2. The project is built for long-term so I will need to work with a team later. I'm not planning to recruit anyone until 2012 so the continuous integration thing can wait for the moment, until 1. becomes the priority.

Other than cross-platform and team-work preparation, I don't see the need. The main thing is to have some kind of source control software and have several repository to keep backups. That will help you setup build tools around it when needed.

About the build timing, I'm using Mercurial and setting up an integration repository that is not the teamwork repository. So, push changes in the teamwork repo until I feel it's time to make the integration system try to build. Then I push from the teamwork repo to the integration repo and that will trigger the build. Then I also add a script that will pull the teamwork repo in the integration repo one time each day.

Here I'm assuming that I work almost all days on my project but it's not always true. You have to set a build timing that is relative to how often you need builds. In a game company I worked at before, we used CruiseControle and it built a full build each hour. We could also force a build whenever we wanted if needed.

For a home project, one time a day might be already "often". The main requirement would be to easily allow the user to force launching a build.

Related Topic