capistrano_multiconfig_parallel 2.0.0 → 2.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e671ffb5b25e82a157ff5daba3de38b84902228c
4
- data.tar.gz: ae97811db72349e8377dfbd54adf2a56c4385d59
3
+ metadata.gz: 2699a6ed6f5e38540aa4bbbfc86c17842febbc9c
4
+ data.tar.gz: cd6b4acefa3ac596d711b6dab2c450f47f93a8f9
5
5
  SHA512:
6
- metadata.gz: 22e2d3da34a9824010707e04e5a8a5d7dd0ee712bd73e904d8161da10568e4eaaa2eb2af2cc29734e56d07c27c8b731556d8b06061788b661f776ccf85e2696b
7
- data.tar.gz: 9714d4b0b21ac6fcee820f591ff650299b22fb1afc3733934f4b14c18d46f0c35eb4c78ee9df1066cf97d9853c9a26dba1fb5be290942d7e37f6b79d6aad72db
6
+ metadata.gz: 9210b7536d87f6d17ba7f0f99a120947728dfd239074d99eb0e46f9a61f8b7c8cd99ae4a2f16f207e138f40a190697d55d2ead9ae595f3050b18398e59524ce4
7
+ data.tar.gz: ba98002b12565a804aff218cc24cc958a4af662eb86dbe684a1c416bf8032c78bb3544eeaa867a6653310b3604d0b64caea539daf52e8b2a398bdec05fe30948
@@ -12,6 +12,7 @@ module CapistranoMulticonfigParallel
12
12
  CapistranoMulticonfigParallel.enable_logging
13
13
  @stage_apps = multi_apps? ? app_names_from_stages : []
14
14
  collect_command_line_tasks(CapistranoMulticonfigParallel.original_args)
15
+ @bundler_workers = []
15
16
  @jobs = []
16
17
  @checked_job_paths = []
17
18
  @patched_job_paths = [] # for deploy
@@ -164,6 +165,9 @@ module CapistranoMulticonfigParallel
164
165
  else
165
166
  collect_jobs(options)
166
167
  end
168
+ if configuration.check_app_bundler_dependencies.to_s.downcase == 'true'
169
+ sleep(0.1) until @jobs.size == @bundler_workers.size
170
+ end
167
171
  process_jobs
168
172
  end
169
173
 
@@ -225,21 +229,28 @@ module CapistranoMulticonfigParallel
225
229
  path: job_path(options)
226
230
 
227
231
  ))
232
+
233
+ bundler_callback = lambda { |job|
234
+ raise "Please make sure you have a Gemfile in the project root directory #{job.job_path}" unless job.job_gemfile.present?
235
+ if job.find_capfile.blank?
236
+ raise "Please make sure you have a Capfile in the project root directory #{job.job_path}"
237
+ end
238
+ unless job.capistrano_sentinel_needs_updating?
239
+ raise "Please consider upgrading the gem #{job.capistrano_sentinel_name} to version #{job.loaded_capistrano_sentinel_version} from #{job.job_capistrano_sentinel_version} in #{job.job_path} "
240
+ end
241
+ job.application.jobs << job unless job.application.job_can_tag_staging?(job)
242
+ }
228
243
  if configuration.check_app_bundler_dependencies.to_s.downcase == 'true' && job.job_gemfile.present?
229
244
  if !@checked_job_paths.include?(job.job_path)
230
245
  @checked_job_paths << job.job_path
231
246
  bundler_worker = CapistranoMulticonfigParallel::BundlerWorker.new
232
- bundler_worker.work(job) # make sure we have installed the dependencies first for this application
247
+ @bundler_workers << {job: job, worker: bundler_worker }
248
+ bundler_worker.work(job, &bundler_callback) # make sure we have installed the dependencies first for this application
233
249
  end
250
+ else
251
+ bundler_callback.call(job)
234
252
  end
235
- raise "Please make sure you have a Gemfile in the project root directory #{job.job_path}" unless job.job_gemfile.present?
236
- if job.find_capfile.blank?
237
- raise "Please make sure you have a Capfile in the project root directory #{job.job_path}"
238
- end
239
- unless job.capistrano_sentinel_needs_updating?
240
- raise "Please consider upgrading the gem #{job.capistrano_sentinel_name} to version #{job.loaded_capistrano_sentinel_version} from #{job.job_capistrano_sentinel_version} in #{job.job_path} "
241
- end
242
- @jobs << job unless job_can_tag_staging?(job)
253
+
243
254
  end
244
255
 
245
256
  def job_can_tag_staging?(job)
@@ -4,6 +4,9 @@ module CapistranoMulticonfigParallel
4
4
  GITFLOW_CALCULATE_TAG_TASK = 'gitflow:calculate_tag'
5
5
  GITFLOW_VERIFY_UPTODATE_TASK = 'gitflow:verify_up_to_date'
6
6
 
7
+ class TaskFailed < StandardError; end
8
+
9
+
7
10
  class << self
8
11
  attr_accessor :logger, :original_args, :config, :config_keys
9
12
  include CapistranoMulticonfigParallel::Configuration
@@ -51,7 +54,7 @@ module CapistranoMulticonfigParallel
51
54
  Celluloid.logger = logger
52
55
  Celluloid.task_class = defined?(Celluloid::TaskThread) ? Celluloid::TaskThread : Celluloid::Task::Threaded
53
56
  Celluloid.exception_handler do |ex|
