mirror of
https://github.com/capistrano/capistrano
synced 2023-03-27 23:21:18 -04:00
support primary
syntax
This commit is contained in:
parent
d60c2ffe07
commit
5b504e3791
5 changed files with 28 additions and 5 deletions
|
@ -29,7 +29,9 @@ TODO:
|
|||
- [x] support existing significant configuration variables
|
||||
- [x] set configuration defaults, add commented out examples to templates
|
||||
- [x] basic rollback
|
||||
- [ ] support primary servers `on primary(:db)`
|
||||
- [x] support primary servers `on primary :db`
|
||||
- [ ] rails specific tasks
|
||||
- [ ] auto load tasks for scm based on variable
|
||||
- [ ] better descriptions for tasks
|
||||
- [ ] add examples to README
|
||||
|
||||
|
@ -78,10 +80,12 @@ To create different stages:
|
|||
|
||||
ask :branch, :master
|
||||
|
||||
role :app, %w{example.com}
|
||||
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
|
||||
|
|
|
@ -33,6 +33,10 @@ module Capistrano
|
|||
roles.fetch_roles(names)
|
||||
end
|
||||
|
||||
def primary(role)
|
||||
roles.fetch_primary(role)
|
||||
end
|
||||
|
||||
def configure_backend
|
||||
SSHKit.configure do |sshkit|
|
||||
sshkit.format = fetch(:format)
|
||||
|
@ -117,6 +121,10 @@ module Capistrano
|
|||
roles_for(names).flatten.uniq
|
||||
end
|
||||
|
||||
def fetch_primary(role)
|
||||
fetch(role).first
|
||||
end
|
||||
|
||||
def each
|
||||
roles.each { |role| yield role }
|
||||
end
|
||||
|
|
|
@ -26,6 +26,10 @@ module Capistrano
|
|||
env.roles_for(names)
|
||||
end
|
||||
|
||||
def primary(role)
|
||||
env.primary(role)
|
||||
end
|
||||
|
||||
def env
|
||||
Configuration.env
|
||||
end
|
||||
|
|
|
@ -108,8 +108,11 @@ namespace :deploy do
|
|||
|
||||
desc 'Clean up old releases'
|
||||
task :cleanup do
|
||||
releases = on primary :app do
|
||||
capture(:ls, '-xt', releases_path).split.reverse
|
||||
end
|
||||
|
||||
on roles :all do
|
||||
releases = capture(:ls, '-xt', releases_path).split.reverse
|
||||
if releases.count >= fetch(:keep_releases)
|
||||
info t(:keeping_releases, keep_releases: fetch(:keep_releases), releases: releases.count)
|
||||
directories = (releases - releases.last(fetch(:keep_releases))).map { |release|
|
||||
|
@ -121,7 +124,7 @@ namespace :deploy do
|
|||
|
||||
desc 'Log details of the deploy'
|
||||
task :log_revision do
|
||||
on roles :app do
|
||||
on primary :app do
|
||||
within releases_path do
|
||||
execute %{echo "#{revision_log_message}" >> #{revision_log}}
|
||||
end
|
||||
|
@ -130,11 +133,14 @@ namespace :deploy do
|
|||
|
||||
desc 'Rollback to the last release'
|
||||
task :rollback do
|
||||
on roles :app do
|
||||
on primary :app do
|
||||
last_release = capture(:ls, '-xt', releases_path).split[1]
|
||||
set(:rollback_release_timestamp, last_release)
|
||||
set(:branch, last_release)
|
||||
set(:revision_log_message, rollback_log_message)
|
||||
end
|
||||
|
||||
on roles :app do
|
||||
%w{check finalize restart finishing finished}.each do |task|
|
||||
invoke "deploy:#{task}"
|
||||
end
|
||||
|
|
|
@ -2,6 +2,7 @@ namespace :git do
|
|||
|
||||
desc 'Check that the repository exists'
|
||||
task :check do
|
||||
fetch(:branch)
|
||||
on roles :all do
|
||||
unless test "[ -d #{repo_path} ]"
|
||||
within deploy_path do
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue