capistrano_multiconfig_parallel 0.30.6 → 0.31.0
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 +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
|