2011-04-06 90 views
4

我正在使用cruisecontrol.net进行集成构建以及外部源代码控制。源代码管理(GETMODS)脚本失败,这很好,我知道为什么,但由于某种原因,构建在预计失败时保持绿色。 CruiseControl在下面的输出窗口中显示异常,为什么构建失败?为什么CruiseControl.net中的失败源代码控制不会使构建失败?

ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation failed: 

at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute 
(ProcessInfo processInfo) 
at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.GetModifications(ProcessInfo info, DateTime from, DateTime to) 
at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ExternalSourceControl.GetMod ifications(IIntegrationResult from, IIntegrationResult to) 
at ThoughtWorks.CruiseControl.Core.Sourcecontrol.QuietPeriod.GetModifications(ISourceControl sourceControl, IIntegrationResult lastBuild, IIntegrationResultthisBuild) 
at ThoughtWorks.CruiseControl.Core.IntegrationRunner.GetModifications(IIntegrationResult from, IIntegrationResult to) 
at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Integrate(IntegrationRequest request) 
at ThoughtWorks.CruiseControl.Core.Project.Integrate(IntegrationRequest request) 
at ThoughtWorks.CruiseControl.Core.ProjectIntegrator.Integrate() 
at ThoughtWorks.CruiseControl.Core.ProjectIntegrator.Run() 

回答

1

我猜的理由将是源控制模块仅用于:

  • ,以检查是否有需要重建的源代码进行任何更改,
  • 得到构建所需的所有源代码。

如果此操作失败,则与源代码无关并对其进行提交。这是一个基础设施问题,可以防止构建发生,因此技术上构建并没有失败。它还没有开始。

0

使用cc.net中的版本控制块,它搜索存储库修改。 如果cc.net无法联系存储库,则无法启动该作业。 结果是例外

如果你想忽略这一点,这可以帮助(简单的重试计数器)!

Can we tell CruiseControl.NET to ignore source control timeout errors?

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

谢谢,这不是关于忽略异常,虽然...我希望它失败的构建或以其他方式明显有人需要检查日志并修复造成它的任何东西。除了它只是服务器窗口中的文本,没有人看...我尝试了你的建议,但我认为我使用的CCNet版本不支持1.4.0.3308中的该功能 – Dave 2011-04-08 01:59:45

0

我相信这是一个最近的变化CCNET。我们在单独的机器上运行两个版本。如果版本1.4无法访问我们的svn版本库,版本1.4会中断版本,但版本1.5不会破坏版本。我还没有看过它,但可能会有一个开关强制1.5来打破检索代码的失败。