34
我們正在使用Capistrano/Webistrano(與Lee Hambley的railsless-deploy gem)將我們的PHP應用程序推送到生產服務器。我有一些自定義任務在部署過程的各個部分中運行。如何讓Capistrano在任務失敗時不會回滾
作爲一個例子,我有任務試圖停止並重新啓動jetty solr實例。但是,有時候在部署過程中這一點會失敗,因此Capistrano將回滾整個部署並恢復到之前的修訂版本。這是一個痛苦。 :-)
我想告訴Capistrano忽略這些任務的返回結果,所以如果它們失敗了,Capistrano會繼續完成部署任務。事後處理服務器很容易,並且正確地終止並重新啓動solr實例,而不必再次執行完整的部署。
下面是部署腳本的一些相關部分:
before "deploy:symlink", :solr_kill
after "deploy:symlink", :solr_start, :solr_index
task :solr_kill do
run "cd #{current_path}/Base ; #{sudo} phing solr-kill"
end
task :solr_start do
run "cd #{current_path}/Base ; #{sudo} phing solr-start"
run "sleep 10"
end
task :solr_index do
run "#{sudo} #{current_path}/Base/Bin/app.php cron run solr_index_cron"
end
謝謝,克里斯。我的任務永遠是一項正在進行的工作,但這將有所幫助,直到我有機會慢慢改進它們以更好地處理錯誤。 – TravellingGuy 2011-02-08 00:10:53