mirror of
https://github.com/capistrano/capistrano
synced 2023-03-27 23:21:18 -04:00
Remote multi-server automation tool
![]() This patch makes it possible to do something like: server 'example.com', some_property: true on(:all, filter: :some_property) do |h| # ... end This is the shorthand syntax which checks the host properties for anything truthy matching the key name given. Symbols and strings are supported here. If a more complex match should be made, then a continuation can be given in the place of the smybol: server 'example.com', some_property: true on(:all, filter: lambda { |h| h.properties.some_property }) do |h| # ... end The keys `filter` and `select` are aliases of one another. Either may be used interchangably. An execption is raised if the filter removes all matching servers. |
||
---|---|---|
bin | ||
lib | ||
spec | ||
.gitignore | ||
capistrano.gemspec | ||
Gemfile | ||
LICENSE.txt | ||
Rakefile | ||
README.md |
Capistrano 
TODO
Installation
Add this line to your application's Gemfile:
gem 'capistrano', github: 'capistrano/capistrano', branch: :v3
And then execute:
$ bundle --binstubs
Capify:
$ cap install
This creates the following files:
Capfile
lib/deploy/tasks
config/deploy/staging.rb
config/deploy/production.rb
To create different stages:
$ cap install STAGES=local,sandbox,qa,production
Usage
$ cap -vT
$ cap staging deploy
$ cap production deploy
$ cap production deploy --dry-run
$ cap production deploy --prereqs
$ cap production deploy --trace
Configuration
# config/deploy.rb
set :application, 'example app'
# config/deploy/production.rb
set :stage, :production
ask :branch, :master
role :app, %w{example.com example2.com}
role :web, %w{example.com}
role :db, %w{example.com}
# the first server in the array is considered primary
Tasks
Before / After
Where calling on the same task name, executed in order of inclusion
# call an existing task
before :starting, :ensure_user
after :finishing, :notify
# or define in block
before :starting, :ensure_user do
#
end
after :finishing, :notify do
#
end
Console
Execute arbitrary remote commands
$ cap staging console