我们有以下设置:
- 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 中引用这个来调试它的东西。
欢迎任何帮助。