2

我们有以下设置:

  • Win 7 专业版 64 位
  • CCNet v1.6.7981.1
  • msysgit v1.7.9-preview20120201

我们的 Git 服务器安装在另一台运行 64 位 Ubuntu 服务器的机器上。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 中引用这个来调试它的东西。

欢迎任何帮助。

4

1 回答 1

1

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

于 2012-05-04T05:25:14.213 回答