deploy_mate 0.17.6 → 0.18

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a3e9f9595fe454da126261a0e622232970292b1
4
- data.tar.gz: af8bb5fc8d015bf4cc08793f88d9cc34e15282cc
3
+ metadata.gz: c02225815d07b37452f67f963f13d5b36acf51eb
4
+ data.tar.gz: 84991452955ddc3b8163cfd1a62448db3a5e37e3
5
5
  SHA512:
6
- metadata.gz: b98ffc4232697a7f691cdad14a04fb667f58fc074038d7c7e54bbbef94c8ceb204ed2c564a511036a76b6fe629e1d86ec13af1ff3c71e82bb406f3166e7252be
7
- data.tar.gz: 71a3c6e809df459c750abe9e1f324a20e1cffdc3fcfdcebb622bdb3b0ca11d2d1b2efa39c9dab2ba9e77553a2d150aff6c3f84194066059b06214582f5a0e762
6
+ metadata.gz: da23d19df9d514d86f887454443897411a99ebd2d0b0725c40d819996caaa64940169db8014021fe25c2d8d19006c6293c113c63500e387ec53e04da34276032
7
+ data.tar.gz: d2d1b78e33ada5b83284002b6b00970e05423f8268616aa0485420b21b92e6a4707071632be214b6c0b777fbdb6ec0ef05faa2317dd6c05ab98567e52d126ba9
data/README.md CHANGED
@@ -6,7 +6,7 @@ This little gem can be added to your ruby-projects in order to **set up a workin
6
6
 
7
7
  The resulting server will work with this setup:
