2010-11-01 43 views
1

我們有一個非常大的遺留系統,它使用複雜的批處理文件構建。我們的CruiseControl.NET服務器只需調用批處理文件並檢查返回代碼,該代碼可以正常工作並生成成功的構建。CruiseControl.NET檢查成功消息的輸出

但是,有時候批處理文件在成功構建後似乎沒有正常返回,而CruiseControl.NET只是簡單地超時並報告構建失敗。

有沒有什麼辦法可以讓CruiseControl.NET檢查批處理文件中輸出的字符串是否成功生成,並正確報告生成狀態?

(當我得到一個備用兩天我想重寫使用南特什麼的構建腳本,但它沒有,因爲它太複雜給予了高度重視,以及它目前的工作)

編輯:這是ccnet.config中的條目

<project name="MyProject" queue="Q1" queuePriority="1"> 
    <workingDirectory>D:\MyProject</workingDirectory>  
    <triggers /> 
    <tasks> 
     <exec> 
     <executable>buildexe.bat</executable> 
     <baseDirectory>D:\MyProject</baseDirectory> 
     <buildArgs>V12.8 MyProject</buildArgs> 
     <buildTimeoutSeconds>6000</buildTimeoutSeconds> 
     <successExitCodes>0</successExitCodes> 
     </exec> 
    </tasks> 
    <publishers> 
     <xmllogger logDir="D:\MyProject\logs\V12.8" />  
    </publishers>  
    </project> 

回答

1

您是否嘗試明確設置successexitscodes?

http://confluence.public.thoughtworks.org/display/CCNET/Executable+Task參見

+0

是,我有' 0'和批處理文件應如果成功或1+失敗的返回代碼設置爲0。看起來有時它只是永遠不會結束,儘管批處理文件到達日誌的末尾,並且如果您手動運行它,似乎總是完成。 – 2010-11-02 12:54:03

+1

Arf。您可以使用xmllogger找到您的構建批處理的最後執行的任務嗎? – 2010-11-02 13:33:33

+0

記錄器似乎包含批處理文件的所有輸出 - 一直到它成功返回的位置,如果您是從控制檯運行的話。 – 2010-11-02 14:37:18