maxSourceControlRetries

maxSourceControlRetries

我们已经建立了CruiseControl.NET,以便对许多项目进行持续集成。

我们使用<cb:define>块来确保所有源代码控制操作均以相同的方式完成,并保持config DRY。

我们有时会遇到一个问题,该问题会导致构建显示“ Exception”。消息如下:

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>


如果可能的话,我想忽略这个特定的错误。

我需要进行哪些更改?

最佳答案

这是我用来防止这些错误影响构建状态的代码块:

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


您需要将它们放在<project>标记下方,而不是<sourcecontrol>下方。不过,我不确定您是否只能忽略“超时”异常-所有SVN异常都将被视为相同。

更新:您可以在CC.NET documentation中找到有关这些设置的更多信息,但让我复制相关内容:

maxSourceControlRetries:在项目进入停止状态之前(当stopProjectOnReachingMaxSourceControlRetries设置为true时),在一行中可能发生的最大源代码控制例外。

stopProjectOnReachingMaxSourceControlRetries:是否在达到maxSourceControlRetries时停止项目。设置为true时,如果连续的源代码管理错误量等于maxSourceControlRetries,则将停止项目。

sourceControlErrorHandling:在发生源代码管理错误时(在GetModifications期间)采取什么措施。这些是可能的值:


ReportEveryFailure:发生错误时运行发布者部分
ReportOnRetryAmount:仅在达到maxSourceControlRetries时运行发布者部分,发布者部分将仅运行一次。
ReportOnEveryRetryAmount:每当达到maxSourceControlRetries时,运行发布者部分。当到达maxSourceControlRetries并且运行了发布者部分时,计数器将设置回0。

08-27 17:44
查看更多