通常、capistranoを使用する場合、デプロイされたアプリケーションから古いリリースを手動で削除します。 cap deploy:cleanup
しかし、それでも5つのリリースが残っています。これは意図した目的ですか?古いリリースをクリーンアップして、以前の1つのデプロイのみにする別の方法はありますか?
:keep_releases
変数を使用して、デフォルトの5をオーバーライドできます。 this outを確認します。
Deploy.rbでこれを設定することにより、これを自動的に行うことができます。
set :keep_releases, 1
after "deploy:update", "deploy:cleanup"
過去(正確にはどのバージョンかわからない)このコールバックはデフォルトでしたが、開発者は後でそれをユーザーに任せることにしました。 capistrano 3では、デフォルトのデプロイフローに追加されました。
たとえば、最後の3つを除くすべてのリリースを削除する場合は、次を実行できます。
cap deploy:cleanup -s keep_releases=3
同様の問題がありました。通常の展開では5つのリリースを保持したいのですが、特定の状況で以前のリリースをすべて削除できるようにする必要がありました。
これをカスタムタスクで行うことができました。ファイルを作成するlib/capistrano/tasks/cleanup.rake
そして次のコードを追加します。
desc "Remove all but the last release"
task :cleanup_all do
set :keep_releases, 1
invoke "deploy:cleanup"
end
実行するにはbundle exec cap staging cleanup_all
またはcap staging cleanup_all