2012-04-20 45 views
2

我們有以下設置:CCNET多的Git倉庫超時異常

  • 的Win 7專業版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>[email protected]</repository> 
      <executable>$(gitcmdpath)</executable> 
      <timeout units="minutes">10</timeout> 
     </git> 
     <git> 
      <repository>[email protected]</repository> 
      <executable>$(gitcmdpath)</executable> 
      <timeout units="minutes">10</timeout> 
      <workingDirectory>c:\somerepo2</workingDirectory> 
     </git> 
     </sourceControls> 
    </sourcecontrol> 

我們有幾個CCNET項目它們使用相同的一組存儲庫(儘管檢出到不同的文件夾),並且在沒有代碼更改時它們都以相同的方式失敗。我確實碰巧把間隔觸發器設置爲相同的長度,因此他們都大致同時檢查存儲庫。這可能是他們超時的原因嗎?我也無法從ccnet.log中找到引用此內容的任何內容來進行調試。

歡迎任何幫助。

回答

1

我現在有一個解決方法,將持續的構建放入一個隊列,並將完整構建放入另一個隊列。連續構建基於30秒間隔的源代碼管理修改,而完整構建是每天一次,因此它們現在是分開的。我現在已經實施了大約2周,沒有任何問題。