capistrano_multiconfig_parallel 0.13.2 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d0f0c74f784649cbdf4950e848e78676f34b1fd9
4
- data.tar.gz: d35b2181b44c3003e8724ebd6c709ceeca5b3197
3
+ metadata.gz: af426cfa70110d128cbe87845419726e79c208a1
4
+ data.tar.gz: 8fc920d2c30a6dba86a4454072f8545178b5e0cf
5
5
  SHA512:
6
- metadata.gz: 4898438e1a2f8b9fb5941952a7b12833f45df7404308234529b1f792dedf2c2e10d320727c24f80c97a1f41b683f825c340fac0fc4647302218f365d22905097
7
- data.tar.gz: 14453f7bc72253e071cd6228c3e3f48a82600236f316330a72f2fab81ced31efaf7f8b6ebdbd2e55f3d81e9c6cf37533fdeccf6da066b85eefd05a9b568fed78
6
+ metadata.gz: d7d415e6280a296e2245caa1d969ee18e7875a31c52fb7a7dccf2c299647cc3a7dc3378ca2bacd9a3fc28ef52086004bae92b0d9a336b9e9aa5fba790860f0c9
7
+ data.tar.gz: 8c6d73cd137cc0b2ab546ffd2d76aa9a26ff866d90a0a7d746ed38ffd237d78ca574074885cb9f4983030656c0c661acea359a645c19112df5e0b1f8cc482e05
@@ -10,7 +10,7 @@ module CapistranoMulticonfigParallel
10
10
  end
11
11
 
12
12
  def top_level
13
- job_manager = multi_manager_class.new(self, top_level_tasks, stages)
13
+ job_manager = CapistranoMulticonfigParallel::BaseManager.new(self, top_level_tasks, stages)
14
14
  if job_manager.can_start? && !options.show_prereqs && !options.show_tasks
15
15
  job_manager.start
16
16
  else
@@ -22,8 +22,5 @@ module CapistranoMulticonfigParallel
22
22
  stages.find { |stage| stage.include?(':') }.present?
23
23
  end
24
24
 
25
- def multi_manager_class
26
- multi_apps? ? CapistranoMulticonfigParallel::MultiAppManager : CapistranoMulticonfigParallel::SingleAppManager
27
- end
28
25
  end
29
26
  end
@@ -121,16 +121,15 @@ module CapistranoMulticonfigParallel
121
121
  end
122
122
 
123
123
  def syncronized_confirmation?
124
- (!@job_manager.executes_deploy_stages?) ||
125
- (@job_manager.executes_deploy_stages? && !@job_manager.can_tag_staging? && @job_manager.confirmation_applies_to_all_workers?)
124
+ !@job_manager.can_tag_staging?
126
125
  end
127
126
 
128
127
  def apply_confirmation_for_worker(worker)
129
- worker.alive? && CapistranoMulticonfigParallel.configuration.apply_stage_confirmation.include?(worker.env_name)
128
+ worker.alive? && CapistranoMulticonfigParallel.configuration.apply_stage_confirmation.include?(worker.env_name) && apply_confirmations?
130
129
  end
131
130
 
132
131
  def setup_worker_conditions(worker)
133
- return if !apply_confirmation_for_worker(worker) || !apply_confirmations?
132
+ return if !apply_confirmation_for_worker(worker)
134
133
  hash_conditions = {}
135
134
  CapistranoMulticonfigParallel.configuration.task_confirmations.each do |task|
136
135
  hash_conditions[task] = { condition: Celluloid::Condition.new, status: 'unconfirmed' }
@@ -139,7 +138,7 @@ module CapistranoMulticonfigParallel
139
138
  end
140
139
 
141
140
  def mark_completed_remaining_tasks(worker)
142
- return if !apply_confirmation_for_worker(worker) || !apply_confirmations?
141
+ return if !apply_confirmation_for_worker(worker)
143
142
  CapistranoMulticonfigParallel.configuration.task_confirmations.each_with_index do |task, _index|
