
[英]Why does CruiseControl.NET fail to build but using msbuild.exe from the command line works?
[英]Why does failed source control in CruiseControl.net not fail the build?
我正在使用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()
我猜测的原因是源控制块仅用于:
如果此操作失败,则与源代码和提交无关。 这是一个基础设施问题,可以防止构建发生,因此从技术上讲,构建并没有失败。 它甚至没有开始。
使用cc.net中的版本控制块,它会搜索存储库修改。 如果cc.net无法联系存储库,则无法启动该作业。 结果是一个例外 。
如果你想忽略这一点,这可以帮助(简单的重试计数器)!
我们可以告诉CruiseControl.NET忽略源控制超时错误吗?
<maxSourceControlRetries>5</maxSourceControlRetries>
<stopProjectOnReachingMaxSourceControlRetries>true</stopProjectOnReachingMaxSourceControlRetries>
<sourceControlErrorHandling>ReportOnRetryAmount</sourceControlErrorHandling>
我相信这是ccnet的最新变化。 我们在不同的机器上运行两个版本。 如果无法访问我们的svn存储库,版本1.4会破坏构建版本,但版本1.5不会破坏构建版本。 我还没有调查过,但是可能会有一个强制转换为1.5以在检索代码失败时中断。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.