chicken_soup 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/chicken_soup/capabilities/apache/apache-checks.rb +11 -9
- data/lib/chicken_soup/capabilities/bundler/bundler-checks.rb +12 -9
- data/lib/chicken_soup/capabilities/bundler/bundler-defaults.rb +2 -0
- data/lib/chicken_soup/capabilities/bundler/bundler-tasks.rb +6 -1
- data/lib/chicken_soup/capabilities/checks.rb +22 -7
- data/lib/chicken_soup/capabilities/heroku/heroku-checks.rb +14 -12
- data/lib/chicken_soup/capabilities/nginx/nginx-checks.rb +11 -9
- data/lib/chicken_soup/capabilities/passenger/passenger-defaults.rb +10 -0
- data/lib/chicken_soup/capabilities/postgres/postgres-checks.rb +8 -6
- data/lib/chicken_soup/capabilities/rvm/rvm-checks.rb +29 -11
- data/lib/chicken_soup/capabilities/rvm/rvm-defaults.rb +15 -3
- data/lib/chicken_soup/capabilities/rvm/rvm-tasks.rb +27 -0
- data/lib/chicken_soup/capabilities/shared/db-checks.rb +26 -9
- data/lib/chicken_soup/capabilities/shared/db-defaults.rb +1 -0
- data/lib/chicken_soup/capabilities/shared/db-tasks.rb +26 -8
- data/lib/chicken_soup/capabilities/shared/web_server-tasks.rb +10 -4
- data/lib/chicken_soup/capabilities/unix/unix-checks.rb +25 -23
- data/lib/chicken_soup/deploy.rb +1 -4
- data/lib/chicken_soup/environment/checks.rb +24 -11
- data/lib/chicken_soup/environment.rb +1 -1
- data/lib/chicken_soup/global.rb +11 -0
- data/lib/chicken_soup/notifiers/checks.rb +22 -7
- data/lib/chicken_soup/notifiers/email/email-checks.rb +17 -15
- data/lib/chicken_soup/notifiers/tasks.rb +9 -0
- data/lib/chicken_soup/version.rb +1 -1
- metadata +59 -54
@@ -3,16 +3,18 @@
|
|
3
3
|
######################################################################
|
4
4
|
Capistrano::Configuration.instance(:must_exist).load do
|
5
5
|
namespace :capabilities do
|
6
|
-
namespace :
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
namespace :variable do
|
7
|
+
namespace :check do
|
8
|
+
desc <<-DESC
|
9
|
+
[internal] Checks to see if all necessary Apache capabilities variables have been set up.
|
10
|
+
DESC
|
11
|
+
task :apache do
|
12
|
+
required_variables = [
|
13
|
+
:web_server_control_script
|
14
|
+
]
|
14
15
|
|
15
|
-
|
16
|
+
verify_variables(required_variables)
|
17
|
+
end
|
16
18
|
end
|
17
19
|
end
|
18
20
|
end
|
@@ -3,16 +3,19 @@
|
|
3
3
|
######################################################################
|
4
4
|
Capistrano::Configuration.instance(:must_exist).load do
|
5
5
|
namespace :capabilities do
|
6
|
-
namespace :
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
namespace :variable do
|
7
|
+
namespace :check do
|
8
|
+
desc <<-DESC
|
9
|
+
[internal] Checks to see if all necessary Bundler capabilities variables have been set up.
|
10
|
+
DESC
|
11
|
+
task :bundler do
|
12
|
+
required_variables = [
|
13
|
+
:gem_packager_version,
|
14
|
+
:gem_packager_gem_path
|
15
|
+
]
|
14
16
|
|
15
|
-
|
17
|
+
verify_variables(required_variables)
|
18
|
+
end
|
16
19
|
end
|
17
20
|
end
|
18
21
|
end
|
@@ -7,6 +7,8 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
7
7
|
desc "[internal] Sets intelligent defaults for Bundler deployments."
|
8
8
|
task :bundler do
|
9
9
|
_cset :gem_packager_version, `gem list bundler`.match(/\((.*)\)/)[1]
|
10
|
+
_cset :gem_packager_gem_path, "#{shared_path}/bundle"
|
11
|
+
|
10
12
|
set :rake, "RAILS_ENV=#{rails_env} bundle exec rake"
|
11
13
|
end
|
12
14
|
end
|
@@ -9,7 +9,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
9
9
|
namespace :gems do
|
10
10
|
desc "Install Bundled Gems"
|
11
11
|
task :install, :roles => :app do
|
12
|
-
|
12
|
+
run_with_rvm rvm_ruby_string, "bundle install --gemfile #{latest_release}/Gemfile --path #{gem_packager_gem_path} --deployment --without development test"
|
13
13
|
end
|
14
14
|
|
15
15
|
desc "Update Bundled Gems"
|
@@ -18,6 +18,11 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
18
18
|
|
19
19
|
run "cd #{latest_release} && bundle update"
|
20
20
|
end
|
21
|
+
|
22
|
+
desc "Remove Bundled Gems"
|
23
|
+
task :clean, :roles => :app do
|
24
|
+
run "rm -rf #{gem_packager_gem_path}/*"
|
25
|
+
end
|
21
26
|
end
|
22
27
|
|
23
28
|
namespace :bundler do
|
@@ -2,15 +2,30 @@
|
|
2
2
|
# CAPABILITIES CHECK #
|
3
3
|
######################################################################
|
4
4
|
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
-
before 'capabilities:check', 'load_capability_checks'
|
5
|
+
before 'capabilities:variable:check', 'load_capability_checks'
|
6
6
|
|
7
7
|
namespace :capabilities do
|
8
|
-
namespace :
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
namespace :variable do
|
9
|
+
namespace :check do
|
10
|
+
desc "[internal] Runs variable checks for all of the capabilities listed."
|
11
|
+
task :default do
|
12
|
+
if exists?(:capabilities)
|
13
|
+
fetch(:capabilities).each do |capability|
|
14
|
+
top.capabilities.variable.check.send(capability.to_s) if top.capabilities.variable.check.respond_to?(capability.to_sym)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
namespace :deployment do
|
22
|
+
namespace :check do
|
23
|
+
desc "[internal] Runs deployment checks for all of the capabilities listed."
|
24
|
+
task :default do
|
25
|
+
if exists?(:capabilities)
|
26
|
+
fetch(:capabilities).each do |capability|
|
27
|
+
top.capabilities.deployment.check.send(capability.to_s) if top.capabilities.deployment.check.respond_to?(capability.to_sym)
|
28
|
+
end
|
14
29
|
end
|
15
30
|
end
|
16
31
|
end
|
@@ -3,19 +3,21 @@
|
|
3
3
|
######################################################################
|
4
4
|
Capistrano::Configuration.instance(:must_exist).load do
|
5
5
|
namespace :capabilities do
|
6
|
-
namespace :
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
6
|
+
namespace :variable do
|
7
|
+
namespace :check do
|
8
|
+
desc <<-DESC
|
9
|
+
[internal] Checks to see if all necessary Heroku environment variables have been set up.
|
10
|
+
DESC
|
11
|
+
task :heroku do
|
12
|
+
required_variables = [
|
13
|
+
:deploy_site_name,
|
14
|
+
:user,
|
15
|
+
:heroku_credentials_path,
|
16
|
+
:heroku_credentials_file
|
17
|
+
]
|
17
18
|
|
18
|
-
|
19
|
+
verify_variables(required_variables)
|
20
|
+
end
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
@@ -3,16 +3,18 @@
|
|
3
3
|
######################################################################
|
4
4
|
Capistrano::Configuration.instance(:must_exist).load do
|
5
5
|
namespace :capabilities do
|
6
|
-
namespace :
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
namespace :variable do
|
7
|
+
namespace :check do
|
8
|
+
desc <<-DESC
|
9
|
+
[internal] Checks to see if all necessary Nginx capabilities variables have been set up.
|
10
|
+
DESC
|
11
|
+
task :nginx do
|
12
|
+
required_variables = [
|
13
|
+
:web_server_control_script
|
14
|
+
]
|
14
15
|
|
15
|
-
|
16
|
+
verify_variables(required_variables)
|
17
|
+
end
|
16
18
|
end
|
17
19
|
end
|
18
20
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
######################################################################
|
2
|
+
# PASSENGER DEFAULTS #
|
3
|
+
######################################################################
|
4
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
+
namespace :capabilities do
|
6
|
+
namespace :defaults do
|
7
|
+
set :application_server_type, :passenger
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -5,12 +5,14 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
5
5
|
require 'chicken_soup/capabilities/shared/db-checks'
|
6
6
|
|
7
7
|
namespace :capabilities do
|
8
|
-
namespace :
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
namespace :variable do
|
9
|
+
namespace :check do
|
10
|
+
desc <<-DESC
|
11
|
+
[internal] Checks to see if all necessary Postgres capabilities variables have been set up.
|
12
|
+
DESC
|
13
|
+
task :postgres do
|
14
|
+
capabilities.variable.check.db
|
15
|
+
end
|
14
16
|
end
|
15
17
|
end
|
16
18
|
end
|
@@ -3,18 +3,36 @@
|
|
3
3
|
######################################################################
|
4
4
|
Capistrano::Configuration.instance(:must_exist).load do
|
5
5
|
namespace :capabilities do
|
6
|
-
namespace :
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
6
|
+
namespace :variable do
|
7
|
+
namespace :check do
|
8
|
+
desc <<-DESC
|
9
|
+
[internal] Checks to see if all necessary RVM variables have been set up.
|
10
|
+
DESC
|
11
|
+
task :rvm do
|
12
|
+
required_variables = [
|
13
|
+
:rvmrc_file,
|
14
|
+
:ruby_version,
|
15
|
+
:rvm_gemset,
|
16
|
+
:rvm_ruby_string,
|
17
|
+
]
|
16
18
|
|
17
|
-
|
19
|
+
verify_variables(required_variables)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
namespace :deployment do
|
25
|
+
namespace :check do
|
26
|
+
task :rvm do
|
27
|
+
abort "Could not find an .rvmrc file at #{rvmrc_file}. To use the RVM capability, you must have a valid local .rvmrc file." unless File.exist?(rvmrc_file)
|
28
|
+
|
29
|
+
rvmrc_file_contents = capture("cat #{current_path}/.rvmrc", :roles => :app)
|
30
|
+
set :current_rvm_ruby_string, rvmrc_file_contents.match(ChickenSoup::RVM_INFO_FORMAT)[1]
|
31
|
+
|
32
|
+
unless ruby_version_update_pending
|
33
|
+
abort "'#{rvm_ruby_string}' does not match the version currently installed on the server (#{current_rvm_ruby_string}). Please run 'cap <environment> ruby:update deploy:subzero' if you would like to upgrade your Ruby version prior to deploying." unless current_rvm_ruby_string == rvm_ruby_string
|
34
|
+
end
|
35
|
+
end
|
18
36
|
end
|
19
37
|
end
|
20
38
|
end
|
@@ -1,13 +1,25 @@
|
|
1
1
|
######################################################################
|
2
2
|
# RVM DEFAULTS #
|
3
3
|
######################################################################
|
4
|
+
ChickenSoup::RVM_INFO_FORMAT = /^rvm.+\s(([a-zA-Z0-9\-\._]+)(?:@([a-zA-Z0-9\-\._]+))?)/
|
5
|
+
|
4
6
|
Capistrano::Configuration.instance(:must_exist).load do
|
5
7
|
namespace :capabilities do
|
6
8
|
namespace :defaults do
|
7
|
-
_cset :
|
8
|
-
|
9
|
+
_cset :rvmrc_file, File.join(rails_root, '.rvmrc')
|
10
|
+
set :ruby_version_update_pending, false
|
11
|
+
|
12
|
+
_cset(:ruby_version) do
|
13
|
+
contents = File.read(rvmrc_file)
|
14
|
+
contents.match(ChickenSoup::RVM_INFO_FORMAT)[2]
|
15
|
+
end
|
16
|
+
|
17
|
+
_cset(:rvm_gemset) do
|
18
|
+
contents = File.read(rvmrc_file)
|
19
|
+
contents.match(ChickenSoup::RVM_INFO_FORMAT)[3]
|
20
|
+
end
|
9
21
|
|
10
|
-
_cset(:rvm_ruby_string) {
|
22
|
+
_cset(:rvm_ruby_string) {rvm_gemset ? "#{ruby_version}@#{rvm_gemset}" : ruby_version}
|
11
23
|
end
|
12
24
|
end
|
13
25
|
end
|
@@ -4,3 +4,30 @@
|
|
4
4
|
def run_with_rvm(ruby_env_string, command)
|
5
5
|
run("rvm use #{ruby_env_string} && #{command}")
|
6
6
|
end
|
7
|
+
|
8
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
9
|
+
run_task 'ruby:update', :as => manager_username
|
10
|
+
|
11
|
+
namespace :ruby do
|
12
|
+
desc <<-DESC
|
13
|
+
During the deployment, the wrapper ruby executable used by the
|
14
|
+
application server will be switched to utilize the ruby sepecified
|
15
|
+
by the application.
|
16
|
+
|
17
|
+
Note: This is only available during a subzero deployment since the web
|
18
|
+
server will need to be restarted in order for the changes to take effect.
|
19
|
+
DESC
|
20
|
+
task :update do
|
21
|
+
if ruby_version_update_pending
|
22
|
+
after 'ruby:update', 'gems:clean', 'gems:install'
|
23
|
+
|
24
|
+
set :ruby_version_update_pending, false
|
25
|
+
|
26
|
+
run("rvm use --create #{rvm_ruby_string}")
|
27
|
+
run("rvm wrapper #{rvm_ruby_string} #{application_server_type}")
|
28
|
+
else
|
29
|
+
set :ruby_version_update_pending, true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -3,16 +3,33 @@
|
|
3
3
|
######################################################################
|
4
4
|
Capistrano::Configuration.instance(:must_exist).load do
|
5
5
|
namespace :capabilities do
|
6
|
-
namespace :
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
namespace :variable do
|
7
|
+
namespace :check do
|
8
|
+
desc <<-DESC
|
9
|
+
[internal] Checks to see if all necessary DB capabilities variables have been set up.
|
10
|
+
DESC
|
11
|
+
task :db do
|
12
|
+
required_variables = [
|
13
|
+
:skip_backup_before_migration,
|
14
|
+
:db_backups_path
|
15
|
+
]
|
14
16
|
|
15
|
-
|
17
|
+
verify_variables(required_variables)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
namespace :deployment do
|
23
|
+
namespace :check do
|
24
|
+
desc <<-DESC
|
25
|
+
[internal] Checks to see if the DB is ready for deployment.
|
26
|
+
DESC
|
27
|
+
task :db, :roles => :db, :only => {:primary => true} do
|
28
|
+
backup_task_exists = capture("cd #{current_path} && #{rake} -T | grep db:backup | wc -l").chomp
|
29
|
+
abort("There must be a task named db:backup in order to deploy. If you do not want to backup your DB during deployments, set the skip_backup_before_migration variable to true in your deploy.rb.") if backup_task_exists == '0'
|
30
|
+
|
31
|
+
run "if [ ! -d #{db_backups_path} ]; then mkdir #{db_backups_path}; fi"
|
32
|
+
end
|
16
33
|
end
|
17
34
|
end
|
18
35
|
end
|
@@ -10,8 +10,6 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
10
10
|
|
11
11
|
before "deploy:migrate", "db:backup" unless skip_backup_before_migration
|
12
12
|
|
13
|
-
before 'db:backup', 'db:backup:check'
|
14
|
-
|
15
13
|
namespace :db do
|
16
14
|
desc <<-DESC
|
17
15
|
Calls the rake task `db:backup` on the server for the given environment.
|
@@ -23,15 +21,35 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
23
21
|
DESC
|
24
22
|
namespace :backup do
|
25
23
|
task :default, :roles => :db, :only => {:primary => true} do
|
26
|
-
run "cd #{current_path} && BACKUP_DIRECTORY=#{
|
24
|
+
run "cd #{current_path} && BACKUP_DIRECTORY=#{db_backups_path} #{rake} db:backup"
|
27
25
|
end
|
26
|
+
end
|
27
|
+
|
28
|
+
desc <<-DESC
|
29
|
+
Creates an easy way to debug remote data locally.
|
30
|
+
|
31
|
+
* Running this task will create a dump file of all the data in the specified
|
32
|
+
environment.
|
33
|
+
* Copy the dump file to the local machine
|
34
|
+
* Drop and recreate all local databases
|
35
|
+
* Import the dump file
|
36
|
+
* Bring the local DB up-to-date with any local migrations
|
37
|
+
* Prepare the test environment
|
38
|
+
DESC
|
39
|
+
namespace :pull do
|
40
|
+
task :default, :roles => :db, :only => {:primary => true} do
|
41
|
+
db.backup.default
|
42
|
+
db.pull.latest
|
43
|
+
end
|
44
|
+
|
45
|
+
task :latest, :roles => :db, :only => {:primary => true} do
|
46
|
+
latest_backup = capture(%Q{ls #{db_backups_path} -xtC | head -n 1 | cut -d " " -f 1}).chomp
|
28
47
|
|
29
|
-
|
30
|
-
task :check, :roles => :db do
|
31
|
-
backup_task_exists = capture("cd #{current_path} && #{rake} -T | grep db:backup | wc -l").chomp
|
32
|
-
abort("There must be a task named db:backup in order to deploy. If you do not want to backup your DB during deployments, set the skip_backup_before_migration variable to true in your deploy.rb.") if backup_task_exists == '0'
|
48
|
+
download_compressed "#{db_backups_path}/#{latest_backup}", "#{rails_root}/tmp/#{latest_backup}", :once => true
|
33
49
|
|
34
|
-
|
50
|
+
`rake db:drop:all db:create:all`
|
51
|
+
`rails dbconsole development < #{rails_root}/tmp/#{latest_backup}`
|
52
|
+
`rake db:migrate db:test:prepare`
|
35
53
|
end
|
36
54
|
end
|
37
55
|
|
@@ -15,6 +15,12 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
15
15
|
before 'deploy', 'deploy:web:disable'
|
16
16
|
after 'deploy', 'deploy:web:enable'
|
17
17
|
|
18
|
+
before 'deploy:subzero', 'web_server:stop'
|
19
|
+
after 'deploy:subzero', 'web_server:start'
|
20
|
+
|
21
|
+
before 'deploy:cold', 'website:disable'
|
22
|
+
after 'deploy:cold', 'website:enable'
|
23
|
+
|
18
24
|
namespace :deploy do
|
19
25
|
namespace :web do
|
20
26
|
desc <<-DESC
|
@@ -78,22 +84,22 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
78
84
|
namespace :web_server do
|
79
85
|
desc "Stop the web server"
|
80
86
|
task :stop, :roles => :web do
|
81
|
-
run "#{sudo} #{web_server_control_script} stop"
|
87
|
+
run "#{sudo} #{web_server_control_script} stop", :pty => true
|
82
88
|
end
|
83
89
|
|
84
90
|
desc "Start the web server"
|
85
91
|
task :start, :roles => :web do
|
86
|
-
run "#{sudo} #{web_server_control_script} start"
|
92
|
+
run "#{sudo} #{web_server_control_script} start", :pty => true
|
87
93
|
end
|
88
94
|
|
89
95
|
desc "Restart the web server"
|
90
96
|
task :restart, :roles => :web do
|
91
|
-
run "#{sudo} #{web_server_control_script} restart"
|
97
|
+
run "#{sudo} #{web_server_control_script} restart", :pty => true
|
92
98
|
end
|
93
99
|
|
94
100
|
desc "Reloads the web server configuration"
|
95
101
|
task :reload, :roles => :web do
|
96
|
-
run "#{sudo} #{web_server_control_script} reload"
|
102
|
+
run "#{sudo} #{web_server_control_script} reload", :pty => true
|
97
103
|
end
|
98
104
|
end
|
99
105
|
end
|
@@ -3,30 +3,32 @@
|
|
3
3
|
######################################################################
|
4
4
|
Capistrano::Configuration.instance(:must_exist).load do
|
5
5
|
namespace :capabilities do
|
6
|
-
namespace :
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
6
|
+
namespace :variable do
|
7
|
+
namespace :check do
|
8
|
+
desc <<-DESC
|
9
|
+
[internal] Checks to see if all necessary unix environment variables have been set up.
|
10
|
+
DESC
|
11
|
+
task :unix do
|
12
|
+
required_variables = [
|
13
|
+
:user,
|
14
|
+
:deployment_username,
|
15
|
+
:manager_username,
|
16
|
+
:user_home,
|
17
|
+
:deployment_user_home,
|
18
|
+
:manager_user_home,
|
19
|
+
:deploy_base_dir,
|
20
|
+
:deploy_site_name,
|
21
|
+
:deploy_to,
|
22
|
+
:app_server_ip,
|
23
|
+
:web_server_ip,
|
24
|
+
:db_server_ip,
|
25
|
+
:web_servers,
|
26
|
+
:app_servers,
|
27
|
+
:db_servers
|
28
|
+
]
|
28
29
|
|
29
|
-
|
30
|
+
verify_variables(required_variables)
|
31
|
+
end
|
30
32
|
end
|
31
33
|
end
|
32
34
|
end
|
data/lib/chicken_soup/deploy.rb
CHANGED
@@ -24,9 +24,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
24
24
|
DESC
|
25
25
|
task :cold do
|
26
26
|
transaction do
|
27
|
-
website.disable
|
28
27
|
deploy.base
|
29
|
-
website.enable
|
30
28
|
end
|
31
29
|
end
|
32
30
|
|
@@ -39,9 +37,8 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
39
37
|
DESC
|
40
38
|
task :subzero do
|
41
39
|
transaction do
|
42
|
-
|
40
|
+
ruby.update
|
43
41
|
deploy.base
|
44
|
-
web_server.start
|
45
42
|
end
|
46
43
|
end
|
47
44
|
|
@@ -15,22 +15,35 @@
|
|
15
15
|
#
|
16
16
|
######################################################################
|
17
17
|
Capistrano::Configuration.instance(:must_exist).load do
|
18
|
-
on :start,
|
18
|
+
on :start, 'environment:variable:check', :except => ['staging', 'production']
|
19
|
+
before 'deploy', 'environment:deployment:check'
|
20
|
+
before 'deploy:cold', 'environment:deployment:check'
|
21
|
+
before 'deploy:subzero', 'environment:deployment:check'
|
19
22
|
|
20
|
-
after 'environment:check',
|
23
|
+
after 'environment:variable:check', 'capabilities:variable:check', 'notifiers:variable:check'
|
24
|
+
after 'environment:deployment:check', 'capabilities:deployment:check', 'notifiers:deployment:check'
|
21
25
|
|
22
26
|
namespace :environment do
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
+
namespace :variable do
|
28
|
+
desc "[internal] Checks for environment variables shared among all deployment types."
|
29
|
+
task :check do
|
30
|
+
abort "You need to specify staging or production when you deploy. ie 'cap staging db:backup'" unless exists?(:rails_env)
|
31
|
+
abort "You need to specify a deployment type in your application's 'deploy.rb' file. ie 'set :deployment_type, :heroku'" unless exists?(:deployment_type)
|
27
32
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
33
|
+
required_variables = [
|
34
|
+
:application,
|
35
|
+
:application_short
|
36
|
+
]
|
32
37
|
|
33
|
-
|
38
|
+
verify_variables(required_variables)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
namespace :deployment do
|
43
|
+
desc "[internal] Attempts to ensure the deployment will be successful prior to attempting it."
|
44
|
+
task :check do
|
45
|
+
# Empty
|
46
|
+
end
|
34
47
|
end
|
35
48
|
end
|
36
49
|
end
|
data/lib/chicken_soup/global.rb
CHANGED
@@ -120,3 +120,14 @@ end
|
|
120
120
|
def require_if_exists(file)
|
121
121
|
require file if File.exists?(File.join(File.dirname(__FILE__), '..', "#{file}.rb"))
|
122
122
|
end
|
123
|
+
|
124
|
+
def download_compressed(remote, local, options = {})
|
125
|
+
remote_compressed_filename = "#{remote}.bz2"
|
126
|
+
local_compressed_filename = "#{local}.bz2"
|
127
|
+
|
128
|
+
run "bzip2 -zvck9 #{remote} > #{remote_compressed_filename}"
|
129
|
+
download remote_compressed_filename, local_compressed_filename, options
|
130
|
+
|
131
|
+
run "rm -f #{remote_compressed_filename}"
|
132
|
+
`bunzip2 -f #{local_compressed_filename} && rm -f #{local_compressed_filename}`
|
133
|
+
end
|
@@ -2,15 +2,30 @@
|
|
2
2
|
# NOTIFIERS CHECK #
|
3
3
|
######################################################################
|
4
4
|
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
-
before 'notifiers:check', 'load_notifier_checks'
|
5
|
+
before 'notifiers:variable:check', 'load_notifier_checks'
|
6
6
|
|
7
7
|
namespace :notifiers do
|
8
|
-
namespace :
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
namespace :variable do
|
9
|
+
namespace :check do
|
10
|
+
desc "[internal] Runs checks for all of the notifiers listed."
|
11
|
+
task :default do
|
12
|
+
if exists?(:notifiers)
|
13
|
+
fetch(:notifiers).each do |notifier|
|
14
|
+
top.notifiers.variable.check.send(notifier.to_s) if top.notifiers.variable.check.respond_to?(notifier.to_sym)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
namespace :deployment do
|
22
|
+
namespace :check do
|
23
|
+
desc "[internal] Runs deployment checks for all of the notifiers listed."
|
24
|
+
task :default do
|
25
|
+
if exists?(:notifiers)
|
26
|
+
fetch(:notifiers).each do |notifier|
|
27
|
+
top.notifiers.deployment.check.send(notifier.to_s) if top.notifiers.deployment.check.respond_to?(notifier.to_sym)
|
28
|
+
end
|
14
29
|
end
|
15
30
|
end
|
16
31
|
end
|
@@ -3,23 +3,25 @@
|
|
3
3
|
######################################################################
|
4
4
|
Capistrano::Configuration.instance(:must_exist).load do
|
5
5
|
namespace :notifiers do
|
6
|
-
namespace :
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
6
|
+
namespace :variable do
|
7
|
+
namespace :check do
|
8
|
+
desc <<-DESC
|
9
|
+
[internal] Checks to see if all necessary email notification environment variables have been set up.
|
10
|
+
DESC
|
11
|
+
task :email do
|
12
|
+
required_variables = [
|
13
|
+
:email_notifier_client_recipients,
|
14
|
+
:email_notifier_internal_recipients,
|
15
|
+
:email_notifier_domain,
|
16
|
+
:email_notifier_username,
|
17
|
+
:email_notifier_password,
|
18
|
+
:vc_log
|
19
|
+
]
|
19
20
|
|
20
|
-
|
21
|
+
abort "You must specify either internal or client recipients in order to use the email notifier." if email_notifier_client_recipients.empty? && email_notifier_internal_recipients.empty?
|
21
22
|
|
22
|
-
|
23
|
+
verify_variables(required_variables)
|
24
|
+
end
|
23
25
|
end
|
24
26
|
end
|
25
27
|
end
|
@@ -8,5 +8,14 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
8
8
|
DESC
|
9
9
|
task :load_tasks do
|
10
10
|
end
|
11
|
+
|
12
|
+
desc <<-DESC
|
13
|
+
Disables all notifiers for the current deployment.
|
14
|
+
|
15
|
+
This task must be called prior to any of the `deploy` tasks.
|
16
|
+
DESC
|
17
|
+
task :disable do
|
18
|
+
set :notifiers, []
|
19
|
+
end
|
11
20
|
end
|
12
21
|
end
|
data/lib/chicken_soup/version.rb
CHANGED
metadata
CHANGED
@@ -1,82 +1,84 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: chicken_soup
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.1
|
3
|
+
version: !ruby/object:Gem::Version
|
5
4
|
prerelease:
|
5
|
+
version: 0.5.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- thekompanee
|
9
9
|
- jfelchner
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
|
13
|
+
|
14
|
+
date: 2011-08-08 00:00:00 -05:00
|
14
15
|
default_executable:
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
17
18
|
name: capistrano
|
18
|
-
|
19
|
+
prerelease: false
|
20
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
19
21
|
none: false
|
20
|
-
requirements:
|
22
|
+
requirements:
|
21
23
|
- - ~>
|
22
|
-
- !ruby/object:Gem::Version
|
24
|
+
- !ruby/object:Gem::Version
|
23
25
|
version: 2.6.0
|
24
26
|
type: :runtime
|
25
|
-
|
26
|
-
|
27
|
-
- !ruby/object:Gem::Dependency
|
27
|
+
version_requirements: *id001
|
28
|
+
- !ruby/object:Gem::Dependency
|
28
29
|
name: mail
|
29
|
-
|
30
|
+
prerelease: false
|
31
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
32
|
none: false
|
31
|
-
requirements:
|
33
|
+
requirements:
|
32
34
|
- - ~>
|
33
|
-
- !ruby/object:Gem::Version
|
35
|
+
- !ruby/object:Gem::Version
|
34
36
|
version: 2.2.15
|
35
37
|
type: :runtime
|
36
|
-
|
37
|
-
|
38
|
-
- !ruby/object:Gem::Dependency
|
38
|
+
version_requirements: *id002
|
39
|
+
- !ruby/object:Gem::Dependency
|
39
40
|
name: bundler
|
40
|
-
|
41
|
+
prerelease: false
|
42
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
43
|
none: false
|
42
|
-
requirements:
|
44
|
+
requirements:
|
43
45
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
46
|
+
- !ruby/object:Gem::Version
|
45
47
|
version: 1.0.10
|
46
48
|
type: :development
|
47
|
-
|
48
|
-
|
49
|
-
- !ruby/object:Gem::Dependency
|
49
|
+
version_requirements: *id003
|
50
|
+
- !ruby/object:Gem::Dependency
|
50
51
|
name: rspec
|
51
|
-
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
54
|
none: false
|
53
|
-
requirements:
|
55
|
+
requirements:
|
54
56
|
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
57
|
+
- !ruby/object:Gem::Version
|
56
58
|
version: 2.6.0
|
57
59
|
type: :development
|
58
|
-
|
59
|
-
|
60
|
-
- !ruby/object:Gem::Dependency
|
60
|
+
version_requirements: *id004
|
61
|
+
- !ruby/object:Gem::Dependency
|
61
62
|
name: yard
|
62
|
-
|
63
|
+
prerelease: false
|
64
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
63
65
|
none: false
|
64
|
-
requirements:
|
66
|
+
requirements:
|
65
67
|
- - ~>
|
66
|
-
- !ruby/object:Gem::Version
|
68
|
+
- !ruby/object:Gem::Version
|
67
69
|
version: 0.7.1
|
68
70
|
type: :development
|
69
|
-
|
70
|
-
|
71
|
-
description: Why do you keep typing all that crap into your Capistrano recipes? Are
|
72
|
-
you too cool for standards? Well, ARE YA!?
|
71
|
+
version_requirements: *id005
|
72
|
+
description: Why do you keep typing all that crap into your Capistrano recipes? Are you too cool for standards? Well, ARE YA!?
|
73
73
|
email: support@thekompanee.com
|
74
74
|
executables: []
|
75
|
+
|
75
76
|
extensions: []
|
76
|
-
|
77
|
+
|
78
|
+
extra_rdoc_files:
|
77
79
|
- README.md
|
78
80
|
- LICENSE
|
79
|
-
files:
|
81
|
+
files:
|
80
82
|
- .gitignore
|
81
83
|
- .rspec
|
82
84
|
- .rvmrc
|
@@ -102,6 +104,7 @@ files:
|
|
102
104
|
- lib/chicken_soup/capabilities/nginx/nginx-checks.rb
|
103
105
|
- lib/chicken_soup/capabilities/nginx/nginx-defaults.rb
|
104
106
|
- lib/chicken_soup/capabilities/nginx/nginx-tasks.rb
|
107
|
+
- lib/chicken_soup/capabilities/passenger/passenger-defaults.rb
|
105
108
|
- lib/chicken_soup/capabilities/passenger/passenger-tasks.rb
|
106
109
|
- lib/chicken_soup/capabilities/postgres/postgres-checks.rb
|
107
110
|
- lib/chicken_soup/capabilities/postgres/postgres-defaults.rb
|
@@ -143,28 +146,30 @@ files:
|
|
143
146
|
has_rdoc: true
|
144
147
|
homepage: http://github.com/jfelchner/chicken_soup
|
145
148
|
licenses: []
|
149
|
+
|
146
150
|
post_install_message:
|
147
|
-
rdoc_options:
|
151
|
+
rdoc_options:
|
148
152
|
- --charset = UTF-8
|
149
|
-
require_paths:
|
153
|
+
require_paths:
|
150
154
|
- lib
|
151
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
155
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
152
156
|
none: false
|
153
|
-
requirements:
|
154
|
-
- -
|
155
|
-
- !ruby/object:Gem::Version
|
156
|
-
version:
|
157
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: "0"
|
161
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
162
|
none: false
|
159
|
-
requirements:
|
160
|
-
- -
|
161
|
-
- !ruby/object:Gem::Version
|
162
|
-
version:
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: "0"
|
163
167
|
requirements: []
|
168
|
+
|
164
169
|
rubyforge_project: chicken_soup
|
165
170
|
rubygems_version: 1.6.2
|
166
171
|
signing_key:
|
167
172
|
specification_version: 3
|
168
|
-
summary:
|
169
|
-
test_files:
|
173
|
+
summary: ...for the Deployment Soul.
|
174
|
+
test_files:
|
170
175
|
- spec/support/focused.rb
|