私たちはPHPアプリケーションをプロダクションサーバにプッシュするためにCapistrano/Webistrano(Lee Hambleyのrailsless-deploy gemを使用しています)を使用しています。私は、デプロイメントプロセスのさまざまな部分で実行されるいくつかのカスタムタスクを持っています。タスクが失敗した場合にCapistranoをロールバックさせない方法
例として、jetty solrインスタンスを停止して再起動しようとするタスクがあります。ただし、展開中にこのビットが失敗することがあるため、Capistranoは展開全体をロールバックし、以前のリビジョンに戻します。これは痛みです。 :-)
私はCapistranoにこれらのタスクの復帰結果を無視するように指示したいので、失敗した場合、Capistranoは引き続き実行し、展開を終了します。事実の後にサーバにsshして、完全なデプロイメントをやり直さなくても、solrインスタンスを適切に終了して再起動するのはとても簡単です。 Capistrano Task docsから
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
これを行う別の方法はありますか?エラーを止めて状態を検査したい場合はどうすればよいですか? –
状態を検査する方法: 'cap -d deploy'を実行してください。 -dは "debug"を意味します。これは、Capistranoが各タスクを実行する前に一時停止し、続行または中止を要求することを意味します。デバッグが必要なコマンドが表示されたら、単にプロンプトに答えないで、新しいターミナルタブ/ウィンドウとSSHをデプロイメントサーバーに開き、デバッグを実行します。 – Bendihossan