railman-deployment 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aca955d4b57c19264ef0aeba65c4e5695e2d410e
4
- data.tar.gz: d2a9efb7651d644f057c148020c408cfec3e13a5
3
+ metadata.gz: ada16d76a193ef6da390c448c0d6a32b852a4944
4
+ data.tar.gz: b312b09dd08488928d1b229eabbeaf0bcabc03a1
5
5
  SHA512:
6
- metadata.gz: fb270a7808c17e8b70b9a6c168ddac4f443de6d3ba25ce8195ea30143a59b5bddb23d1560dbb0243393a48fe573e6504de1e7cdcf611b670f5432c3fb886d1c3
7
- data.tar.gz: b869434c3689c6273364cce3ff30afc14e8ba9a51b54367ecf67aafc9ab1e3eea4f047fe4632b06341292fe77954e37152ea9c0ab48fceb74bdf63e0ec3c666f
6
+ metadata.gz: cbc4a6ab1d641c1c66c6913183919fd2935d8ce151e5c962bf81bf65c1c26800cc4f99c5b86e4aff043b0eae8cc4cf4d515e2546223fde24aac5c8263b413faf
7
+ data.tar.gz: 786ec7eaf03b05296f128766f2ef3a0e7b1134e834be9d3f54f08d89dd8bea7e882b86659ccc026b2f836f01fef0a91be9e1418a24a3233e304b552f1f122c71
data/README.md CHANGED
@@ -36,7 +36,7 @@ Add `require 'railman/deployment'` to Capfile and you'll get following capistran
36
36
  - `cap ENV deploy` => Deploy rails application
37
37
  - `cap ENV remove` => Remove the application completely from the server
38
38
  - `cap ENV reset_server` => Recreate server database from db/<application_name>.sql
39
- - `cap ENV sync_local` => Synchronize local database with the production database
39
+ - `cap ENV update` => Synchronize local database with the production database
40
40
 
41
41
 
42
42
  ## Development
@@ -0,0 +1 @@
1
+ load File.expand_path('../../railman/tasks/set_railman_env.rake', __FILE__)
@@ -1 +1,2 @@
1
+ require 'securerandom'
1
2
  load File.expand_path('../../tasks/deployment.rake', __FILE__)
@@ -1,2 +1,2 @@
1
1
  require_relative 'deployment/tasks'
2
- require_relative 'deployment/hooks'
2
+ require_relative 'deployment/set_railman_env'
@@ -1,24 +1,11 @@
1
- task :set_railman_env do
2
- set :deploy_to, "/home/deploy/apps/#{fetch(:application)}"
3
- set :rbenv_home, '/home/deploy/.rbenv'
4
- set :environment, {path: "#{fetch(:rbenv_home)}/shims:#{fetch(:rbenv_home)}/bin:$PATH", rails_env: 'production'}
5
-
6
- SSHKit.config.command_map[:rake] = "#{fetch(:deploy_to)}/bin/rake"
7
- %w(ln service start restart stop status).each do |cmd|
8
- SSHKit.config.command_map[cmd.to_sym] = "sudo #{cmd}"
9
- end
10
- SSHKit.config.command_map[:eye] = "#{fetch(:rbenv_home)}/shims/eye"
11
- SSHKit.config.command_map[:su_rm] = "sudo rm"
12
- end
13
-
14
- desc "Setup rails application for the first time on a server"
1
+ desc 'Setup rails application for the first time on a server'
15
2
  task :setup do
16
3
  on roles(:all) do
17
4
  with fetch(:environment) do
18
5
  if test "[ -d #{fetch(:deploy_to)} ]"
19
6
  within fetch(:deploy_to) do
20
- execute :git, :fetch, 'origin'
21
- execute :git, :reset, '--hard origin/master'
7
+ invoke :fetch_and_reset_git_repository
8
+ invoke :sync_local_dirs_to_server
22
9
  end
23
10
  else
24
11
  execute :git, :clone, fetch(:repo_url), fetch(:deploy_to)
@@ -28,30 +15,27 @@ task :setup do
28
15
  execute :ln, "-s -f #{server_conf_dir}/letsencrypt.conf /etc/nginx/letsencrypt/#{fetch(:application)}.conf"
29
16
  execute :ln, "-s -f #{server_conf_dir}/logrotate.conf /etc/logrotate.d/#{fetch(:application)}"
30
17
  within fetch(:deploy_to) do
31
- execute :bundle, :install, "--without development test"
18
+ execute :bundle, :install, '--without development test'
32
19
  execute :mkdir, "-p #{fetch(:deploy_to)}/tmp/pids"
