Можем ли мы сказать CruiseControl.NET игнорировать ошибки тайм-аута контроля версий? - PullRequest
10 голосов
/ 18 января 2010

У нас настроен CruiseControl.NET для непрерывной интеграции ряда наших проектов.

Мы используем блок <cb:define>, чтобы убедиться, что все наши операции управления исходным кодом выполняются одинаково, и сохранить конфигурацию DRY.

Время от времени мы сталкиваемся с проблемой, из-за которой в сборке отображается «Исключение». Сообщение выглядит следующим образом:

ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation has timed out. 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute(ProcessInfo processInfo) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Svn.GetModifications(IIntegrationResult from, IIntegrationResult to) 
    at ThoughtWorks.CruiseControl.Core.Sourcecontrol.QuietPeriod.GetModifications(ISourceControl sourceControl, IIntegrationResult lastBuild, IIntegrationResult thisBuild) 
    at ThoughtWorks.CruiseControl.Core.IntegrationRunner.GetModifications(IIntegrationResult from, IIntegrationResult to) 
    at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Integrate(IntegrationRequest request)

Общий раздел конфигурации выглядит следующим образом:

<sourcecontrol type="svn">
    <trunkUrl>http://ourserver/svn/$(project-svn-path)/trunk/</trunkUrl>
    <executable>C:\Program Files\CollabNet Subversion Server\csvn.exe</executable>
    <username>user</username>
    <password>password<password>
    <revert>true</revert>
</sourcecontrol>

Я бы хотел игнорировать эту конкретную ошибку, если это возможно.

Какие изменения мне нужно сделать?

Ответы [ 3 ]

16 голосов
/ 18 января 2010

Вот блок, который я использую для предотвращения ошибок такого рода, влияющих на состояние сборки:

<maxSourceControlRetries>5</maxSourceControlRetries>
<stopProjectOnReachingMaxSourceControlRetries>true</stopProjectOnReachingMaxSourceControlRetries>
<sourceControlErrorHandling>ReportOnRetryAmount</sourceControlErrorHandling>

Вы должны поместить их прямо под тегом <project>, а не <sourcecontrol>.Я не уверен, что вы сможете проигнорировать только исключение «тайм-аут», - все исключения SVN будут обрабатываться одинаково.

ОБНОВЛЕНИЕ: вы можете узнать больше об этих настройках в Документация CC.NET , но позвольте мне скопировать соответствующий материал:

maxSourceControlRetries : максимальное количество исключений контроля источника в строке, которые могут произойти до запуска проектав остановленное состояние (когда stopProjectOnReachingMaxSourceControlRetries имеет значение true).

stopProjectOnReachingMaxSourceControlRetries : останавливает проект при достижении maxSourceControlRetries или нет.Если задано значение true, проект будет остановлен, если количество последовательных ошибок контроля источника равно maxSourceControlRetries.

sourceControlErrorHandling : какое действие необходимо предпринять при возникновении ошибки контроля источника (во время GetModification).Вот возможные значения:

  • ReportEveryFailure: запускает раздел издателя при возникновении ошибки
  • ReportOnRetryAmount: запускает раздел издателя только при достижении maxSourceControlRetries, раздел издателя будет толькозапускаться один раз.
  • ReportOnEveryRetryAmount: запускает раздел издателя при достижении maxSourceControlRetries.Когда достигнуто значение maxSourceControlRetries и выполняется раздел издателя, счетчик возвращается на 0.
8 голосов
/ 18 января 2010

Разве вы не можете просто увеличить значение 'timeout'?

<sourcecontrol>
   ...
   <timeout>60000</timeout> <!-- timeout in milliseconds -->
   ...
</sourcecontrol>
0 голосов
/ 26 октября 2011

В дополнение к принятому ответу. Я обнаружил, что это очень помогло нам с помощью URL-триггера.

<triggers>
  <urlTrigger url="http://url.to.your.svn.server" />
</triggers>

Так что, если сервер недоступен, CCNet не будет инициировать сборку. Это эффективно уменьшило вероятность неудач.

Ссылка на документацию триггера URI .

Обновление: у нас никогда не было ни одного ложного сбоя, вызванного проблемой подключения к серверу svn, после того, как указанная линия работала почти 2 месяца.

...