プログラマでありたい

おっさんになっても、プログラマでありつづけたい

Capistranoのタスク一覧

 Capistranoのタスクが、具体的にどのように動くか調べてみました。最初は下記のドキュメントを参考にしていたのですが、結局ソースを見たほうが10倍簡単に理解できました。コード中のrecipes/deploy.rb辺りを一度読むことを強くお勧めします。
Capistrano recipes: deploy
capistrano/lib/capistrano/recipes/deploy.rb at master · capistrano/capistrano


 ほとんどのタスクが基本コマンドの組み合わせ実行です。この原則を知っているだけで、deployの挙動の大部分が解るようになります。


Tasks一覧
・deploy
 update + restart


・deploy:check
 依存性のチェック。Gem等のモジュールだけでなく、ファイルやパス等も依存性としてチェック出来る。またdependメソッドで、依存性の記述が出来る。


・deploy:cleanup
 古いリリースを削除出来る。デフォルトでは最新の5つのリリースを維持して、その以前のものは削除する。


・deploy:cold
 update + migrate + start


・deploy:finalize_update
 パーミッション設定。sharedへのシンボリックリンクの作成。タイムスタンプの更新


・deploy:migrate
 rake db:migrateの実行


・deploy:migrations
 update_code + migrate + create_symlink + restart


・deploy:restart
 空。各自で実装する。


・deploy:setup
 プロジェクトに必要なディレクトリを作成する。新規プロジェクトの場合や、サーバを追加した時に実行する。
サーバを追加する時の例

$ cap HOSTS=new.server.com deploy:setup


・deploy:start
 空。各自で実装する。


・deploy:stop
 空。各自で実装する。


・deploy:symlink
 create_symlink


・deploy:update
 update_code + create_symlink


・deploy:update_code
 strategy.deploy! + finalize_update


・deploy:upload
 ファイル指定でのコピー


See Also:
今更聞けないCapistranoでリリースの自動化
ChefとCapistranoの素敵な関係。或いはレイヤーの違いの話