2010-05-16 5 views
3

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

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

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


Edit: Добавлен конфигурационный 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="[email protected]" subjectPrefix="[BUILD]" buildResultsURL="http://XXXXX/dashboard/build/detail/project" mailHost="mail.EXAMPLE.com" skipUsers="true" > 
    <failure address="[email protected]" /> 
    <success address="[email protected]"/> 
</email> 
</publishers> 

ответ

2

Это не buildafterfailed атрибут <project> вещь, в которой вы нуждаетесь?

Описание атрибута в CruiseControl config reference:

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

+0

Спасибо, я неправильно прочитал эту часть в конфиге - я думал, что она сказала, что она по умолчанию не перестраивает. Тестирование сейчас. – RodeoClown

+0

Работало, много спасибо :) – RodeoClown

1

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

+0

Я видел, как он иногда попадает в циклы, когда есть ошибка, проверяющая ситуацию вне контроля источника. Это может произойти, например, если кто-то проверяет файл, который ранее не был проверен (например, ошибочно проверяя файл .exe или что-то еще). Но я уверен, что это было исправлено в последней версии в любом случае ... –

+0

Он * обычно * строит только при обнаружении изменения, но если сборка завершается неудачно, она снова пытается через 5 минут ... и через 5 минут после этого ... и через 5 минут после этого ... и так далее, пока мой почтовый ящик не переполнен – RodeoClown

+0

RodeoClown: Я бы сказал, что у вас проблемы с конфигурацией, потому что это не ожидаемое поведение. Можете ли вы опубликовать раздел своего конфигурационного файла для проекта? –