I’m doing a M.sc program with the Open Universiteit Nederland besides my day job at a consultancy company. Currently I’m running a course called Dessign Patterns (now what would that be about). Because I also have to develop some software for it in conjunction with another student, I decided to ease the exchange of information a bit.
I also think continuous integration is great, so why not combine everything and get some usefull handsone experience while at it. So I took some Maven, added some CruiseControl, mixed in Tomcat and put it on SubVersion. Fortunatly the guy working with me on this course was able to provide the Subversion bit, by plugging it into his Apache httpd. All in all it took me a weekend to read up on all the docs. Then it was a matter of just configuring it all, starting it and crossing my fingers. After some final tweaks it’s running quiet right. But I’ll probably tweak it some more.
Now why would I do all this for a simple course?
- First, to impress the examinator.
- Second to get some hands on experience with these tools, so that in the next project I run, someone actually has a clue about auto building software. My current project is getting along ok now, but I think it could be a lot better.
- And third, give a tech demo for my employer, write an article about it (because there are no short and sweet articles about this subject which are understandable for managers).
- And then finally fourth, try to do the presentation AGAIN for the Dutch Java User Group in front of say 100 people. And after all that is finished, tweak the article some more and get it published.
Phew, talk about trying something farfetched. Did I mention I also want all that articlicle to give me some extra credit for my M.sc degree?
Anyway, what all this gives me is this:
- My collegue and I have a single point of definition of our sourcecode, called a repository. (SubVersion)
- There is a process running which monitors the repository for changes. This process runs every 5 minutes. When either of us commits something to the repository the process picks this up and initiates a build. (The process is CruiseControl.)
- When a build is ran a lot of things get done. First the most recent changes are updated from the repository. Second, everything gets built. Third a lot of data is gathered about the current state of the code: metrics, unit tests results, unit test failures, changelog, developer activity. Fourth, all the data is formatted to a web page and published to a well known location. Fifth, an email message gets sent to me and my collegue. (All done by Maven with exception of the publish and mail action, this is done by CruiseControl.)
And yes!! All that is ran fully automated. Sounds cool, doesn’t it? And the funny thing is that it’s all relativly easy to set up. And all tools used are open-source and available free of charge from the internet. Offcourse a lot more gets done, but hey, if I’d mention everything, then this blog would take forever to write.
(As you might have guesed, tech is great, software is even better.)