2011-04-06 144 views
4

我正在使用cruisecontrol.net進行集成構建以及外部源代碼控制。源代碼管理(GETMODS)腳本失敗,這很好,我知道爲什麼,但由於某種原因,構建在預計失敗時保持綠色。 CruiseControl在下面的輸出窗口中顯示異常,爲什麼構建失敗?爲什麼CruiseControl.net中的失敗源代碼控制不會使構建失敗?

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() 

回答

1

我猜的理由將是源控制模塊僅用於:

  • ,以檢查是否有需要重建的源代碼進行任何更改,
  • 得到構建所需的所有源代碼。

如果此操作失敗,則與源代碼無關並對其進行提交。這是一個基礎設施問題,可以防止構建發生,因此技術上構建並沒有失敗。它還沒有開始。

0

使用cc.net中的版本控制塊,它搜索存儲庫修改。 如果cc.net無法聯繫存儲庫,則無法啓動該作業。 結果是例外

如果你想忽略這一點,這可以幫助(簡單的重試計數器)!

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

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

謝謝,這不是關於忽略異常,雖然...我希望它失敗的構建或以其他方式明顯有人需要檢查日誌並修復造成它的任何東西。除了它只是服務器窗口中的文本,沒有人看...我嘗試了你的建議,但我認爲我使用的CCNet版本不支持1.4.0.3308中的該功能 – Dave 2011-04-08 01:59:45

0

我相信這是一個最近的變化CCNET。我們在單獨的機器上運行兩個版本。如果版本1.4無法訪問我們的svn版本庫,版本1.4會中斷版本,但版本1.5不會破壞版本。我還沒有看過它,但可能會有一個開關強制1.5來打破檢索代碼的失敗。