Question

I got back from the weekend to discover that somebody ****ahem**** had missed a file commit last thing Friday afternoon... Cruise control has been having fun, and tried to re-build every five minutes since then despite no further commits.

This means that my colleagues and I have received approximately six hojillion emails from cruise control. A single fail email would be more than enough to notify us.

Is there any way to stop cruise control building on failure, at least until a new commit occurs?


Edit: Added config xml

<project name="XXXX">
<listeners>
  <currentbuildstatuslistener file="logs/${project.name}/status.txt" />
</listeners>
<bootstrappers>
  <svnbootstrapper file="https://XXXXX/trunk/build/cruisecontrol.xml" username="XXXX" password="XXXX" />
</bootstrappers>
<modificationset quietperiod="300">
  <svn localWorkingCopy="projects/${project.name}/" RepositoryLocation="https://XXXXX/trunk/project1" username="XXXX" password="XXXX" />
  <svn localWorkingCopy="projects/${project.name}/" RepositoryLocation="https://XXXXX/trunk/project2" username="XXXX" password="XXXX" />
  <svn localWorkingCopy="projects/${project.name}/" RepositoryLocation="https://XXXXX/trunk/project3" username="XXXX" password="XXXX" />
  <svn localWorkingCopy="projects/${project.name}/" RepositoryLocation="https://XXXXX/trunk/project4" username="XXXX" password="XXXX" />
</modificationset>
<schedule interval="300">
  <ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build/cruisecontrol.xml" propertyfile="projects/${project.name}/project1/production.build.properties" />
</schedule>
<log dir="logs/${project.name}/">
  <merge file="projects/${project.name}/_reports/checkstyle_report.xml" />
  <merge dir="projects/${project.name}/_reports/pmd_report.xml" />
  <merge dir="projects/${project.name}/_reports/junit" />
</log>
<publishers>
  <onsuccess>
    <artifactspublisher dest="artifacts/${project.name}" dir="projects/${project.name}/_dist" />
    <artifactspublisher dest="artifacts/${project.name}" dir="projects/${project.name}/_reports" subdirectory="_reports"/>
  </onsuccess>
  <email spamWhileBroken="true" returnAddress="XXX@EXAMPLE.com" subjectPrefix="[BUILD]" buildResultsURL="http://XXXXX/dashboard/build/detail/project" mailHost="mail.EXAMPLE.com" skipUsers="true" >
    <failure address="XXX@EXAMPLE.com" />
    <success address="XXX@EXAMPLE.com"/>
 </email>
</publishers>

Was it helpful?

Solution

Isn't buildafterfailed attribute of <project> the thing you need?

Description of the attribute in the CruiseControl config reference:

Should CruiseControl keep on building even though it has failed and no new modifications are detected? This feature is useful if you want CruiseControl to detect situations where a build fails because of outside dependencies (like temporary failing database connection).

OTHER TIPS

I thought it was possible to configure cruise control to only build when it detected changes in the version control system. If the build breaks, and you don't check anything in, Cruise should simply check the source code repository, find no changes, and go back to sleep til next time.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top