144
143
  fake_result = proc { |sum| sum }
145
144
  task_confirmation = @job_to_condition[worker.job_id][task]
@@ -151,7 +150,7 @@ module CapistranoMulticonfigParallel
151
150
  end
152
151
 
153
152
  def wait_task_confirmations_worker(worker)
154
- return if !apply_confirmations? || !apply_confirmation_for_worker(worker) || syncronized_confirmation?
153
+ return if !apply_confirmation_for_worker(worker) || !syncronized_confirmation?
155
154
  CapistranoMulticonfigParallel.configuration.task_confirmations.each_with_index do |task, _index|
156
155
  result = wait_condition_for_task(worker.job_id, task)
157
156
  confirm_task_approval(result, task, worker) if result.present?
@@ -164,7 +163,7 @@ module CapistranoMulticonfigParallel
164
163
 
165
164
  def wait_task_confirmations
166
165
  stage_apply = CapistranoMulticonfigParallel.configuration.apply_stage_confirmation.include?(@job_manager.stage)
167
- return if !apply_confirmations? || !stage_apply || !syncronized_confirmation?
166
+ return if !stage_apply || !syncronized_confirmation?
168
167
  CapistranoMulticonfigParallel.configuration.task_confirmations.each_with_index do |task, _index|
169
168
  results = []
170
169
  @jobs.pmap do |job_id, _job|
@@ -149,8 +149,9 @@ module CapistranoMulticonfigParallel
149
149
  end
150
150
 
151
151
  def task_approval(message)
152
- if @manager.apply_confirmations? && CapistranoMulticonfigParallel.configuration.task_confirmations.include?(message['task']) && message['action'] == 'invoke'
153
- task_confirmation = @manager.job_to_condition[@job_id][message['task']]
152
+ job_conditions = @manager.job_to_condition[@job_id]
153
+ if job_conditions.present? && CapistranoMulticonfigParallel.configuration.task_confirmations.include?(message['task']) && message['action'] == 'invoke'
154
+ task_confirmation = job_conditions[message['task']]
154
155
  task_confirmation[:status] = 'confirmed'
155
156
  task_confirmation[:condition].signal(message['task'])
156
157
  else
@@ -1,5 +1,6 @@
1
1
  require_relative './standard_deploy'
2
2
  require_relative '../celluloid/celluloid_manager'
3
+ require_relative '../multi_app_helpers/dependency_tracker'
3
4
  module CapistranoMulticonfigParallel
4
5
  # finds app dependencies, shows menu and delegates jobs to celluloid manager
5
6
  # rubocop:disable ClassLength
@@ -19,14 +20,38 @@ module CapistranoMulticonfigParallel
19
20
  def run
20
21
  options = {}
21
22
  if custom_command?
23
+ options = verify_options_custom_command(options)
22
24
  run_custom_command(options)
23
25
  else
24
- options = verify_options_custom_command(options)
25
- run_normal_command(options)
26
+ collect_jobs(options)
26
27
  end
27
28
  process_jobs
28
29
  end
29
30
 
31
+
32
+ def run_custom_command(options)
33
+ stages = fetch_multi_stages
34
+ return if stages.blank?
35
+ stages = check_multi_stages(stages)
36
+ stages.each do |stage|
37
+ collect_jobs(options.merge('stage' => stage))
38
+ end
39
+ end
40
+
41
+ def deploy_multiple_apps(applications, options)
42
+ options = options.stringify_keys
43
+ return unless applications.present?
44
+ applications.each do |app|
45
+ deploy_app(options.merge('app' => app))
46
+ end
47
+ end
48
+
49
+
50
+ def backup_the_branch
51
+ return if custom_command? || @argv['BRANCH'].blank?
52
+ @branch_backup = @argv['BRANCH'].to_s
53
+ @argv['BRANCH'] = nil
54
+ end
30
55
  def can_start?
