capistranoで世代管理する際の注意点


[まとめ] 現在開催中のKindleセール情報はこちら

最近、デプロイツールにcapistranoを使っているのですが、世代管理の設定を勘違いしていたのでメモを残しておきます。

世代管理の設定は下記のように keep_releases を設定するだけで終わりかと思っていたのですが、これだけだと単に何世代分残すかを設定しているだけで、デプロイ後に古いデータが削除されるわけではありません。

# config/deploy.rb

set :keep_releases, 3  # 3世代分残す

デプロイ後に世代数のチェックを行い、古い世代を自動削除するには deploy:cleanup を設定する必要があります。

# config/deploy.rb

set :keep_releases, 3

### deploy設定 ###

after "deploy:update", "deploy:cleanup"  # デプロイ後に世代チェック

—- 2015/5/8追記 —-

上記はcapistrano2での設定でした。

現状主流となっているcapistrano3の場合は、deploy:updateがなくなったのでエラーになってしまいます。


デプロイ完了後に実行するようにdeploy:finishedを指定するように変更しました。
after ‘deploy:finished’, ‘deploy:cleanup’

2013年7月の「Rename and add task hooks with descriptive names. · capistrano/capistrano@ebd8fee」の変更を見ると、finishingタスク内でdeploy:cleanupが呼ばれているので明示的に指定する必要はなくなったようです。

—- 追記ここまで —-

これに気づかず古い世代が残ったままになっており、ディスク容量を圧迫していました。。。

なお、手動でcleanupする場合は下記でできます

cap deploy:cleanup

参考URL

[まとめ] 現在開催中のKindleセール情報はこちら