We’re using CruiseControl and CVS on our project. At least, we thought we were.
Recently, we changed our cvs password but forgot to tell CruiseControl about it. The cvs update command was failing and therefore our latest changes were not being picked up during the build. It took us a couple of days to notice.
Our build loop finishes off a successful build/test cycle with a cvs tag command to add a build tag. This has been useful a couple of times for tracking down when and where a mysterious bug was introduced. During our most recent hunt for a mysterious bug, we realized that our builds had not been successfully tagged for months.
CVS can fail in a number of ways. When you use cvs via the command line or even through Eclipse, these sorts of errors are reported quite clearly. So what was up with CruiseControl?
After looking at the manual it turns out that the cvs ant task has a property failonerror. The surprising thing is that the default value of this property is “false”.