2012-11-05 75 views
0

使用Capistrano我想在失敗的部署上運行清理/拆卸任務,例如當shell命令失敗時。如何在失敗的部署上運行Capistrano任務

經過相當廣泛的搜索後,我找不到任何東西。

任何人都可以幫忙嗎?由於

+0

'cap -T'顯示所有命令及其描述。 –

+0

@JacobDam,是的,但是這對我的問題有什麼幫助?我需要這樣的代碼在deploy.rb中:在「failed_deploy」之後,:my_cleanup_task – Zac

+0

對不起,我誤解了你的問題。我以爲你問清哪個任務來清理失敗的部署。所以,你的問題是:如何觸發一個失敗的部署,並以編程方式運行自定義清理任務? –

回答

1

就以Capistrano的源代碼來看看:

這取決於你的任務是如何。基本上,有一些片段用於回滾的事情:

task :my_task do 
    on_rollback { "rm -rf data_dir" } 
    exec "mkdir data_dir" 
    exec "some commands for preparaing data in data_dir" 
end 
after "deploy:create_symlink", :my_task 

在上述情況下,my_task應該在一個事務中運行。是的,它已經在交易中,因爲deploy:create_symlink是創建交易的deploy的子任務。

如果要運行my_task獨立(不是子任務cap deploy進程)。您應該創建另一個任務,如下所示,並從命令行運行cap my_task_standalone

task :my_task_standalone do 
    transaction do 
    my_task 
    end 
end