Как я могу остановить восстановление круиз-контроля после неудачной сборки? - PullRequest
3 голосов
/ 17 мая 2010

Я вернулся с выходных и обнаружил, что кто-то **** hem **** **** пропустил запись файла в последнюю очередь в пятницу днем ​​... Круиз-контроль развлекался и пытался восстанавливать каждые пять минут с тех пор, несмотря на отсутствие дальнейших коммитов.

Это означает, что мы с коллегами получили от шести круиз-контролеров около шести электронных писем. Одного сообщения об ошибке будет более чем достаточно, чтобы уведомить нас.

Есть ли способ остановить здание круиз-контроля при сбое, по крайней мере, пока не произойдет новый коммит?


Редактировать : Добавлена ​​конфигурация 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 ]

2 голосов
/ 17 мая 2010

Не является ли buildafterfailed атрибут <project> тем, что вам нужно?

Описание атрибута в справочнике конфигурации CruiseControl :

Должен ли CruiseControl продолжать сборку, даже если она провалилась и нет новой модификации обнаружены? Эта функция полезна, если вы хотите CruiseControl обнаруживать ситуации, когда сборка завершается неудачно из-за внешних зависимостей (например, временное сбой соединения с базой данных).

1 голос
/ 17 мая 2010

Я думал, что можно настроить круиз-контроль на сборку только при обнаружении изменений в системе контроля версий. Если сборка не работает, и вы ничего не регистрируете, Cruise должен просто проверить репозиторий исходного кода, не найти изменений и вернуться в спящий режим до следующего раза.

...