web-dev-qa-db-ja.com

Capistrano-古いリリースのクリーンアップ

通常、capistranoを使用する場合、デプロイされたアプリケーションから古いリリースを手動で削除します。 cap deploy:cleanupしかし、それでも5つのリリースが残っています。これは意図した目的ですか?古いリリースをクリーンアップして、以前の1つのデプロイのみにする別の方法はありますか?

124
Josh

:keep_releases変数を使用して、デフォルトの5をオーバーライドできます。 this outを確認します。

153
jcrossley3

Deploy.rbでこれを設定することにより、これを自動的に行うことができます。

set :keep_releases, 1
after "deploy:update", "deploy:cleanup" 

過去(正確にはどのバージョンかわからない)このコールバックはデフォルトでしたが、開発者は後でそれをユーザーに任せることにしました。 capistrano 3では、デフォルトのデプロイフローに追加されました。

130
Diego Plentz

たとえば、最後の3つを除くすべてのリリースを削除する場合は、次を実行できます。

cap deploy:cleanup -s keep_releases=3
41
jesse cai

同様の問題がありました。通常の展開では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

0
grappler