【问题标题】:Why does failed source control in CruiseControl.net not fail the build?为什么 CruiseControl.net 中失败的源代码控制不会导致构建失败?
【发布时间】:2011-04-06 22:34:06
【问题描述】:

我正在使用 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()

【问题讨论】:

    标签: cruisecontrol.net


    【解决方案1】:

    我猜原因是只使用了源代码控制块:

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

    如果此操作失败,则与源代码及其提交无关。这是一个基础设施问题,它完全阻止了构建的发生,因此从技术上讲,构建并没有失败。它甚至还没有开始。

    【讨论】:

      【解决方案2】:

      通过 cc.net 中的版本控制块,它可以搜索存储库修改。 如果 cc.net 无法联系存储库,则无法启动作业。 结果是异常

      如果您想忽略这一点,这会有所帮助(简单的重试计数器)!

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

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

      【讨论】:

      • 谢谢,这不是忽略异常...我希望它使构建失败或以其他方式表明有人需要检查日志并修复导致它的任何原因。除了它只是服务器上没有人看的窗口中的文本......我尝试了你的建议,但我认为我使用的 CCNet 版本不支持 1.4.0.3308 中的该功能
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多