capistrano_evrone_recipes 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/capistrano_evrone_recipes/capistrano.rb +11 -9
- data/lib/capistrano_evrone_recipes/recipes/deploy.rb +8 -8
- data/lib/capistrano_evrone_recipes/recipes/runit.rb +59 -0
- data/lib/capistrano_evrone_recipes/version.rb +1 -1
- metadata +2 -2
- data/lib/capistrano_evrone_recipes/recipes/foreman.rb +0 -48
@@ -7,14 +7,16 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
7
7
|
default_run_options[:pty] = true
|
8
8
|
ssh_options[:forward_agent] = true
|
9
9
|
|
10
|
-
set :bundle_cmd,
|
11
|
-
set :
|
12
|
-
set :
|
13
|
-
set :
|
14
|
-
set :
|
15
|
-
set :
|
16
|
-
set :
|
17
|
-
set :
|
10
|
+
set :bundle_cmd, "rbenv exec bundle"
|
11
|
+
set :bundle_flags, "--deployment --quiet --binstubs --shebang ruby-local-exec"
|
12
|
+
set :rake, -> { "#{bundle_cmd} exec rake" }
|
13
|
+
set :keep_releases, 7
|
14
|
+
set :scm, "git"
|
15
|
+
set :user, "deploy"
|
16
|
+
set :deploy_via, :unshared_remote_cache
|
17
|
+
set :copy_exclude, [".git"]
|
18
|
+
set :repository_cache, -> { "#{deploy_to}/shared/#{application}.git" }
|
19
|
+
set :normalize_asset_timestamps, false
|
18
20
|
|
19
21
|
load "deploy"
|
20
22
|
require 'bundler/capistrano'
|
@@ -22,7 +24,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
22
24
|
recipes_dir = File.dirname(File.expand_path(__FILE__))
|
23
25
|
|
24
26
|
load "#{recipes_dir}/recipes/crontab.rb"
|
25
|
-
load "#{recipes_dir}/recipes/
|
27
|
+
load "#{recipes_dir}/recipes/runit.rb"
|
26
28
|
load "#{recipes_dir}/recipes/deploy.rb"
|
27
29
|
load "#{recipes_dir}/recipes/login.rb"
|
28
30
|
load "#{recipes_dir}/recipes/migrate.rb"
|
@@ -10,23 +10,23 @@ namespace :deploy do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
task :start, :on_no_matching_servers => :continue, :except => { :no_release => true } do
|
13
|
-
CapistranoEvroneRecipes::Util.with_roles(self, :app)
|
14
|
-
CapistranoEvroneRecipes::Util.with_roles(self, :worker) {
|
13
|
+
CapistranoEvroneRecipes::Util.with_roles(self, :app) { unicorn.start }
|
14
|
+
CapistranoEvroneRecipes::Util.with_roles(self, :worker) { runit.start }
|
15
15
|
end
|
16
16
|
|
17
17
|
task :stop, :on_no_matching_servers => :continue, :except => { :no_release => true } do
|
18
|
-
CapistranoEvroneRecipes::Util.with_roles(self, :app)
|
19
|
-
CapistranoEvroneRecipes::Util.with_roles(self, :worker) {
|
18
|
+
CapistranoEvroneRecipes::Util.with_roles(self, :app) { unicorn.stop }
|
19
|
+
CapistranoEvroneRecipes::Util.with_roles(self, :worker) { runit.stop }
|
20
20
|
end
|
21
21
|
|
22
22
|
task :graceful_stop, :on_no_matching_servers => :continue, :except => { :no_release => true } do
|
23
|
-
CapistranoEvroneRecipes::Util.with_roles(self, :app)
|
24
|
-
CapistranoEvroneRecipes::Util.with_roles(self, :worker) {
|
23
|
+
CapistranoEvroneRecipes::Util.with_roles(self, :app) { unicorn.graceful_stop }
|
24
|
+
CapistranoEvroneRecipes::Util.with_roles(self, :worker) { runit.stop }
|
25
25
|
end
|
26
26
|
|
27
27
|
task :restart, :on_no_matching_servers => :continue, :except => {:no_release => true} do
|
28
|
-
CapistranoEvroneRecipes::Util.with_roles(self, :app)
|
29
|
-
CapistranoEvroneRecipes::Util.with_roles(self, :worker) {
|
28
|
+
CapistranoEvroneRecipes::Util.with_roles(self, :app) { unicorn.restart }
|
29
|
+
CapistranoEvroneRecipes::Util.with_roles(self, :worker) { runit.restart }
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -0,0 +1,59 @@
|
|
1
|
+
_cset(:runit_export_path) { "#{latest_release}/var/services" }
|
2
|
+
_cset(:runit_services_path) { "#{deploy_to}/services" }
|
3
|
+
_cset(:runit_export_cmd) { "#{fetch :bundle_cmd} exec foreman export runitu" }
|
4
|
+
_cset(:runit_procfile) { "#{latest_release}/Procfile" }
|
5
|
+
_cset(:foreman_concurency) { nil }
|
6
|
+
|
7
|
+
namespace :runit do
|
8
|
+
|
9
|
+
desc "Restart Procfile services"
|
10
|
+
task :restart, :roles => :worker, :on_no_matching_servers => :continue, :except => { :no_release => true } do
|
11
|
+
current_link = capture("readlink #{runit_services_path}/current").to_s.strip
|
12
|
+
if current_link == runit_export_path
|
13
|
+
stop
|
14
|
+
start
|
15
|
+
else
|
16
|
+
relink
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
task :relink, :roles => :worker, :on_no_matching_servers => :continue, :except => { :no_release => true } do
|
21
|
+
cmd = <<-EOF
|
22
|
+
(test -L previous && readlink previous | xargs rm -rf) ;
|
23
|
+
rm -f current.new &&
|
24
|
+
ln -s #{runit_export_path} current.new &&
|
25
|
+
rm -f previous &&
|
26
|
+
(test -L current && mv current previous) || true
|
27
|
+
&& mv current.new current
|
28
|
+
EOF
|
29
|
+
cmd = cmd.gsub(/\n/, " ").gsub(/ +/, " ")
|
30
|
+
run("cd #{runit_services_path} && #{cmd}")
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "Stop services"
|
34
|
+
task :stop, :roles => :worker, :on_no_matching_servers => :continue, :except => { :no_release => true } do
|
35
|
+
cmd = "for i in `ls -1 #{runit_services_path}/current`; do"
|
36
|
+
cmd << " sv -w 10 force-stop #{runit_services_path}/current/${i} ; done"
|
37
|
+
run(cmd)
|
38
|
+
end
|
39
|
+
|
40
|
+
desc "Start services"
|
41
|
+
task :start, :roles => :worker, :on_no_matching_servers => :continue, :except => { :no_release => true } do
|
42
|
+
cmd = "for i in `ls -1 #{runit_services_path}/current`; do"
|
43
|
+
cmd << " sv -v -w 10 up #{runit_services_path}/current/${i} ; done"
|
44
|
+
run(cmd)
|
45
|
+
end
|
46
|
+
|
47
|
+
desc "Export Procfile"
|
48
|
+
task :export, :roles => :worker, :on_no_matching_servers => :continue, :except => { :no_release => true } do
|
49
|
+
env = <<-EOF
|
50
|
+
RAILS_ENV=#{rails_env}
|
51
|
+
EOF
|
52
|
+
put(env, "#{release_path}/.env")
|
53
|
+
|
54
|
+
conc = fetch(:foreman_concurency) ? "-c #{fetch :foreman_concurency}" : ""
|
55
|
+
run "cd #{release_path} && #{runit_export_cmd} #{runit_export_path} -e #{release_path}/.env -l #{shared_path}/log -f #{runit_procfile} --root=#{release_path} -a #{application} #{conc} > /dev/null"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
after "deploy:finalize_update", "runit:export"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano_evrone_recipes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -107,10 +107,10 @@ files:
|
|
107
107
|
- lib/capistrano_evrone_recipes/recipes/assets.rb
|
108
108
|
- lib/capistrano_evrone_recipes/recipes/crontab.rb
|
109
109
|
- lib/capistrano_evrone_recipes/recipes/deploy.rb
|
110
|
-
- lib/capistrano_evrone_recipes/recipes/foreman.rb
|
111
110
|
- lib/capistrano_evrone_recipes/recipes/login.rb
|
112
111
|
- lib/capistrano_evrone_recipes/recipes/migrate.rb
|
113
112
|
- lib/capistrano_evrone_recipes/recipes/rails.rb
|
113
|
+
- lib/capistrano_evrone_recipes/recipes/runit.rb
|
114
114
|
- lib/capistrano_evrone_recipes/recipes/silent.rb
|
115
115
|
- lib/capistrano_evrone_recipes/recipes/sphinx.rb
|
116
116
|
- lib/capistrano_evrone_recipes/recipes/unicorn.rb
|
@@ -1,48 +0,0 @@
|
|
1
|
-
_cset(:foreman_services_path) { "#{deploy_to}/services/#{release_name}" }
|
2
|
-
_cset(:foreman_cmd) { "#{fetch :bundle_cmd} exec foreman export runitu" }
|
3
|
-
_cset(:foreman_procfile) { "#{release_path}/Procfile" }
|
4
|
-
_cset(:foreman_concurency) { nil }
|
5
|
-
|
6
|
-
namespace :foreman do
|
7
|
-
|
8
|
-
desc "Restart Procfile services"
|
9
|
-
task :restart, :roles => :worker, :on_no_matching_servers => :continue, :except => { :no_release => true } do
|
10
|
-
cmd = <<-EOF
|
11
|
-
(test -L previous && readlink previous | xargs rm -rf) ;
|
12
|
-
rm -f current.new &&
|
13
|
-
ln -s #{fetch :foreman_services_path} current.new &&
|
14
|
-
rm -f previous &&
|
15
|
-
(test -L current && mv current previous) || true
|
16
|
-
&& mv current.new current
|
17
|
-
EOF
|
18
|
-
cmd = cmd.gsub(/\n/, " ").gsub(/ +/, " ")
|
19
|
-
run("cd #{deploy_to}/services && #{cmd}")
|
20
|
-
end
|
21
|
-
|
22
|
-
desc "Stop services"
|
23
|
-
task :stop, :roles => :worker, :on_no_matching_servers => :continue, :except => { :no_release => true } do
|
24
|
-
cmd = "for i in `ls -1 #{deploy_to}/services/current`; do"
|
25
|
-
cmd << " sv -w 10 down #{deploy_to}/services/current/${i} ; done"
|
26
|
-
run(cmd)
|
27
|
-
end
|
28
|
-
|
29
|
-
desc "Start services"
|
30
|
-
task :start, :roles => :worker, :on_no_matching_servers => :continue, :except => { :no_release => true } do
|
31
|
-
cmd = "for i in `ls -1 #{deploy_to}/services/current`; do"
|
32
|
-
cmd << " sv -v -w 10 up #{deploy_to}/services/current/${i} ; done"
|
33
|
-
run(cmd)
|
34
|
-
end
|
35
|
-
|
36
|
-
desc "Export Procfile"
|
37
|
-
task :export, :roles => :worker, :on_no_matching_servers => :continue, :except => { :no_release => true } do
|
38
|
-
env = <<-EOF
|
39
|
-
RAILS_ENV=#{rails_env}
|
40
|
-
EOF
|
41
|
-
put(env, "#{release_path}/.env")
|
42
|
-
|
43
|
-
conc = fetch(:foreman_concurency) ? "-c #{fetch :foreman_concurency}" : ""
|
44
|
-
run "cd #{release_path} && #{fetch :foreman_cmd} #{fetch :foreman_services_path} -e #{release_path}/.env -l #{shared_path}/log -f #{fetch :foreman_procfile} --root=#{release_path} -a #{application} #{conc} > /dev/null"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
after "deploy:finalize_update", "foreman:export"
|