capistrano_multiconfig_parallel 0.19.0 → 0.19.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -6
- data/lib/capistrano_multiconfig_parallel/application.rb +3 -3
- data/lib/capistrano_multiconfig_parallel/celluloid/celluloid_manager.rb +9 -9
- data/lib/capistrano_multiconfig_parallel/celluloid/celluloid_worker.rb +3 -7
- data/lib/capistrano_multiconfig_parallel/celluloid/child_process.rb +1 -1
- data/lib/capistrano_multiconfig_parallel/celluloid/rake_worker.rb +1 -1
- data/lib/capistrano_multiconfig_parallel/celluloid/terminal_table.rb +3 -4
- data/lib/capistrano_multiconfig_parallel/classes/dependency_tracker.rb +1 -2
- data/lib/capistrano_multiconfig_parallel/classes/job.rb +2 -4
- data/lib/capistrano_multiconfig_parallel/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9288749bda2f195986a76d1a374bb524480f2b4
|
4
|
+
data.tar.gz: 999412e591c8bcd8aef5c6953a7792571640bdaf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60a457c3d9a565b56221c6cd716b06d117d4b519b9a2341d6e5b926b1b5a300ba07683fafb2c6ba6cdd7ea8a93c06ebad2db0f8ee3db7e9d8d70769507fb9361
|
7
|
+
data.tar.gz: 7d1cf484b0489687ddd5ce4ce80199701229bd5947cabd5033fa09a6ed654ccd5540998ce75f955885fdcd0a658367818d3d56da1d7dee872f6b0a97ca39f170
|
data/Gemfile.lock
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
capistrano_multiconfig_parallel (0.
|
4
|
+
capistrano_multiconfig_parallel (0.19.0)
|
5
5
|
activesupport (~> 4.0, >= 4.0)
|
6
6
|
capistrano (~> 3.0, >= 3.0)
|
7
7
|
celluloid-pmap (~> 0.2, >= 0.2.2)
|
8
|
-
celluloid_pubsub (~> 0.0, >= 0.0.
|
8
|
+
celluloid_pubsub (~> 0.0, >= 0.0.22)
|
9
9
|
colorize (~> 0.7, >= 0.7)
|
10
10
|
composable_state_machine (~> 1.0, >= 1.0.2)
|
11
11
|
configliere (~> 0.4, >= 0.4)
|
@@ -42,7 +42,7 @@ GEM
|
|
42
42
|
adamantium (0.2.0)
|
43
43
|
ice_nine (~> 0.11.0)
|
44
44
|
memoizable (~> 0.4.0)
|
45
|
-
addressable (2.
|
45
|
+
addressable (2.4.0)
|
46
46
|
ast (2.1.0)
|
47
47
|
astrolabe (1.3.1)
|
48
48
|
parser (~> 2.2)
|
@@ -66,11 +66,12 @@ GEM
|
|
66
66
|
celluloid-websocket-client (0.0.1)
|
67
67
|
celluloid-io
|
68
68
|
websocket-protocol
|
69
|
-
celluloid_pubsub (0.0.
|
69
|
+
celluloid_pubsub (0.0.22)
|
70
70
|
activesupport (~> 4.1, >= 4.1.0)
|
71
71
|
celluloid (~> 0.16.0, ~> 0.16)
|
72
72
|
celluloid-io (~> 0.16, >= 0.16.2)
|
73
73
|
celluloid-websocket-client (= 0.0.1)
|
74
|
+
http (~> 0.9.8, >= 0.9.8)
|
74
75
|
reel (~> 0.5, >= 0.5.0)
|
75
76
|
codeclimate-engine-rb (0.1.0)
|
76
77
|
virtus (~> 1.0)
|
@@ -263,8 +264,7 @@ GEM
|
|
263
264
|
simplecov
|
264
265
|
slop (3.6.0)
|
265
266
|
sparkr (0.4.1)
|
266
|
-
sshkit (1.
|
267
|
-
colorize (>= 0.7.0)
|
267
|
+
sshkit (1.8.1)
|
268
268
|
net-scp (>= 1.1.2)
|
269
269
|
net-ssh (>= 2.8.0)
|
270
270
|
term-ansicolor (1.3.2)
|
@@ -111,7 +111,7 @@ module CapistranoMulticonfigParallel
|
|
111
111
|
return unless @jobs.present?
|
112
112
|
FileUtils.rm Dir["#{log_directory}/worker_*.log"]
|
113
113
|
if app_configuration.multi_secvential.to_s.downcase == 'true'
|
114
|
-
@jobs.each
|
114
|
+
@jobs.each(&:execute_standard_deploy)
|
115
115
|
else
|
116
116
|
run_async_jobs
|
117
117
|
end
|
@@ -220,8 +220,8 @@ module CapistranoMulticonfigParallel
|
|
220
220
|
job_env_options = custom_command? && env_options['ACTION'].present? ? env_options.except('ACTION') : env_options
|
221
221
|
|
222
222
|
job = CapistranoMulticonfigParallel::Job.new(options.merge(
|
223
|
-
|
224
|
-
|
223
|
+
action: custom_command? && env_options['ACTION'].present? ? env_options['ACTION'] : options['action'],
|
224
|
+
env_options: job_env_options
|
225
225
|
))
|
226
226
|
@jobs << job
|
227
227
|
end
|
@@ -89,7 +89,7 @@ module CapistranoMulticonfigParallel
|
|
89
89
|
end
|
90
90
|
|
91
91
|
def apply_confirmation_for_job(job)
|
92
|
-
|
92
|
+
app_configuration.apply_stage_confirmation.include?(job.stage) && apply_confirmations?
|
93
93
|
end
|
94
94
|
|
95
95
|
def setup_worker_conditions(job)
|
@@ -153,17 +153,17 @@ module CapistranoMulticonfigParallel
|
|
153
153
|
apps_symlink_confirmation
|
154
154
|
end
|
155
155
|
|
156
|
-
def confirm_task_approval(result, task,
|
156
|
+
def confirm_task_approval(result, task, processed_job = nil)
|
157
157
|
return unless result.present?
|
158
|
-
result = print_confirm_task_approvall(result, task,
|
158
|
+
result = print_confirm_task_approvall(result, task, processed_job)
|
159
159
|
return if result.blank? || result.downcase != 'y'
|
160
160
|
@jobs.pmap do |job_id, job|
|
161
161
|
worker = get_worker_for_job(job_id)
|
162
162
|
worker.publish_rake_event('approved' => 'yes',
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
163
|
+
'action' => 'invoke',
|
164
|
+
'job_id' => job.id,
|
165
|
+
'task' => task
|
166
|
+
)
|
167
167
|
end
|
168
168
|
end
|
169
169
|
|
@@ -182,7 +182,7 @@ module CapistranoMulticonfigParallel
|
|
182
182
|
|
183
183
|
def can_tag_staging?
|
184
184
|
@job_manager.can_tag_staging? &&
|
185
|
-
|
185
|
+
@jobs.find { |_job_id, job| job['env'] == 'production' }.blank?
|
186
186
|
end
|
187
187
|
|
188
188
|
def dispatch_new_job(job, options = {})
|
@@ -224,7 +224,7 @@ module CapistranoMulticonfigParallel
|
|
224
224
|
return unless job.action == 'deploy'
|
225
225
|
log_to_file "restarting #{job} on new worker"
|
226
226
|
job.status = 'worker_died'
|
227
|
-
dispatch_new_job(job, :
|
227
|
+
dispatch_new_job(job, action: 'deploy:rollback')
|
228
228
|
end
|
229
229
|
end
|
230
230
|
end
|
@@ -51,8 +51,8 @@ module CapistranoMulticonfigParallel
|
|
51
51
|
@client.publish(rake_actor_id(data), data)
|
52
52
|
end
|
53
53
|
|
54
|
-
def rake_actor_id(
|
55
|
-
|
54
|
+
def rake_actor_id(_data)
|
55
|
+
"rake_worker_#{@job_id}"
|
56
56
|
end
|
57
57
|
|
58
58
|
def on_message(message)
|
@@ -77,8 +77,6 @@ module CapistranoMulticonfigParallel
|
|
77
77
|
@invocation_chain ||= []
|
78
78
|
end
|
79
79
|
|
80
|
-
|
81
|
-
|
82
80
|
def execute_deploy
|
83
81
|
log_to_file("invocation chain #{@job_id} is : #{@rake_tasks.inspect}")
|
84
82
|
check_child_proces
|
@@ -103,7 +101,7 @@ module CapistranoMulticonfigParallel
|
|
103
101
|
|
104
102
|
def check_gitflow
|
105
103
|
return if @job.stage != 'staging' || !@manager.can_tag_staging? || !executed_task?(CapistranoMulticonfigParallel::GITFLOW_TAG_STAGING_TASK)
|
106
|
-
@manager.dispatch_new_job(@job,'env' => 'production')
|
104
|
+
@manager.dispatch_new_job(@job, 'env' => 'production')
|
107
105
|
end
|
108
106
|
|
109
107
|
def handle_subscription(message)
|
@@ -157,7 +155,6 @@ module CapistranoMulticonfigParallel
|
|
157
155
|
abort(CapistranoMulticonfigParallel::CelluloidWorker::TaskFailed.new("task #{@action} failed ")) if name == 'deploy:failed' # force worker to rollback
|
158
156
|
end
|
159
157
|
|
160
|
-
|
161
158
|
def send_msg(channel, message = nil)
|
162
159
|
publish channel, message.present? && message.is_a?(Hash) ? { job_id: @job_id }.merge(message) : { job_id: @job_id, time: Time.now }
|
163
160
|
end
|
@@ -168,7 +165,6 @@ module CapistranoMulticonfigParallel
|
|
168
165
|
@manager.workers_terminated.signal('completed') if @manager.alive? && @manager.all_workers_finished?
|
169
166
|
end
|
170
167
|
|
171
|
-
|
172
168
|
def notify_finished(exit_status)
|
173
169
|
if exit_status != 0
|
174
170
|
log_to_file("worker #{job_id} tries to terminate")
|
@@ -33,7 +33,7 @@ module CapistranoMulticonfigParallel
|
|
33
33
|
last_job_id = @manager.jobs.keys.last.to_i
|
34
34
|
@manager.jobs.each do |job_id, job|
|
35
35
|
count += 1
|
36
|
-
add_job_to_table(table, job_id, job,
|
36
|
+
add_job_to_table(table, job_id, job, count, last_job_id)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
show_terminal_screen(table)
|
@@ -73,8 +73,7 @@ module CapistranoMulticonfigParallel
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
-
|
77
|
-
def get_worker_details(job_id, job, worker)
|
76
|
+
def get_worker_details(job_id, job, worker)
|
78
77
|
{
|
79
78
|
'job_id' => job_id,
|
80
79
|
'app_name' => job.app,
|
@@ -130,7 +129,7 @@ module CapistranoMulticonfigParallel
|
|
130
129
|
percent = percent_of(task_index, total_tasks)
|
131
130
|
result = "Progress [#{format('%.2f', percent)}%] (executed #{task_index} of #{total_tasks})"
|
132
131
|
if worker.alive?
|
133
|
-
|
132
|
+
@manager.job_crashed?(processed_job) ? result.red : result.green
|
134
133
|
else
|
135
134
|
worker_state(worker)
|
136
135
|
end
|
@@ -27,7 +27,6 @@ module CapistranoMulticonfigParallel
|
|
27
27
|
applications = []
|
28
28
|
end
|
29
29
|
applications
|
30
|
-
|
31
30
|
end
|
32
31
|
|
33
32
|
private
|
@@ -46,7 +45,7 @@ module CapistranoMulticonfigParallel
|
|
46
45
|
def all_websites_return_applications_selected
|
47
46
|
interactive_menu = CapistranoMulticonfigParallel::InteractiveMenu.new
|
48
47
|
applications_selected = interactive_menu.show_all_websites_interactive_menu(available_apps)
|
49
|
-
applications_selected.present? ?
|
48
|
+
applications_selected.present? ? applications_selected.split(',') : []
|
50
49
|
end
|
51
50
|
|
52
51
|
def add_dependency_app(app_to_deploy, apps_dependencies, applications_to_deploy)
|
@@ -51,11 +51,10 @@ module CapistranoMulticonfigParallel
|
|
51
51
|
|
52
52
|
def build_capistrano_task(action = nil, env = [])
|
53
53
|
action = action.present? ? action : @action
|
54
|
-
environment_options = setup_command_line_standard(env).join(
|
54
|
+
environment_options = setup_command_line_standard(env).join(' ')
|
55
55
|
"cd #{detect_root} && RAILS_ENV=#{@stage} bundle exec multi_cap #{job_stage} #{capistrano_action(action)} #{environment_options}"
|
56
56
|
end
|
57
57
|
|
58
|
-
|
59
58
|
def execute_standard_deploy(action = nil)
|
60
59
|
command = build_capistrano_task(action)
|
61
60
|
puts("\n\n\n Executing '#{command}' \n\n\n .")
|
@@ -66,8 +65,7 @@ module CapistranoMulticonfigParallel
|
|
66
65
|
end
|
67
66
|
|
68
67
|
def to_s
|
69
|
-
|
68
|
+
to_json
|
70
69
|
end
|
71
|
-
|
72
70
|
end
|
73
71
|
end
|