31
56
  @top_level_tasks.size > 1 && (stages.include?(@top_level_tasks.first) || custom_command?) && ENV[CapistranoMulticonfigParallel::ENV_KEY_JOB_ID].blank?
32
57
  end
@@ -108,7 +133,10 @@ module CapistranoMulticonfigParallel
108
133
  def collect_jobs(options = {}, &block)
109
134
  options = prepare_options(options)
110
135
  options = options.stringify_keys
111
- block.call(options) if block_given?
136
+ apps = @dependency_tracker.fetch_apps_needed_for_deployment(options['app'], options['action'])
137
+ backup_the_branch if multi_apps?
138
+ deploy_multiple_apps(apps, options)
139
+ deploy_app(options)
112
140
  rescue => e
113
141
  raise [e, e.backtrace].inspect
114
142
  end
@@ -124,9 +152,9 @@ module CapistranoMulticonfigParallel
124
152
 
125
153
  def tag_staging_exists? # check exists task from capistrano-gitflow
126
154
  check_giflow_tasks(
127
- CapistranoMulticonfigParallel::GITFLOW_TAG_STAGING_TASK,
128
- CapistranoMulticonfigParallel::GITFLOW_CALCULATE_TAG_TASK,
129
- CapistranoMulticonfigParallel::GITFLOW_VERIFY_UPTODATE_TASK
155
+ CapistranoMulticonfigParallel::GITFLOW_TAG_STAGING_TASK,
156
+ CapistranoMulticonfigParallel::GITFLOW_CALCULATE_TAG_TASK,
157
+ CapistranoMulticonfigParallel::GITFLOW_VERIFY_UPTODATE_TASK
130
158
  )
131
159
  rescue
132
160
  return false
@@ -178,11 +206,8 @@ module CapistranoMulticonfigParallel
178
206
  @jobs.map { |job| job['env'] }
179
207
  end
180
208
 
181
- def confirmation_applies_to_all_workers?
182
- CapistranoMulticonfigParallel.configuration.apply_stage_confirmation.all? { |e| worker_environments.include?(e) }
183
- end
184
209
 
185
- private
210
+ private
186
211
 
187
212
  def call_task_deploy_app(options = {})
188
213
  options = options.stringify_keys
@@ -7,8 +7,8 @@ module CapistranoMulticonfigParallel
7
7
  attr_accessor :app, :stage, :action, :task_arguments, :env_options
8
8
  def initialize(options)
9
9
  @app = options.fetch('app', '')
10
- @stage = options.fetch('env', 'development')
11
- @action = options.fetch('action', 'deploy')
10
+ @stage = options.fetch('env', '')
11
+ @action = options.fetch('action', '')
12
12
  @task_arguments = options.fetch('task_arguments:', [])
13
13
  @env_options = options.fetch('env_options', {})
14
14
  execute_standard_deploy
@@ -11,7 +11,8 @@ module CapistranoMulticonfigParallel
11
11
 
12
12
  def fetch_apps_needed_for_deployment(application, action)
13
13
  applications = []
14
- if @job_manager.custom_command? && @job_manager.multi_apps?
14
+ return applications unless @job_manager.multi_apps?
15
+ if @job_manager.custom_command?
15
16
  apps_selected = all_websites_return_applications_selected
16
17
  applications = get_applications_to_deploy(action, apps_selected)
17
18
  elsif CapistranoMulticonfigParallel.configuration.application_dependencies.present?
@@ -27,7 +28,7 @@ module CapistranoMulticonfigParallel
27
28
  applications
28
29
  end
29
30
 
30
- private
31
+ private
31
32
 
32
33
  def application_dependencies
33
34
  deps = CapistranoMulticonfigParallel.configuration.application_dependencies
@@ -7,8 +7,8 @@ module CapistranoMulticonfigParallel
7
7
  # module used for generating the version
