为什么CruiseControl.net中的源代码控制失败并没有使构建失败?

时间:2011-04-06 22:34:07

标签: cruisecontrol.net

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

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()

3 个答案:

答案 0 :(得分:1)

我猜测的原因是只使用了源控制块:

  • 检查源代码是否有任何需要重建的更改,
  • 获取构建所需的所有源代码。

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

答案 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>

答案 2 :(得分:0)

我相信这是ccnet的最新变化。我们在不同的机器上运行两个版本。如果无法访问我们的svn存储库,版本1.4会破坏构建版本,但版本1.5不会破坏构建版本。我还没有调查过,但是可能会有一个强制转换为1.5以便在检索代码失败时中断。