Как я могу остановить восстановление круиз-контроля после неудачной сборки?
-
27-09-2019 - |
Вопрос
Я вернулся с выходных и обнаружил, что кто-то, черт возьми, пропустил фиксацию файла в пятницу днем...Круиз-контроль развлекался и с тех пор пытался перестраиваться каждые пять минут, несмотря на отсутствие дальнейших обязательств.
Это означает, что я и мои коллеги получили примерно шесть миллионов электронных писем от круиз-контроля.Одного электронного письма с ошибкой было бы более чем достаточно, чтобы уведомить нас.
Есть ли способ остановить создание круиз-контроля в случае сбоя, по крайней мере, до тех пор, пока не произойдет новая фиксация?
Редактировать: Добавил 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>
Решение
Разве это не buildafterfailed
атрибут <project>
вещь, которая тебе нужна?
Описание атрибута в Справочник по конфигурации CruiseControl:
Должен ли CruiseControl продолжать строить, даже если он не удался, и никаких новых модификаций не обнаружено?Эта функция полезна, если вы хотите, чтобы CruiseControl обнаружил ситуации, когда сборка не удается из -за внешних зависимостей (например, подключение к временному сбою базы данных).
Другие советы
Я думал, что можно настроить круиз-контроль так, чтобы он собирался только тогда, когда он обнаруживал изменения в системе контроля версий.Если сборка прервется и вы ничего не проверите, Крузу следует просто проверить репозиторий исходного кода, не найти никаких изменений и вернуться в режим сна до следующего раза.