8
8
  module VERSION
9
9
  MAJOR = 0
10
- MINOR = 13
11
- TINY = 2
10
+ MINOR = 14
11
+ TINY = 0
12
12
  PRE = nil
13
13
 
14
14
  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: 0.13.2
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - bogdanRada
@@ -634,8 +634,6 @@ files:
634
634
  - lib/capistrano_multiconfig_parallel/initializers/conf.rb
635
635
  - lib/capistrano_multiconfig_parallel/initializers/default.yml
636
636
  - lib/capistrano_multiconfig_parallel/managers/base_manager.rb
637
- - lib/capistrano_multiconfig_parallel/managers/multi_app_manager.rb
638
- - lib/capistrano_multiconfig_parallel/managers/single_app_manager.rb
639
637
  - lib/capistrano_multiconfig_parallel/managers/standard_deploy.rb
640
638
  - lib/capistrano_multiconfig_parallel/multi_app_helpers/dependency_tracker.rb
641
639
  - lib/capistrano_multiconfig_parallel/multi_app_helpers/interactive_menu.rb
@@ -1,53 +0,0 @@
1
- require_relative './base_manager'
2
- require_relative '../multi_app_helpers/dependency_tracker'
3
- module CapistranoMulticonfigParallel
4
- # class used to find application dependencies
5
- class MultiAppManager < CapistranoMulticonfigParallel::BaseManager
6
- include Celluloid
7
- include Celluloid::Logger
8
-
9
- def run_normal_command(options)
10
- multi_collect_and_run_jobs(options) do |apps, new_options|
11
- deploy_multiple_apps(apps, new_options)
12
- deploy_app(new_options) if !custom_command? && new_options['app'].present?
13
- end
14
- end
15
-
16
- def run_custom_command(options)
17
- stages = fetch_multi_stages
18
- return if stages.blank?
19
- stages = check_multi_stages(stages)
20
- multi_collect_and_run_jobs(options) do |apps, new_options|
21
- apps.each do |app|
22
- stages.each do |stage|
23
- deploy_app(new_options.merge('app' => app, 'stage' => stage))
24
- end
25
- end if apps.present?
26
- end
27
- end
28
-
29
- private
30
-
31
- def multi_collect_and_run_jobs(options = {}, &block)
32
- collect_jobs(options) do |new_options|
33
- applications = @dependency_tracker.fetch_apps_needed_for_deployment(new_options['app'], new_options['action'])
34
- backup_the_branch
35
- block.call(applications, new_options) if block_given?
36
- end
37
- end
38
-
39
- def backup_the_branch
40
- return if custom_command? || @argv['BRANCH'].blank?
41
- @branch_backup = @argv['BRANCH'].to_s
42
- @argv['BRANCH'] = nil
43
- end
44
-
45
- def deploy_multiple_apps(applications, options)
46
- options = options.stringify_keys
47
- return unless applications.present?
48
- applications.each do |app|
49
- deploy_app(options.merge('app' => app))
50
- end
51
- end
52
- end
53
- end
@@ -1,25 +0,0 @@
1
- require_relative './base_manager'
2
- module CapistranoMulticonfigParallel
3
- # class used to find application dependencies
4
- class SingleAppManager < CapistranoMulticonfigParallel::BaseManager
5
- include Celluloid
6
- include Celluloid::Logger
7
-
8
- def run_normal_command(options)
9
- collect_jobs(options) do |new_options|
10
- deploy_app(new_options)
11
- end
12
- end
13
-
14
- def run_custom_command(options)
15
- stages = fetch_multi_stages
16
- return if stages.blank?
17
- stages = check_multi_stages(stages)
18
- collect_jobs(options) do |new_options|
19
- stages.each do |stage|
20
- deploy_app(new_options.merge('stage' => stage))
21
- end
22
- end
23
- end
24
- end
25
- end