如何在构建失败后停止巡航控制重建?

时间:2010-05-16 23:02:07

标签: cruisecontrol complex-numbers email-spam

我从周末回来发现有人**** a *** ****在星期五下午错过了文件提交...巡航控制一直很有趣,并试图每五分钟重建一次从那时起,尽管没有进一步的承诺。

这意味着我和我的同事收到了大约六封来自巡航控制的大量电子邮件。一封失败的电子邮件就足以通知我们了。

有没有办法在失败时停止巡航控制,至少在新的提交发生之前?


修改添加了配置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>

2 个答案:

答案 0 :(得分:2)

buildafterfailed <project>属性不是你需要的东西吗?

CruiseControl config reference中的属性说明:

  

CruiseControl应该继续建设,即使它已经失败并且没有新的   检测到修改?如果您想要CruiseControl,此功能非常有用   检测由于外部依赖性而导致构建失败的情况   (比如临时失败的数据库连接)。

答案 1 :(得分:1)

我认为可以将巡航控制配置为仅在检测到版本控制系统发生变化时进行构建。如果构建中断,并且您没有检查任何内容,Cruise应该只检查源代码存储库,找不到任何更改,然后再回到下一次睡眠状态。