33
20
  if test "[ -f #{fetch(:deploy_to)}/.env ]"
34
- execute :rake, 'db:create'
35
- if test "[ -f #{fetch(:deploy_to)}/db/#{fetch(:application)}.sql ]"
36
- execute :psql, "-d #{fetch(:application)}_production", "-f db/#{fetch(:application)}.sql"
37
- end
38
- execute :rake, 'db:migrate'
21
+ invoke :create_database_from_sql_file
39
22
  execute :rake, 'assets:precompile'
40
23
  execute :eye, :load, 'Eyefile'
41
24
  execute :eye, :start, fetch(:application)
42
- execute :service, "nginx restart"
25
+ execute :service, 'nginx restart'
43
26
  else
44
- warn "TODO: Create .env on the server by copying from .env.example.production and modify your database and smtp settings."
45
- warn "TODO: Create rails secret token with 'rake secret' and insert it into .env"
46
- warn "TODO: Create ssl certificates by running the following command as root: /etc/letsencrypt/generate_letsencrypt.sh"
47
- warn "TODO: Run 'cap ENV setup' again!"
27
+ execute :cp, '.env.example.production', '.env'
28
+ execute "sed -i -e 's/TODO: generate with: rake secret/#{SecureRandom.hex(64)}/g' #{fetch(:deploy_to)}/.env"
29
+ warn 'TODO: Edit .env and modify your database and smtp settings.'
30
+ warn 'TODO: Create ssl certificates by running the following command as root: /etc/letsencrypt/generate_letsencrypt.sh'
31
+ warn 'TODO: Run \'cap ENV setup\' again!'
48
32
  end
49
33
  end
50
34
  end
51
35
  end
52
36
  end
53
37
 
54
- desc "Remove the application completely from the server"
38
+ desc 'Remove the application completely from the server'
55
39
  task :remove do
56
40
  on roles(:all) do
57
41
  with fetch(:environment) do
@@ -64,31 +48,30 @@ task :remove do
64
48
  execute :su_rm, "-f /etc/nginx/conf.d/#{fetch(:application)}.conf"
65
49
  execute :su_rm, "-f /etc/nginx/letsencrypt/#{fetch(:application)}.conf"
66
50
  execute :su_rm, "-f /etc/logrotate.d/#{fetch(:application)}"
67
- execute :service, "nginx restart"
51
+ execute :service, 'nginx restart'
68
52
  end
69
53
  end
70
54
  end
71
55
 
72
- desc "Deploy rails application"
56
+ desc 'Deploy rails application'
73
57
  task :deploy do
74
58
  on roles(:all) do
75
59
  with fetch(:environment) do
76
60
  within fetch(:deploy_to) do
77
- execute :git, :fetch, 'origin'
78
- execute :git, :reset, '--hard origin/master'
61
+ invoke :fetch_and_reset_git_repository
79
62
  execute :bundle, :install
80
63
  execute :rake, 'db:migrate'
81
64
  execute :rake, 'assets:precompile'
82
65
  execute :eye, :load, 'Eyefile'
83
66
  execute :eye, :restart, fetch(:application)
84
- execute :service, "nginx restart"
67
+ execute :service, 'nginx restart'
85
68
  end
86
69
  end
87
70
  end
88
71
  end
89
72
 
90
- desc "Copy database from the server to the local machine"
91
- task :sync_local do
73
+ desc 'Copy database from the server to the local machine'
74
+ task :update do
92
75
  on roles(:all) do
93
76
  within fetch(:deploy_to) do
94
77
  execute :pg_dump, "-U deploy --clean #{fetch(:application)}_production > db/#{fetch(:application)}.sql"
@@ -97,27 +80,53 @@ task :sync_local do
97
80
  end
98
81
  run_locally do
99
82
  execute "psql -d #{fetch(:application)}_development -f db/#{fetch(:application)}.sql"
83
+ invoke :sync_local_dirs_from_server
100
84
  end
101
85
  end
102
86
 
103
- desc "Recreate server database from db/#{fetch(:application)}.sql"
87
+ desc "Recreate server database from db/#{fetch(:application)}.sql and sync local dirs if any"
104
88
  task :reset_server do
105
89
  on roles(:all) do
106
90
  with fetch(:environment) do
107
91
  within fetch(:deploy_to) do
108
92
  execute :eye, :load, 'Eyefile'
109
93
  execute :eye, :stop, fetch(:application)
110
- execute :git, :fetch, 'origin'
111
- execute :git, :reset, '--hard origin/master'
94
+ invoke :fetch_and_reset_git_repository
112
95
  execute :rake, 'db:drop'
