我正在使用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()
答案 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以便在检索代码失败时中断。