厨师||救援区在例外的情况下不起作用

时间:2017-04-13 11:19:32

标签: ruby nunit chef nexus chef-recipe

我的厨师食谱中有以下片段。

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的工件库。

1 个答案:

答案 0 :(得分:0)

您可以将ignore_failure true用于execute[run_tests]资源。这样厨师将继续运行配方,即使此命令以错误代码退出。

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属性。通过这种方式,Chef会认为一切正常,并且仍然继续运行配方。

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