mirror of
https://github.com/capistrano/capistrano
synced 2023-03-27 23:21:18 -04:00
112 lines
2.6 KiB
Markdown
112 lines
2.6 KiB
Markdown
![]() |
---
|
||
|
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
|
||
|
```
|