54
- unless ex.is_a?(Interrupt) || ex.is_a?(SystemExit) || ex.is_a?(CapistranoMulticonfigParallel::CelluloidWorker::TaskFailed)
57
+ unless ex.is_a?(Interrupt) || ex.is_a?(SystemExit) || ex.is_a?(CapistranoMulticonfigParallel::TaskFailed)
55
58
  rescue_error(ex, 'stderr')
56
59
  end
57
60
  end
@@ -15,7 +15,7 @@ module CapistranoMulticonfigParallel
15
15
  :show_bundler
16
16
  ]
17
17
 
18
- def work(job)
18
+ def work(job, &callback)
19
19
  @job = job
20
20
  @job_id = job.id
21
21
  @runner_status = nil
@@ -24,7 +24,7 @@ module CapistranoMulticonfigParallel
24
24
  @total_dependencies = bundler_dependencies.size
25
25
  @show_bundler = true
26
26
  progress_bar
27
- check_missing_deps
27
+ async.check_missing_deps
28
28
  end
29
29
 
30
30
  def progress_bar
@@ -41,7 +41,10 @@ module CapistranoMulticonfigParallel
41
41
  def show_bundler_progress(data)
42
42
  @show_bundler = false if data.to_s.include?("The Gemfile's dependencies are satisfied") || data.to_s.include?("Bundle complete")
43
43
  gem_spec = bundler_dependencies.find{|spec| data.include?(spec.name) }
44
- if @show_bundler == true && gem_spec.present?
44
+ if data.include?("Error") && @show_bundler == true && gem_spec.present?
45
+ error_message = "Bundler worker #{@job_id} task failed for #{gem_spec.inspect}"
46
+ raise(CapistranoMulticonfigParallel::TaskFailed.new(error_message), error_message)
47
+ elsif @show_bundler == true && gem_spec.present?
45
48
  @checked_bundler_deps = [gem_spec.name]
46
49
  progress_bar.increment
47
50
  elsif @show_bundler == false
@@ -57,11 +60,20 @@ module CapistranoMulticonfigParallel
57
60
 
58
61
  def do_bundle_sync_command(command)
59
62
  process_runner = CapistranoMulticonfigParallel::ProcessRunner.new
60
- process_runner.work(@job, command, process_sync: :sync, actor: Actor.current, log_prefix: @log_prefix, runner_status_klass: CapistranoMulticonfigParallel::BundlerStatus, :callback => lambda {|runner_status| @runner_status = runner_status })
61
- sleep(0.1) until @runner_status.present?
62
- @runner_status.output_text
63
+ process_runner.work(@job, command, process_sync: :async, actor: Actor.current, log_prefix: @log_prefix, runner_status_klass: CapistranoMulticonfigParallel::BundlerStatus)
63
64
  end
64
65
 
66
+ def notify_finished(exit_status, runner_status)
67
+ @runner_status = runner_status
68
+ @exit_status = exit_status
69
+ progress_bar.finish
70
+ if exit_status == 0
71
+ callback.call(@job)
72
+ else
73
+ error_message = "Bundler worker #{@job_id} task failed with exit status #{exit_status.inspect}"
74
+ raise(CapistranoMulticonfigParallel::TaskFailed.new(error_message), error_message)
75
+ end
76
+ end
65
77
 
66
78
  end
67
79
  end
@@ -19,7 +19,6 @@ module CapistranoMulticonfigParallel
19
19
  #
20
20
  class CelluloidWorker
21
21
  include CapistranoMulticonfigParallel::BaseActorHelper
22
- class TaskFailed < StandardError; end
23
22
 
24
23
 
25
24
  ATTRIBUTE_LIST = [
@@ -170,7 +169,7 @@ module CapistranoMulticonfigParallel
170
169
  log_to_file("worker #{@job_id} triest to transition from #{@machine.state} to #{name}") unless options[:bundler]
171
170
  @machine.go_to_transition(name.to_s, options)
172
171
  error_message = "worker #{@job_id} task #{name} failed "
173
- raise(CapistranoMulticonfigParallel::CelluloidWorker::TaskFailed.new(error_message), error_message) if job.failed? # force worker to rollback
172
+ raise(CapistranoMulticonfigParallel::TaskFailed.new(error_message), error_message) if job.failed? # force worker to rollback
174
173
  end
175
174
 
176
175
  def send_msg(channel, message = nil)
@@ -193,7 +192,7 @@ module CapistranoMulticonfigParallel
193
192
  finish_worker(exit_status)
194
193
  return if exit_status == 0
195
194
  error_message = "worker #{@job_id} task failed with exit status #{exit_status.inspect} "
196
- raise(CapistranoMulticonfigParallel::CelluloidWorker::TaskFailed.new(error_message), error_message)
195
+ raise(CapistranoMulticonfigParallel::TaskFailed.new(error_message), error_message)
197
196
  end
198
197
 
199
198
  # def inspect
@@ -49,7 +49,7 @@ module CapistranoMulticonfigParallel
49
49
  end
50
50
 
51
51
  def error_filtered?(error)
52
- [CapistranoMulticonfigParallel::CelluloidWorker::TaskFailed, SystemExit].find { |class_name| error.is_a?(class_name) }.present?
52
+ [CapistranoMulticonfigParallel::TaskFailed, SystemExit].find { |class_name| error.is_a?(class_name) }.present?
53
53
  end
54
54
 
55
55
  def development_debug?
@@ -9,7 +9,7 @@ module CapistranoMulticonfigParallel
9
9
 
10
10
  MAJOR = 2
11
11
  MINOR = 0
12
- TINY = 0
12
+ TINY = 1
13
13
  PRE = nil
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano_multiconfig_parallel
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - bogdanRada