2012-11-28 84 views
1

作爲構建過程的一部分,我編寫了一個EXE,將數據庫更改推送到臨時數據庫。Jenkins在外部可執行文件上通過或失敗

這個過程有時會遇到錯誤,如果是的話,我想構建失敗。我如何將EXE作爲構建步驟添加,以便在失敗時(我可以將其視爲異常)捕獲,我可以使構建失敗並記錄一些細節(類似於NUNit顯示失敗的方式)?

我還希望exe記錄一些其他的細節(如改變了什麼 - 構建是否通過或失敗)。有沒有任何文件可以做到這一點?

我正在使用MSBuild,並且我完全控制了EXE(我寫了它)。我可以把它的代碼輸出什麼,我想

回答

4

你在主構建步驟中使用了什麼? Mavent?螞蟻?自定義腳本?有很多方法可以做到這一點,它很大程度上取決於你的.exe的設計方式,這在OP中沒有解釋。

最簡單的做法是從下拉菜單中添加另一個構建步驟。選擇執行Windows批處理命令。在那裏,寫批處理命令啓動.exe和捕獲返回代碼:

C:\Location_of_exe\your.exe 
IF NOT "%ERRORLEVEL%" == "0" (
    ECHO "Your exe failed" 
    EXIT /B 1 
) ELSE (
    ECHO "Your exe passed" 
) 

如果您的.exe就像正常的程序,它會返回退出代碼爲0時,成功的,否則它會返回一個非零退出代碼。上述語句查找非零退出代碼(指示某種故障),並且如果檢測到的將退出批次,錯誤代碼1本身EXIT /B 1。這反過來會向Jenkins表明構建步驟失敗,並將標記作業失敗。

再次,這在很大程度上取決於您的.exe是正確,失敗時返回非零退出代碼。

至於「我也想exe文件來登錄其他一些細節」,再次,完全取決於您的.exe

  • 是否針對不同故障返回不同的退出代碼? - 如果是這樣,上述代碼可以容易地修改,以捕獲在日誌中的所有可能性,並顯示誤差相應

  • 它是一個命令行的.exe,在控制檯中顯示不同的錯誤?如果是這樣,那麼從批處理中調用它會自動在Jenkins日誌中顯示錯誤。如果.exe沒有返回正確的退出代碼,您也可以使用這種方法。您可以捕獲命令行輸出並使用findstr來搜索特定的輸出行以確定成功或失敗

  • 如果您的.exe是一個GUI應用程序,並且不會生成正確的退出代碼,那麼您無法告訴他們是成功還是失敗(以及失敗)

我會更新這個答案,如果你確定它是哪一個。

+0

我正在使用MSBuild,並且我完全控制了EXE(我寫它)。我可以編寫失敗返回非0。如果我明白你在說什麼,我輸出到控制檯的任何內容都將被記錄下來。我明天會測試這個。 – MillinMo

+1

@MillinMo是的,任何輸出到控制檯將被記錄。您也可以縮短將錯誤代碼返回到'EXIT%ERRORLEVEL%' – jwernerny

0

這是一個快速,我能想到的:

  1. 破壞構建過程分爲2個職位 - A.高達EXE。 B.後的Exe
  2. 在就業市場,Add post build step運行作業B(A是否是成功的)
  3. 在B的配置,編寫一個腳本來趕上使用詹金斯環境變量輸出。退房<yourjenkinsurl>/env-vars.html/

但它是一個真正的Exe或一些其他可執行類似BAT,作爲一個EXE是二進制,你無法去改變一個exe來實現這一點 - I would also like the exe to log some other details。您必須更改可執行文件的源代碼才能捕獲第3步中的變量並執行某些操作。

相關問題