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の素敵な関係。或いはレイヤーの違いの話