2017-05-03 105 views
0

我已經爲我的rails項目部署安裝了Capistrano &我正在從自定義上限任務運行我的單元測試,如下所示。Capistrano測試運行失敗,但部署成功

namespace :deploy do 
    desc "Runs test before deploying, can't deploy unless they pass" 
    task :run_tests do 

    puts "--> Running tests, please wait ..." 
    unless system "bundle exec rake > log/capistrano.log 2>&1" #' > /dev/null' 
     puts "--> Tests failed. Run `cat log/capistrano.log` to see what went wrong." 
     exit 
    else 
     puts "--> Tests passed" 
    end 

    puts "--> All tests passed" 
    end 
end 

如果在系統中的單元測試失敗,部署不會進一步進行,但在jenkins構建是示出藍色。這意味着構建是成功的。

如何通知jenkins構建以錯誤結束?

回答

2

您在「測試失敗」分支中運行exit,該分支以狀態代碼0(成功!)結束ruby程序。

如果你exit 1(或任何非零)從紅寶石,詹金斯會知道發生了不愉快的事情。

還有其他方法可以在ruby中「退出失敗」(如raise),但退出的工作方式與bash相似。