CCNet多个git存储库超时异常

时间:2012-04-20 03:48:49

标签: git cruisecontrol.net

我们有以下设置:

  • Win 7 Professional 64位
  • CCNet v1.6.7981.1
  • msysgit v1.7.9-preview20120201

我们的Git服务器安装在运行Ubuntu服务器64位的另一台机器上。 CCNet Windows服务使用管理员帐户运行,并使用ssh访问Ubuntu git服务器。 执行强制构建时,我们没有问题,获取源代码和构建都很好。当它在时间触发器上运行时,我们会得到以下例外:

ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation has timed out.
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute(ProcessInfo processInfo)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.GitFetch(IIntegrationResult result)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.CreateUpateLocalRepository(IIntegrationResult result)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.GetModifications(IIntegrationResult from, IIntegrationResult to)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.MultiSourceControl.GetModifications(IIntegrationResult from, IIntegrationResult to)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.QuietPeriod.GetModificationsWithLogging(ISourceControl sc, IIntegrationResult from, IIntegrationResult to)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.QuietPeriod.GetModifications(ISourceControl sourceControl, IIntegrationResult lastBuild, IIntegrationResult thisBuild)
   at ThoughtWorks.CruiseControl.Core.IntegrationRunner.GetModifications(IIntegrationResult from, IIntegrationResult to)
   at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Integrate(IntegrationRequest request)

我们的ccnet项目使用多个git存储库,示例配置如下所示:

<sourcecontrol type="multi">
      <sourceControls>
        <git>
          <repository>git@somerepo.git</repository>
          <executable>$(gitcmdpath)</executable>
          <timeout units="minutes">10</timeout>
        </git>
        <git>
          <repository>git@somerepo2.git</repository>
          <executable>$(gitcmdpath)</executable>
          <timeout units="minutes">10</timeout>
          <workingDirectory>c:\somerepo2</workingDirectory>
        </git>
      </sourceControls>
    </sourcecontrol>

我们有几个ccnet项目使用相同的存储库集(虽然已签出到不同的文件夹),并且在没有代码更改时它们都以相同的方式失败。我碰巧将间隔触发器设置为相同的长度,因此它们都是大致同时检查存储库。这可能是他们超时的原因吗?我也找不到任何从ccnet.log中引用它的东西来调试它。

欢迎任何帮助。

1 个答案:

答案 0 :(得分:1)

我现在有一个解决方法,将连续构建放入一个队列,将完整构建放入另一个队列。连续构建基于30秒间隔的源控制修改,而完整构建每天一次,因此它们现在是分开的。我已经实施了大约2周,没有任何问题。