113
- execute :rake, 'db:create'
114
- if test "[ -f #{fetch(:deploy_to)}/db/#{fetch(:application)}.sql ]"
115
- execute :psql, "-d #{fetch(:application)}_production", "-f db/#{fetch(:application)}.sql"
116
- end
117
- execute :rake, 'db:migrate'
96
+ invoke :create_database_from_sql_file
97
+ invoke :sync_local_dirs_to_server
118
98
  execute :eye, :start, fetch(:application)
119
- execute :service, "nginx restart"
99
+ execute :service, 'nginx restart'
120
100
  end
121
101
  end
122
102
  end
123
103
  end
104
+
105
+ task :sync_local_dirs_to_server do
106
+ fetch(:sync_dirs, []).each do |sync_dir|
107
+ run_locally do
108
+ execute "rsync -avz --delete -e ssh ./#{sync_dir}/ #{fetch(:user)}@#{fetch(:server)}:#{fetch(:deploy_to)}/#{sync_dir}/"
109
+ end
110
+ end
111
+ end
112
+
113
+ task :sync_local_dirs_from_server do
114
+ fetch(:sync_dirs, []).each do |sync_dir|
115
+ run_locally do
116
+ execute "rsync -avzm --delete --force -e ssh #{fetch(:user)}@#{fetch(:server)}:#{fetch(:deploy_to)}/#{sync_dir}/ ./#{sync_dir}/"
117
+ end
118
+ end
119
+ end
120
+
121
+ task :fetch_and_reset_git_repository do
122
+ execute :git, :fetch, 'origin'
123
+ execute :git, :reset, "--hard origin/#{fetch(:deploy_branch, 'master')}"
124
+ end
125
+
126
+ task :create_database_from_sql_file do
127
+ execute :rake, 'db:create'
128
+ if test "[ -f #{fetch(:deploy_to)}/db/#{fetch(:application)}.sql ]"
129
+ execute :psql, "-d #{fetch(:application)}_production", "-f db/#{fetch(:application)}.sql"
130
+ end
131
+ execute :rake, 'db:migrate'
132
+ end
@@ -0,0 +1,18 @@
1
+ task :set_railman_env do
2
+ set :deploy_to, "/home/deploy/apps/#{fetch(:application)}"
3
+ set :rbenv_home, '/home/deploy/.rbenv'
4
+ set :environment, {path: "#{fetch(:rbenv_home)}/shims:#{fetch(:rbenv_home)}/bin:$PATH", rails_env: 'production'}
5
+
6
+ SSHKit.config.command_map[:rake] = "#{fetch(:deploy_to)}/bin/rake"
7
+ %w(ln service start restart stop status).each do |cmd|
8
+ SSHKit.config.command_map[cmd.to_sym] = "sudo #{cmd}"
9
+ end
10
+ SSHKit.config.command_map[:eye] = "#{fetch(:rbenv_home)}/shims/eye"
11
+ SSHKit.config.command_map[:su_rm] = 'sudo rm'
12
+ end
13
+
14
+ before :setup, :set_railman_env
15
+ before :deploy, :set_railman_env
16
+ before :update, :set_railman_env
17
+ before :reset_server, :set_railman_env
18
+ before :remove, :set_railman_env
@@ -1,3 +1,3 @@
1
1
  module RailmanDeployment
2
- VERSION = '0.0.4'
2
+ VERSION = '0.1.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railman-deployment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Jancev
@@ -142,10 +142,10 @@ files:
142
142
  - lib/railman-deployment.rb
143
143
  - lib/railman-deployment/version.rb
144
144
  - lib/railman/deployment.rb
145
- - lib/railman/deployment/hooks.rb
145
+ - lib/railman/deployment/set_railman_env.rb
146
146
  - lib/railman/deployment/tasks.rb
147
147
  - lib/railman/tasks/deployment.rake
148
- - lib/railman/tasks/hooks.rake
148
+ - lib/railman/tasks/set_railman_env.rake
149
149
  - railman-deployment.gemspec
150
150
  homepage: https://github.com/igorj/railman-deployment
151
151
  licenses:
@@ -1 +0,0 @@
1
- load File.expand_path('../../tasks/hooks.rake', __FILE__)
@@ -1,5 +0,0 @@
1
- before :setup, :set_railman_env
2
- before :remove, :set_railman_env
3
- before :deploy, :set_railman_env
4
- before :sync_local, :set_railman_env
5
- before :reset_server, :set_railman_env