【问题标题】:How can I stop cruise control re-building after a failed build?构建失败后如何停止巡航控制重建?
【发布时间】:2011-02-20 05:02:31
【问题描述】:

我周末回来发现有人 ****ahem**** 错过了周五下午的最后一次文件提交......巡航控制一直很有趣,并尝试每五分钟重新构建一次从那时起,尽管没有进一步的提交。

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

有什么方法可以阻止巡航控制在失败时构建,至少在新的提交发生之前?


编辑添加配置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>

【问题讨论】:

    标签: cruisecontrol complex-numbers email-spam


    【解决方案1】:

    &lt;project&gt;buildafterfailed 属性不是您需要的吗?

    CruiseControl config reference中的属性说明:

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

    【讨论】:

    • 谢谢,我误读了配置中的那部分 - 我以为它说它默认为不重建。立即测试。
    【解决方案2】:

    我认为可以将巡航控制配置为仅在检测到版本控制系统发生变化时进行构建。如果构建中断,并且您没有签入任何内容,Cruise 应该简单地检查源代码存储库,没有发现任何更改,然后继续休眠直到下一次。

    【讨论】:

    • 我看到它偶尔会在检查源代码控制之外的内容时出现错误。例如,如果有人签入以前未签入的文件(例如错误地签入 .exe 或其他内容),则可能会发生这种情况。但我很确定无论如何这已经在最新版本中得到修复......
    • 通常仅在检测到更改时才构建,但如果构建失败,它会在 5 分钟后重试... 5 分钟后... 和 5几分钟后......等等,直到我的收件箱溢出
    • RodeoClown:我会说你有一个配置问题,因为那不是预期的行为。您可以发布项目配置文件的部分吗?
    • @codeka - 我已经添加了配置。它有 spamWhileBroken = true,但我检查了巡航控制的文档 (cruisecontrol.sourceforge.net/main/configxml.html#email),它说它只是通过电子邮件发送后续损坏的构建。我正在尝试阻止这些构建发生
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2010-10-15
    • 2012-08-11
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多