8
8
  - NGINX Webserver (http://nginx.org/)
9
- - Unicorn Rack App Server (http://unicorn.bogomips.org/)
9
+ - Unicorn Rack App Server (http://unicorn.bogomips.org/) / Puma Rack App Server (http://puma.io/)
10
10
  - Bluepill Process Monitoring (https://github.com/bluepill-rb/bluepill)
11
11
  - RVM as user-install (http://rvm.io)
12
12
  - [Optional] ImageMagick (http://www.imagemagick.org)
@@ -29,6 +29,7 @@ It uses the following Capistrano-roles to divide the installed components:
29
29
  - **cronjobs**: [OPTIONAL] For environments where `whenever` should manage/run cronjobs
30
30
 
31
31
  ## Changelog
32
+ * **0.18 (2016-02-25)**: Added support for capistrano 3.4, Ask before overwriting existing config-files
32
33
  * **2016-02-19**: Made selection of a deployed branch possible
33
34
  * **2016-02-17**: Added support for puma as application server
34
35
  * **2015-10-12**: Support additional linked-directories
data/deploy-mate.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "deploy_mate"
3
- s.version = "0.17.6"
3
+ s.version = "0.18"
4
4
 
5
5
  s.authors = ["Tim Adler", "Marcus Geißler", "Johannes Strampe"]
6
6
  s.date = %q{2016-02-17}
@@ -23,7 +23,7 @@ require 'capistrano/bundler'
23
23
  require "capistrano/helpers.rb"
24
24
 
25
25
  # Load custom modules with helper functions
26
- %w(aptitude bluepill upstart user_management).each do |m|
26
+ %w(aptitude bluepill upstart user_management shell).each do |m|
27
27
  load File.expand_path("../modules/#{m}.rb", __FILE__)
28
28
  end
29
29
 
@@ -25,9 +25,7 @@ set :app_server, "unicorn" # default to unicorn if nothing set
25
25
  namespace :deploy do
26
26
  desc 'Restart application'
27
27
  task :restart do
28
- on roles(:app), in: :sequence, wait: 5 do
29
- invoke "bluepill:restart"
30
- end
28
+ invoke "bluepill:restart"
31
29
  end
32
30
 
33
31
  desc 'Ensure that the app folder is present'
@@ -0,0 +1,20 @@
1
+ module Shell
2
+
3
+ def file_exists?(file)
4
+ test("[ -f #{file} ]")
5
+ end
6
+
7
+ def overwrite_file?(file)
8
+ ask(:answer, "File #{file} already exists. Overwrite it? (y/N)")
9
+ fetch(:answer).downcase == "y"
10
+ end
11
+
12
+ def file_exists_and_overwrite?(file)
13
+ file_exists?(file) && overwrite_file?(file)
14
+ end
15
+
16
+ def file_new_or_overwrite?(file)
17
+ !file_exists?(file) || overwrite_file?(file)
18
+ end
19
+
20
+ end
@@ -1,29 +1,42 @@
1
1
  namespace :bluepill do
2
+ include Shell
2
3
 
3
4
  desc "Installs the application pill"
4
5
  task :setup do
5
6
  on roles(:app) do
6
7
  execute "mkdir -p #{shared_path}/config"
7
- template "application.pill.erb", "#{shared_path}/config/#{fetch(:application)}.pill"
8
+ if file_new_or_overwrite?("#{shared_path}/config/#{fetch(:application)}.pill")
9
+ template "application.pill.erb", "#{shared_path}/config/#{fetch(:application)}.pill"
10
+ end
8
11
  end
9
12
  end
10
13
 
11
14
  desc "Starts bluepill"
12
15
  task :start do
13
16
  on roles(:app) do
14
- sudo "start bluepill"
17
+ if !bluepill_running?
18
+ sudo "start bluepill"
19
+ else
20
+ info "No need to start bluepill, it is running!"
21
+ end
15
22
  end
16
23
  end
17
24
 
18
25
  desc "Stops app server"
19
26
  task :stop do
20
27
  on roles(:app) do
21
- sudo "stop bluepill"
28
+ if bluepill_running?
29
+ sudo "stop bluepill"
30
+ else
31
+ "Can't stop bluepill because it's not running!"
32
+ end
22
33
  end
23
34
  end
24
35
 
25
36
  desc "Restarts/Reloads app gracefully"
26
37
  task :restart do
38
+ invoke "bluepill:start"
39
+
27
40
  on roles(:app) do
28
41
  if bluepill_running?
29
42
  if pill_running?(fetch(:app_server))
@@ -31,11 +44,10 @@ namespace :bluepill do
31
44
  else
32
45
  execute :rvmsudo, :bluepill, fetch(:application), :start
33
46
  end
34
- else
35
- invoke "bluepill:start"
36
- invoke "nginx:reload"
37
47
  end
38
48
  end
49
+
50
+ invoke "nginx:reload"
39
51
  end
40
52
  before :restart, 'rvm:hook'
41
53
  end
@@ -1,10 +1,13 @@
1
1
  namespace :logrotate do
2
+ include Shell
2
3
 
3
4
  desc "Install the logrotate config"
4
5
  task :setup do
5
6
  on roles(:app) do
6
- template "logrotate.erb", "/tmp/logrotate-#{fetch(:application)}"
7
- sudo "mv /tmp/logrotate-#{fetch(:application)} /etc/logrotate.d/#{fetch(:application)}"
7
+ if file_new_or_overwrite?("/etc/logrotate.d/#{fetch(:application)}")
8
+ template "logrotate.erb", "/tmp/logrotate-#{fetch(:application)}"
9
+ sudo "mv /tmp/logrotate-#{fetch(:application)} /etc/logrotate.d/#{fetch(:application)}"
10
+ end
8
11
  sudo "chown root:root /etc/logrotate.d/#{fetch(:application)}"
9
12
  end
10
13
  end
@@ -6,24 +6,24 @@ namespace :machine do
6
6
  task :init do
7
7
  on roles(:app) do
8
8
  apt_get_update
9
- invoke "machine:install:htop"
10
- invoke "machine:install:language_pack_de"
11
- invoke "machine:install:unattended_upgrades"
12
- invoke "machine:install:ntp"
13
- invoke "machine:install:git"
14
- invoke "machine:install:nginx"
15
- invoke "machine:install:fail2ban"
16
- invoke "machine:install:rvm"
17
- invoke "machine:install:ruby"
18
- invoke "machine:install:set_defaults"
19
- invoke "machine:install:bluepill"
20
- invoke "machine:install:bundler"
21
- invoke "machine:install:nodejs"
22
- invoke "machine:install:elasticsearch"
23
- invoke "machine:install:imagemagick" if fetch(:imagemagick)
24
- invoke "machine:install:mysql_dev" if fetch(:db_engine) == "mysql"
25
- invoke "machine:install:postgres_dev" if fetch(:db_engine) == "postgresql"
26
9
  end
10
+ invoke "machine:install:htop"
11
+ invoke "machine:install:language_pack_de"
12
+ invoke "machine:install:unattended_upgrades"
13
+ invoke "machine:install:ntp"
14
+ invoke "machine:install:git"
15
+ invoke "machine:install:nginx"
16
+ invoke "machine:install:fail2ban"
17
+ invoke "machine:install:rvm"
18
+ invoke "machine:install:ruby"
19
+ invoke "machine:install:set_defaults"
20
+ invoke "machine:install:bluepill"
21
+ invoke "machine:install:bundler"
22
+ invoke "machine:install:nodejs"
23
+ invoke "machine:install:elasticsearch"
24
+ invoke "machine:install:imagemagick" if fetch(:imagemagick)
25
+ invoke "machine:install:mysql_dev" if fetch(:db_engine) == "mysql"
26
+ invoke "machine:install:postgres_dev" if fetch(:db_engine) == "postgresql"
27
27
  end
28
28
  before "machine:init", "machine:check_ubuntu_user"
29
29
  before "deploy", "machine:check_ubuntu_user"
@@ -1,30 +1,35 @@
1
1
  set_default(:nginx_server_name, "*.*")
2
2
 
3
3
  namespace :nginx do
4
+ include Shell
4
5
 
5
6
  desc "Installs the nginx configs"
6
7
  task :setup do
7
8
  on roles(:web) do
8
- template "nginx_base.conf.erb", "/tmp/nginx_conf"
9
- sudo "mv /tmp/nginx_conf /etc/nginx/nginx.conf"
10
- template "nginx_app.conf.erb", "/tmp/#{fetch(:application)}_conf"
11
- sudo "mv /tmp/#{fetch(:application)}_conf /etc/nginx/sites-available/#{fetch(:application)}.conf"
9
+ if file_new_or_overwrite?("/etc/nginx/nginx.conf")
10
+ template "nginx_base.conf.erb", "/tmp/nginx_conf"
11
+ sudo "mv /tmp/nginx_conf /etc/nginx/nginx.conf"
12
+ end
13
+
14
+ if file_new_or_overwrite?("/etc/nginx/sites-available/#{fetch(:application)}.conf")
15
+ template "nginx_app.conf.erb", "/tmp/#{fetch(:application)}_conf"
16
+ sudo "mv /tmp/#{fetch(:application)}_conf /etc/nginx/sites-available/#{fetch(:application)}.conf"
17
+ end
12
18
 
13
- if test("[ -f /etc/nginx/sites-enabled/default ]")
19
+ if file_exists? "/etc/nginx/sites-enabled/default"
14
20
  sudo "rm /etc/nginx/sites-enabled/default"
15
21
  end
16
22
 
17
23
  execute "mkdir -p #{shared_path}/log"
18
-
19
- invoke "nginx:enable_site"
20
- invoke "nginx:reload"
21
24
  end
25
+ invoke "nginx:enable_site"
26
+ invoke "nginx:reload"
22
27
  end
23
28
 
24
29
  desc "Enable the app page for nginx"
25
30
  task :enable_site do
26
31
  on roles(:web) do
27
- unless test("[ -f /etc/nginx/sites-enabled/#{fetch(:application)}.conf ]")
32
+ unless file_exists? "/etc/nginx/sites-enabled/#{fetch(:application)}.conf"
28
33
  sudo "ln -sf /etc/nginx/sites-available/#{fetch(:application)}.conf /etc/nginx/sites-enabled/#{fetch(:application)}.conf"
29
34
  end
30
35
  end
@@ -5,12 +5,15 @@ set_default(:puma_worker_grace_time, "60")
5
5
 
6
6
  namespace :puma do
7
7
  include Bluepill
8
+ include Shell
8
9
 
9
10
  desc "Installs the puma config"
10
11
  task :setup do
11
12
  on roles(:app) do
12
13
  execute "mkdir -p #{shared_path}/config"
13
- template "puma.rb.erb", "#{shared_path}/config/puma.rb"
14
+ if file_new_or_overwrite?("#{shared_path}/config/puma.rb")
15
+ template "puma.rb.erb", "#{shared_path}/config/puma.rb"
16
+ end
14
17
  end
15
18
  end
16
19
 
@@ -4,12 +4,15 @@ set_default(:unicorn_worker_grace_time, "60")
4
4
 
5
5
  namespace :unicorn do
6
6
  include Bluepill
7
+ include Shell
7
8
 
8
9
  desc "Installs the unicorn config"
9
10
  task :setup do
10
11
  on roles(:app) do
11
12
  execute "mkdir -p #{shared_path}/config"
12
- template "unicorn.rb.erb", "#{shared_path}/config/unicorn.rb"
13
+ if file_new_or_overwrite?("#{shared_path}/config/unicorn.rb")
14
+ template "unicorn.rb.erb", "#{shared_path}/config/unicorn.rb"
15
+ end
13
16
  end
14
17
  end
15
18
 
@@ -1,19 +1,25 @@
1
1
  namespace :upstart do
2
2
  include Upstart
3
+ include Shell
3
4
 
5
+ # TODO: remove one of these - they do the same
4
6
  desc "Install the upstart config"
5
7
  task :setup do
6
8
  on roles(:app) do
7
- template "upstart.conf.erb", "/tmp/bluepill.conf"
8
- sudo "mv /tmp/bluepill.conf /etc/init/"
9
+ if file_new_or_overwrite?("/etc/init/bluepill.conf")
10
+ template "upstart.conf.erb", "/tmp/bluepill.conf"
11
+ sudo "mv /tmp/bluepill.conf /etc/init/"
12
+ end
9
13
  sudo "chown root:root /etc/init/bluepill.conf"
10
14
  end
11
15
  end
12
16
 
13
17
  task :start do
14
18
  on roles(:app) do
15
- template "upstart.conf.erb", "/tmp/bluepill.conf"
16
- sudo "mv /tmp/bluepill.conf /etc/init/"
19
+ if file_new_or_overwrite?("/etc/init/bluepill.conf")
20
+ template "upstart.conf.erb", "/tmp/bluepill.conf"
21
+ sudo "mv /tmp/bluepill.conf /etc/init/"
22
+ end
17
23
  sudo "chown root:root /etc/init/bluepill.conf"
18
24
  end
19
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deploy_mate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.6
4
+ version: '0.18'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Adler
@@ -96,6 +96,7 @@ files:
96
96
  - lib/capistrano/helpers.rb
97
97
  - lib/capistrano/modules/aptitude.rb
98
98
  - lib/capistrano/modules/bluepill.rb
99
+ - lib/capistrano/modules/shell.rb
99
100
  - lib/capistrano/modules/upstart.rb
100
101
  - lib/capistrano/modules/user_management.rb
101
102
  - lib/capistrano/scripts/create_ubuntu_user.sh