2017-04-13 76 views
0

我的廚師食譜中有下面的代碼片段。廚師||救援塊在異常情況下不起作用

begin 
    execute 'run_tests' do 
     command comand_string_to_run_nUnint 
     user "user" 
     password passkey 
    end 
ensure  
    execute 'upload_report' do 
     command uplaod 
     user "user" 
     password passkey 
    end 
end 

的問題是,報告是在所有測試通過的情況下上傳成功,但失敗的時候有任何測試用例的失敗上傳。

如何確保報告在所有情況下均可上傳。

有沒有不同的方式來處理異常?

ps:我正在上傳到名爲Nexus的工件存儲庫。

回答

0

您可以使用ignore_failure true作爲execute[run_tests]資源。這樣Chef將繼續運行配方,即使該命令以錯誤代碼退出。

execute 'run_tests' do 
    ignore_failure true 
    command comand_string_to_run_nUnint 
    user "user" 
    password passkey 
end 

另一種可能性是使用returns屬性execute[run_tests]資源。當測試失敗時,「comand_string_to_run_nUnint」以非零代碼退出,您可以將此非零代碼(例如2)添加到returns屬性中。這樣廚師會認爲一切都很好,並且仍然繼續運行食譜。

execute 'run_tests' do 
    returns [0, 2] 
    command comand_string_to_run_nUnint 
    user "user" 
    password passkey 
end