我们可以告诉CruiseControl.NET忽略源控制超时错误吗?

Joh*_*zen 10 svn cruisecontrol.net continuous-integration

我们已经设置了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)
Run Code Online (Sandbox Code Playgroud)

常见的配置部分如下:

<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>
Run Code Online (Sandbox Code Playgroud)

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

我需要做出哪些改变?

Igo*_*ejc 16

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

<maxSourceControlRetries>5</maxSourceControlRetries>
<stopProjectOnReachingMaxSourceControlRetries>true</stopProjectOnReachingMaxSourceControlRetries>
<sourceControlErrorHandling>ReportOnRetryAmount</sourceControlErrorHandling>
Run Code Online (Sandbox Code Playgroud)

你需要把它们放在<project>标签下面,而不是<sourcecontrol>.我不确定你是否能够忽略"超时"异常,但所有SVN异常都将被视为相同.

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

maxSourceControlRetries:在项目进入停止状态之前(当stopProjectOnReachingMaxSourceControlRetries设置为true时)可能发生的行中最大源控制异常量.

stopProjectOnReachingMaxSourceControlRetries:在达到maxSourceControlRetries时停止项目.设置为true时,当连续源控制错误的数量等于maxSourceControlRetries时,项目将停止.

sourceControlErrorHandling:发生源控件错误时要执行的操作(在GetModifications期间).这些是可能的值:

  • ReportEveryFailure:每当出现错误时运行发布者部分
  • ReportOnRetryAmount:仅在达到maxSourceControlRetries时运行发布者部分,发布者部分只运行一次.
  • ReportOnEveryRetryAmount:每当达到maxSourceControlRetries时运行发布者部分.当达到maxSourceControlRetries并且发布者部分已运行时,计数器将重新设置为0.

  • 然后问题不在CC.NET或SVN ...强制重建您的网络管理员;) (2认同)

Fre*_*els 8

你不能只增加'超时'值吗?

<sourcecontrol>
   ...
   <timeout>60000</timeout> <!-- timeout in milliseconds -->
   ...
</sourcecontrol>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.这有助于解决我遇到的问题.虽然我们必须使用<timeout units ="hours"> 1 </ timeout>,但您指出了我们正确的方向.+1给你. (4认同)