diff --git a/documentation/getting-started/flow/index.markdown b/documentation/getting-started/flow/index.markdown new file mode 100644 index 00000000..90ae261c --- /dev/null +++ b/documentation/getting-started/flow/index.markdown @@ -0,0 +1,111 @@ +--- +title: Flow +layout: default +--- + +Capistrano v3 provides a default **deploy flow** and a **rollback flow**: + +### Deploy flow + +When you run `cap production deploy`, it invokes the following tasks in +sequence: + +``` +deploy:starting - start a deployment, make sure everything is ready +deploy:started - started hook (for custom tasks) +deploy:updating - update server(s) with a new release +deploy:updated - updated hook +deploy:publishing - publish the new release +deploy:published - published hook +deploy:finishing - finish the deployment, clean up everything +deploy:finished - finished hook +``` + +Notice there are several hook tasks e.g. `:started`, `:updated` for +you to hook up custom tasks into the flow using `after()` and `before()`. + +### Rollback flow + +When you run `cap production deploy:rollback`, it invokes the following +tasks in sequence: + +``` +deploy:starting +deploy:started +deploy:reverting - revert server(s) to previous release +deploy:reverted - reverted hook +deploy:publishing +deploy:published +deploy:finishing_rollback - finish the rollback, clean up everything +deploy:finished +``` + +As you can see, rollback flow shares many tasks with deploy flow. But note that, rollback flow runs its own `:finishing_rollback` task because its +cleanup process is usually different from deploy flow. + +### Flow examples + +Assume you require the following files in `Capfile`, + +``` +# Capfile +require 'capistrano/setup' +require 'capistrano/deploy' +require 'capistrano/bundler' +require 'capistrano/rails/migrations' +require 'capistrano/rails/assets' +``` + +When you run `cap production deploy`, it runs this following tasks: + +``` +deploy + deploy:starting + [before] + deploy:ensure_stage + deploy:check + deploy:started + deploy:updating + git:create_release + deploy:symlink:shared + deploy:updated + [before] + deploy:bundle + [after] + deploy:migrate + deploy:compile_assets + deploy:cleanup_assets + deploy:normalise_assets + deploy:publishing + deploy:symlink:release + deploy:restart + deploy:published + deploy:finishing + deploy:cleanup + deploy:finished + deploy:log_revision +``` + +For `cap production deploy:rollback`, it runs these tasks: + +``` +deploy + deploy:starting + [before] + deploy:ensure_stage + deploy:check + deploy:started + deploy:reverting + deploy:revert_release + deploy:reverted + [after] + deploy:rollback_assets + deploy:publishing + deploy:symlink:release + deploy:restart + deploy:published + deploy:finishing_rollback + deploy:cleanup_rollback + deploy:finished + deploy:log_revision +```