Thursday, 3 June 2010

Continuous Integration

I've been spending some time this week looking into setting up a continuous integration server for some of my training and personal projects. Although these projects are not developed by a team, which would be where continuous integration would really become useful, I was finding that I was spending quite a bit of time just keeping projects up and running following changes to upstream dependencies.

There are plenty of choices out there for continuous integration and related tools. My setup is now based on:

Certainly the result is working well. No more scuttling around checking that example software builds before I go off to teach a course. I can be pretty certain now that I just need to check the latest versions of my projects out of Subversion and that I haven't broken anything.

Apart from my desktop machine, which is my main development box, and my laptop, which I take on courses, I'm running the core tools on a very modest server: dual Celeron 500MHz with only 768M memory. I've had to do some performance tuning with the JVMs to reduce the overall memory footprint (my poor server was working hard yesterday and the swap partition was getting hammered), especially as the server also runs Apache, Tomcat and acts as a RAID 5 fileserver.

I'll be making some articles over the coming weeks on experiences I've had with this setup and the benefits I'm seeing from these tools.

No comments: