capistrano_multiconfig_parallel 0.30.6 → 0.31.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/capistrano_multiconfig_parallel/application.rb +4 -7
- data/lib/capistrano_multiconfig_parallel/celluloid/celluloid_manager.rb +6 -7
- data/lib/capistrano_multiconfig_parallel/celluloid/celluloid_worker.rb +3 -2
- data/lib/capistrano_multiconfig_parallel/celluloid/terminal_table.rb +1 -1
- data/lib/capistrano_multiconfig_parallel/classes/job.rb +16 -7
- data/lib/capistrano_multiconfig_parallel/classes/job_command.rb +9 -6
- data/lib/capistrano_multiconfig_parallel/helpers/application_helper.rb +1 -1
- data/lib/capistrano_multiconfig_parallel/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d75fa1db22835b3a4dffbca4b1a77ea7d57b64a5
|
4
|
+
data.tar.gz: 711d8a286c0254a78d6cb99b2adc937df6aa1ac5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fda9e4e843d9d791dd00085ba53e1dbf5389cf3bbd635e5ca3a7ff4929b5f706f68cc67cbc38927578bab519b134bb94c512814938979216d56c62589287f9e0
|
7
|
+
data.tar.gz: dc2908a3203bf541c69eaa786f752a261b485067dc11aad375a8fe688ca6aa40404e1d43134831af12f0fbc2890dc7f642eb58202bb14a914c86779f6d7b1657
|
@@ -8,15 +8,13 @@ module CapistranoMulticonfigParallel
|
|
8
8
|
include Capistrano::DSL
|
9
9
|
include Capistrano::Multiconfig::DSL
|
10
10
|
|
11
|
-
attr_reader :stage_apps, :top_level_tasks, :jobs, :branch_backup, :condition, :manager, :dependency_tracker, :application, :stage, :name, :args, :argv, :default_stage
|
12
|
-
attr_writer :job_count
|
11
|
+
attr_reader :stage_apps, :top_level_tasks, :jobs, :branch_backup, :condition, :manager, :dependency_tracker, :application, :stage, :name, :args, :argv, :default_stage
|
13
12
|
|
14
13
|
def initialize
|
15
14
|
Celluloid.boot
|
16
15
|
CapistranoMulticonfigParallel.enable_logging
|
17
16
|
@stage_apps = multi_apps? ? stages.map { |stage| stage.split(':').reverse[1] }.uniq : []
|
18
17
|
collect_command_line_tasks(CapistranoMulticonfigParallel.original_args)
|
19
|
-
@job_count = 0
|
20
18
|
@jobs = []
|
21
19
|
end
|
22
20
|
|
@@ -197,7 +195,7 @@ module CapistranoMulticonfigParallel
|
|
197
195
|
def run_async_jobs
|
198
196
|
return unless @jobs.present?
|
199
197
|
@jobs.pmap do |job|
|
200
|
-
@manager.async.
|
198
|
+
@manager.async.delegate_job(job)
|
201
199
|
end
|
202
200
|
unless can_tag_staging?
|
203
201
|
until @manager.registration_complete
|
@@ -230,11 +228,10 @@ module CapistranoMulticonfigParallel
|
|
230
228
|
|
231
229
|
env_options = branch_name.present? ? { 'BRANCH' => branch_name }.merge(options['env_options']) : options['env_options']
|
232
230
|
job_env_options = custom_command? && env_options['ACTION'].present? ? env_options.except('ACTION') : env_options
|
233
|
-
@job_count += 1
|
234
231
|
job = CapistranoMulticonfigParallel::Job.new(Actor.current, options.merge(
|
235
232
|
action: custom_command? && env_options['ACTION'].present? ? env_options['ACTION'] : options['action'],
|
236
|
-
env_options: job_env_options
|
237
|
-
|
233
|
+
env_options: job_env_options
|
234
|
+
|
238
235
|
))
|
239
236
|
@jobs << job
|
240
237
|
end
|
@@ -40,7 +40,7 @@ module CapistranoMulticonfigParallel
|
|
40
40
|
|
41
41
|
# call to send an actor
|
42
42
|
# a job
|
43
|
-
def
|
43
|
+
def delegate_job(job)
|
44
44
|
@jobs[job.id] = job
|
45
45
|
# debug(@jobs)
|
46
46
|
# start work and send it to the background
|
@@ -54,7 +54,7 @@ module CapistranoMulticonfigParallel
|
|
54
54
|
@worker_to_job[worker.mailbox.address] = job
|
55
55
|
log_to_file("worker #{worker.job_id} registed into manager")
|
56
56
|
Actor.current.link worker
|
57
|
-
worker.async.start_task if !syncronized_confirmation? || job.
|
57
|
+
worker.async.start_task if !syncronized_confirmation? || job.rolling_back?
|
58
58
|
return unless syncronized_confirmation?
|
59
59
|
@registration_complete = true if @job_manager.jobs.size == @jobs.size
|
60
60
|
end
|
@@ -193,10 +193,9 @@ module CapistranoMulticonfigParallel
|
|
193
193
|
return unless job.is_a?(CapistranoMulticonfigParallel::Job)
|
194
194
|
options.stringify_keys! if options.present?
|
195
195
|
env_opts = options['skip_env_options'].present? ? {} : @job_manager.get_app_additional_env_options(job.app, job.stage)
|
196
|
-
|
197
|
-
new_job_options = job.options.merge('env_options' => job.env_options.merge(env_opts), 'count' => @job_manager.job_count)
|
196
|
+
new_job_options = job.options.except!('id', 'status', 'exit_status').merge('env_options' => job.env_options.merge(env_opts))
|
198
197
|
new_job = CapistranoMulticonfigParallel::Job.new(@job_manager, new_job_options.merge(options))
|
199
|
-
async.
|
198
|
+
async.delegate_job(new_job) unless job.rolling_back?
|
200
199
|
end
|
201
200
|
|
202
201
|
# lookup status of job by asking actor running it
|
@@ -216,11 +215,11 @@ module CapistranoMulticonfigParallel
|
|
216
215
|
|
217
216
|
def worker_died(worker, reason)
|
218
217
|
job = @worker_to_job[worker.mailbox.address]
|
219
|
-
return true if job.blank? || job.
|
218
|
+
return true if job.blank? || job.rolling_back? || job.action != 'deploy'
|
220
219
|
mailbox = worker.mailbox
|
221
220
|
@worker_to_job.delete(mailbox.address)
|
222
221
|
log_to_file("RESTARTING: worker job #{job.inspect} with mailbox #{mailbox.inspect} and #{mailbox.address.inspect} died for reason: #{reason}")
|
223
|
-
dispatch_new_job(job, skip_env_options: true, action: 'deploy:rollback'
|
222
|
+
dispatch_new_job(job, skip_env_options: true, action: 'deploy:rollback')
|
224
223
|
end
|
225
224
|
end
|
226
225
|
end
|
@@ -89,8 +89,9 @@ module CapistranoMulticonfigParallel
|
|
89
89
|
def execute_deploy
|
90
90
|
log_to_file("invocation chain #{@job_id} is : #{@rake_tasks.inspect}")
|
91
91
|
check_child_proces
|
92
|
-
|
93
|
-
|
92
|
+
command = job.command.to_s
|
93
|
+
log_to_file("worker #{@job_id} executes: #{command}")
|
94
|
+
@child_process.async.work(@job, command, actor: Actor.current, silent: true)
|
94
95
|
end
|
95
96
|
|
96
97
|
def check_child_proces
|
@@ -35,7 +35,6 @@ module CapistranoMulticonfigParallel
|
|
35
35
|
|
36
36
|
def terminal_row
|
37
37
|
[
|
38
|
-
{ value: count.to_s },
|
39
38
|
{ value: id.to_s },
|
40
39
|
{ value: wrap_string(job_stage) },
|
41
40
|
{ value: wrap_string(capistrano_action) },
|
@@ -51,10 +50,13 @@ module CapistranoMulticonfigParallel
|
|
51
50
|
(longest_hash[:value].size.to_f / 80.0).ceil
|
52
51
|
end
|
53
52
|
|
53
|
+
def worker
|
54
|
+
return unless @manager.alive?
|
55
|
+
@manager.get_worker_for_job(id)
|
56
|
+
end
|
57
|
+
|
54
58
|
def worker_state
|
55
59
|
default = status.to_s.upcase.red
|
56
|
-
return default unless @manager.alive?
|
57
|
-
worker = @manager.get_worker_for_job(id)
|
58
60
|
worker.alive? ? worker.worker_state : default
|
59
61
|
end
|
60
62
|
|
@@ -69,8 +71,7 @@ module CapistranoMulticonfigParallel
|
|
69
71
|
{ name: 'task_arguments', default: [] },
|
70
72
|
{ name: 'env_options', default: {} },
|
71
73
|
{ name: 'status', default: :unstarted },
|
72
|
-
{ name: 'exit_status', default: nil }
|
73
|
-
{ name: 'count', default: nil }
|
74
|
+
{ name: 'exit_status', default: nil }
|
74
75
|
].each do |hash|
|
75
76
|
define_method hash[:name] do
|
76
77
|
value = @options.fetch(hash[:name], hash[:default])
|
@@ -93,7 +94,7 @@ module CapistranoMulticonfigParallel
|
|
93
94
|
end
|
94
95
|
|
95
96
|
def crashed?
|
96
|
-
|
97
|
+
worker_died? || failed? || dead? || exit_status.present?
|
97
98
|
end
|
98
99
|
|
99
100
|
def dead?
|
@@ -101,7 +102,15 @@ module CapistranoMulticonfigParallel
|
|
101
102
|
end
|
102
103
|
|
103
104
|
def worker_died?
|
104
|
-
|
105
|
+
!worker.alive?
|
106
|
+
end
|
107
|
+
|
108
|
+
def to_json
|
109
|
+
hash = {}
|
110
|
+
%w(id app stage action task_arguments env_options status exit_status).each do |key|
|
111
|
+
hash[key] = send(key)
|
112
|
+
end
|
113
|
+
hash
|
105
114
|
end
|
106
115
|
end
|
107
116
|
end
|
@@ -21,9 +21,9 @@ module CapistranoMulticonfigParallel
|
|
21
21
|
app.present? ? "#{app}:#{stage}" : "#{stage}"
|
22
22
|
end
|
23
23
|
|
24
|
-
def capistrano_action
|
24
|
+
def capistrano_action
|
25
25
|
argv = task_arguments.present? ? "[#{task_arguments}]" : ''
|
26
|
-
"#{
|
26
|
+
"#{action}#{argv}"
|
27
27
|
end
|
28
28
|
|
29
29
|
def env_option_filtered?(key, filtered_keys_array = [])
|
@@ -44,10 +44,13 @@ module CapistranoMulticonfigParallel
|
|
44
44
|
setup_env_options(options).concat(new_arguments)
|
45
45
|
end
|
46
46
|
|
47
|
-
def
|
48
|
-
|
49
|
-
|
50
|
-
|
47
|
+
def to_s
|
48
|
+
environment_options = setup_command_line.join(' ')
|
49
|
+
"cd #{detect_root} && RAILS_ENV=#{@stage} bundle exec multi_cap #{job_stage} #{capistrano_action} #{environment_options}"
|
50
|
+
end
|
51
|
+
|
52
|
+
def to_json
|
53
|
+
{ command: to_s }
|
51
54
|
end
|
52
55
|
|
53
56
|
def execute_standard_deploy(action = nil)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano_multiconfig_parallel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.31.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bogdanRada
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: celluloid-pmap
|