Saturday, April 29, 2006

Time to Synchronize...

I came across a weird situation a couple of months ago when I was setting up CruiseControl with Subversion.
There is a Subversion server on which our source code resided and I was setting up Cruise on another machine which was supposed to be our CI build machine.
Steps I followed:
  • Download and install CruiseControl
  • Do an initial checkout from the repository into the Cruise projects directory
  • Change the sample config.xml to set the build interval, repository location, publishing results etc etc.
  • To verify, force a build. (or checkin to the repository and see that it kicks off a build)
I did all this, and it worked perfectly fine and the build was successful.

But I found that later whenever some code gets checked in, cruise somehow was not picking up any modifications at all. After struggling a lot with the configurations and searching on the web I shot a mail to one of the people behind CC and quite soon, I had the answer.

There was a simple mistake that was causing Cruise to behave randomly. The problem was that the system time on the Repository server and the time on the cruise control box was not synchronized. There was some 5-6 hour difference between the two. CruiseControl checks for modifications that have happened after a given time. So if the time is not synchronized, obviously it wouldn't find modifications!

This is very important whenever CruiseControl and the Source repository are on different machines:
Make sure that the time/date on the cruise box is synchronized with the time/date on the repository box.
Btw, This may be helpful.