hello-world
webエンジニアのメモ。とりあえずやってみる。

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


Related #capistrano

[解決] capistranoでcopy_excludeが動いた

昨日、 capistranoでcopy\_excludeが動かない という記事を書きましたが、追加調査を行い無事に解決することができました。

[rails]capistrano3でrole指定したサーバが複数台ある場合に、ある1台でのみ実行する方法

capistrano 3.2.1 で確認 capistrano3でrole指定したサーバが複数台ある場合に、ある1台でのみ実行する方法です。

capistranoを使ってsymfonyデプロイ(capifonyのインストールと設定)

Railsのデプロイツールであるcapistranoを使って、symfonyのプロジェクトをデプロイできるcapifonyというgemを使ってみたのでそのインストールと設定方法をメモしておきます。

[未解決] capistranoでcopy_excludeが動かない

capistrano でデプロイ時に不要ファイル(.svn, .git等)を省く設定をしたのですが、なぜかうまく動きません。