deployinator 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/deployinator/deploy.rb +38 -20
- metadata +2 -2
data/lib/deployinator/deploy.rb
CHANGED
@@ -221,7 +221,7 @@ namespace :deploy do
|
|
221
221
|
end
|
222
222
|
before 'bundler:install', 'deploy:install_bundler'
|
223
223
|
|
224
|
-
desc 'Restart application'
|
224
|
+
desc 'Restart application using bluepill restart inside the docker container.'
|
225
225
|
task :restart => [:set_www_data_user_id, :install_config_files] do
|
226
226
|
on roles(:app), in: :sequence, wait: 5 do
|
227
227
|
if test "docker", "inspect", fetch(:ruby_container_name), "&>", "/dev/null"
|
@@ -229,8 +229,39 @@ namespace :deploy do
|
|
229
229
|
"--format='{{.State.Restarting}}'",
|
230
230
|
fetch(:ruby_container_name)).strip == "true"
|
231
231
|
execute("docker", "stop", fetch(:ruby_container_name))
|
232
|
-
execute("docker", "wait", fetch(:ruby_container_name))
|
233
232
|
end
|
233
|
+
if (capture "docker", "inspect",
|
234
|
+
"--format='{{.State.Running}}'",
|
235
|
+
fetch(:ruby_container_name)).strip == "true"
|
236
|
+
execute(
|
237
|
+
"docker", "exec", "--tty",
|
238
|
+
fetch(:ruby_container_name),
|
239
|
+
"#{fetch(:deploy_to)}/shared/bundle/bin/bluepill",
|
240
|
+
fetch(:application), "restart"
|
241
|
+
)
|
242
|
+
end
|
243
|
+
else
|
244
|
+
as :root do
|
245
|
+
paths = [
|
246
|
+
fetch(:external_socket_path),
|
247
|
+
"#{fetch(:deploy_to)}/current/public",
|
248
|
+
"#{fetch(:deploy_to)}/shared/tmp",
|
249
|
+
"#{fetch(:deploy_to)}/shared/log/production.log"
|
250
|
+
].join(' ')
|
251
|
+
execute "chown", "-R", "#{fetch(:www_data_user_id)}:#{fetch(:www_data_user_id)}", paths
|
252
|
+
execute "chown", "-R", "#{fetch(:deployer_user_id)}:#{fetch(:deployer_user_id)}", "#{fetch(:deploy_to)}/shared/bundle"
|
253
|
+
execute("rm", "-f", "#{fetch(:external_socket_path)}/unicorn.pid")
|
254
|
+
end
|
255
|
+
execute("docker", "run", fetch(:docker_run_bluepill_command))
|
256
|
+
end
|
257
|
+
end
|
258
|
+
end
|
259
|
+
after :publishing, :restart
|
260
|
+
|
261
|
+
desc 'Restart application by recreating the docker container.'
|
262
|
+
namespace :restart do
|
263
|
+
task :force do
|
264
|
+
on roles(:app), in: :sequence, wait: 5 do
|
234
265
|
if (capture "docker", "inspect",
|
235
266
|
"--format='{{.State.Running}}'",
|
236
267
|
fetch(:ruby_container_name)).strip == "true"
|
@@ -241,10 +272,9 @@ namespace :deploy do
|
|
241
272
|
fetch(:application), "stop"
|
242
273
|
)
|
243
274
|
sleep 5
|
244
|
-
execute("docker", "stop", fetch(:ruby_container_name))
|
245
|
-
execute("docker", "wait", fetch(:ruby_container_name))
|
246
275
|
end
|
247
|
-
|
276
|
+
execute("docker", "stop", fetch(:ruby_container_name))
|
277
|
+
execute("docker", "wait", fetch(:ruby_container_name))
|
248
278
|
begin
|
249
279
|
execute("docker", "rm", fetch(:ruby_container_name))
|
250
280
|
rescue
|
@@ -252,29 +282,17 @@ namespace :deploy do
|
|
252
282
|
begin
|
253
283
|
execute("docker", "rm", fetch(:ruby_container_name))
|
254
284
|
rescue
|
255
|
-
fatal "We were not able to remove the container for some reason. Try running 'cap <stage> deploy:restart' again."
|
285
|
+
fatal "We were not able to remove the container for some reason. Try running 'cap <stage> deploy:restart:force' again."
|
256
286
|
end
|
257
287
|
end
|
288
|
+
Rake::Task['deploy:restart'].invoke
|
258
289
|
end
|
259
|
-
as :root do
|
260
|
-
[
|
261
|
-
fetch(:external_socket_path),
|
262
|
-
"#{fetch(:deploy_to)}/current/public",
|
263
|
-
"#{fetch(:deploy_to)}/shared/tmp",
|
264
|
-
"#{fetch(:deploy_to)}/shared/log/production.log"
|
265
|
-
].each do |directory|
|
266
|
-
execute "chown", "-R", "#{fetch(:www_data_user_id)}:#{fetch(:www_data_user_id)}", directory
|
267
|
-
end
|
268
|
-
execute "chown", "-R", "#{fetch(:deployer_user_id)}:#{fetch(:deployer_user_id)}", "#{fetch(:deploy_to)}/shared/bundle"
|
269
|
-
execute("rm", "-f", "#{fetch(:external_socket_path)}/unicorn.pid")
|
270
|
-
end
|
271
|
-
execute("docker", "run", fetch(:docker_run_bluepill_command))
|
272
290
|
end
|
273
291
|
end
|
274
|
-
after :publishing, :restart
|
275
292
|
|
276
293
|
after :publishing, :check_nginx_running do
|
277
294
|
on primary fetch(:migration_role) do
|
295
|
+
# TODO fix false negative when nginx_container_name is unset
|
278
296
|
if test "docker", "inspect", fetch(:nginx_container_name), "&>", "/dev/null"
|
279
297
|
if (capture "docker", "inspect",
|
280
298
|
"--format='{{.State.Running}}'",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deployinator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-11-
|
12
|
+
date: 2014-11-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|