capistranoで世代管理する際の注意点
最近、デプロイツールに 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
- Capistranoによるデプロイ
- [[Capistrano] deploy:cleanup で残す世代数を変更する](http://ringio-blog.appspot.com/2010/07/capistrano-deploy-cleanup-leave-the-generations-to-change-the-number)