pfab 0.58.3 → 0.58.4

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
  SHA256:
3
- metadata.gz: 06f9a7ac8980418745259dc8c9e5ecd2f42db533889b16513b61a7e141014730
4
- data.tar.gz: 4d1f6a6d90830921bcaae288459e2e30c84731b9e3655464e14f0017eae6ecc7
3
+ metadata.gz: 1c9aea4ca5e33e1435e9dbc50e7b6229a852ccf9537956a818fc2a4a2dfa81f1
4
+ data.tar.gz: c6428e97bcb16aece2e493978cea6da82a91113c1bc15e7c942f1978f03100ae
5
5
  SHA512:
6
- metadata.gz: 6355ed8af48159570d12b78aabf37489d18996cdab6d62bd29c4c79a61bf9f2c0e5923704b32b466babfbf3912a52478197d083fc2693743f58e7c851b6458b1
7
- data.tar.gz: 1bc9950b2904316fd6ebb18416e96e003454b87d733efaeb43fb418906c5b7b9b4b242048a8f22ec28d32861ec62494acc7c9d231dbc5cd484d136527fcbd5f8
6
+ metadata.gz: b206ecbb17034d19c921926df9d107f8ec14e3065c14c421ae2465d8463fe3a6aadf22bc0e79f3554192b954162b4254273d2c604240ee24cae6008b45ddf34e
7
+ data.tar.gz: 247ed244b974a5b81268ee5935d0d607a4dd1e0f46d576566e4f9513df7bf1abdb1fd8539b1171fc3cfefb6cc5fb90606ad191c6c348e0a3fb9e0d384769538c
data/lib/pfab/cli.rb CHANGED
@@ -65,16 +65,18 @@ module Pfab
65
65
  command :shipit do |c|
66
66
  c.syntax = "pfab shipit"
67
67
  c.summary = "build, generate, apply"
68
- c.option "-t", "--timeout timeout", "timeout for rollout (default 360s)"
68
+ c.option "-t", "--timeout TIMEOUT", Integer, "timeout for rollout (default 360s)"
69
+ c.option "-r", "--retries RETRIES", Integer, "number of retries for rollout (default 3)"
70
+ c.option "-s", "--sleep SLEEP", Integer, "sleep duration between retries in seconds (default 5)"
69
71
 
70
72
  c.action do |args, options|
71
- options.default :timeout => 360
73
+ options.default timeout: 360, retries: 3, sleep: 5
72
74
  app_name = get_app_name(all: true)
73
75
  puts "Shipping #{app_name}"
74
76
  success = cmd_build
75
77
  if success
76
78
  cmd_generate_yaml
77
- cmd_apply(timeout: options.timeout)
79
+ cmd_apply(timeout: options.timeout, retries: options.retries, sleep_duration: options.sleep)
78
80
  end
79
81
  end
80
82
  end
@@ -207,7 +209,7 @@ module Pfab
207
209
  run!
208
210
  end
209
211
 
210
- def cmd_apply(timeout: 240)
212
+ def cmd_apply(timeout: 240, retries: 3, sleep_duration: 5)
211
213
  set_kube_context
212
214
  success = true
213
215
 
@@ -222,9 +224,13 @@ module Pfab
222
224
  success &= puts_and_system("git push origin --tags")
223
225
  end
224
226
 
227
+ success &= wait_for_deployments_rollout(timeout, retries: retries, sleep_duration: sleep_duration)
228
+
229
+ exit(success ? 0 : 1)
230
+ end
231
+
232
+ def wait_for_deployments_rollout(timeout, retries: 3, sleep_duration: 5)
225
233
  selector = "application=#{@application_yaml['name']}"
226
-
227
- # Get all deployments for the given selector
228
234
  deployment_json = `kubectl get deployment -l #{selector} -o json --namespace=#{yy.namespace}`
229
235
  deployments = JSON.parse(deployment_json)
230
236
 
@@ -232,26 +238,33 @@ module Pfab
232
238
  deployments["items"].each do |deployment|
233
239
  deployment_name = deployment["metadata"]["name"]
234
240
  puts "Waiting for deployment #{deployment_name} to roll out..."
235
- rollout_success = kubectl("rollout status deployment/#{deployment_name} --timeout=#{timeout}s")
236
- if rollout_success
237
- puts "Deployment #{deployment_name} successfully rolled out."
238
- else
239
- puts "Deployment #{deployment_name} failed to roll out within the specified timeout."
241
+
242
+ retries.times do |attempt|
243
+ rollout_success = kubectl("rollout status deployment/#{deployment_name} --timeout=#{timeout}s")
244
+ rollout_success = false
245
+ if rollout_success
246
+ puts "Deployment #{deployment_name} successfully rolled out. Attempt #{attempt + 1}/#{retries}."
247
+ break
248
+ else
249
+ puts "Attempt #{attempt + 1}/#{retries}: Deployment #{deployment_name} failed to roll out within the specified timeout."
250
+ if attempt < retries - 1
251
+ puts "Retrying in #{sleep_duration} seconds..."
252
+ sleep(sleep_duration)
253
+ end
254
+ end
255
+ end
256
+
257
+ unless rollout_success
258
+ puts "Deployment #{deployment_name} failed to roll out after #{retries} attempts."
259
+ return false
240
260
  end
241
- success &= rollout_success
242
261
  end
243
- else
244
- puts "No deployments found for selector: #{selector}"
245
- success = false
246
- end
247
-
248
- if success
249
262
  puts "All deployments successfully rolled out."
263
+ true
250
264
  else
251
- puts "One or more deployments failed to roll out successfully."
265
+ puts "No deployments found for selector: #{selector}"
266
+ false
252
267
  end
253
-
254
- exit(success ? 0 : 1)
255
268
  end
256
269
 
257
270
  def image_exists?(full_image_name)
data/lib/pfab/version.rb CHANGED
@@ -2,7 +2,7 @@ module Pfab
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 58
5
- PATCH = 3
5
+ PATCH = 4
6
6
  BUILD = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
data/pfab.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: pfab 0.58.3 ruby lib
5
+ # stub: pfab 0.58.4 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "pfab".freeze
9
- s.version = "0.58.3"
9
+ s.version = "0.58.4"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Jeff Dwyer".freeze]
14
- s.date = "2024-10-07"
14
+ s.date = "2024-10-09"
15
15
  s.description = "k8s helper".freeze
16
16
  s.email = "jdwyer@prefab.cloud".freeze
17
17
  s.executables = ["pfab".freeze]
@@ -46,33 +46,19 @@ Gem::Specification.new do |s|
46
46
  ]
47
47
  s.homepage = "http://github.com/prefab-cloud/pfab".freeze
48
48
  s.licenses = ["MIT".freeze]
49
- s.rubygems_version = "3.3.7".freeze
49
+ s.rubygems_version = "3.4.6".freeze
50
50
  s.summary = "helper gem".freeze
51
51
 
52
- if s.respond_to? :specification_version then
53
- s.specification_version = 4
54
- end
52
+ s.specification_version = 4
55
53
 
56
- if s.respond_to? :add_runtime_dependency then
57
- s.add_runtime_dependency(%q<commander>.freeze, [">= 0"])
58
- s.add_runtime_dependency(%q<activesupport>.freeze, [">= 0"])
59
- s.add_runtime_dependency(%q<pry-byebug>.freeze, [">= 0"])
60
- s.add_runtime_dependency(%q<styled_yaml>.freeze, ["~> 0.0.1"])
61
- s.add_development_dependency(%q<rdoc>.freeze, ["~> 6.1"])
62
- s.add_development_dependency(%q<bundler>.freeze, ["~> 2.3"])
63
- s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.4.9"])
64
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
65
- s.add_development_dependency(%q<test-unit>.freeze, [">= 0"])
66
- else
67
- s.add_dependency(%q<commander>.freeze, [">= 0"])
68
- s.add_dependency(%q<activesupport>.freeze, [">= 0"])
69
- s.add_dependency(%q<pry-byebug>.freeze, [">= 0"])
70
- s.add_dependency(%q<styled_yaml>.freeze, ["~> 0.0.1"])
71
- s.add_dependency(%q<rdoc>.freeze, ["~> 6.1"])
72
- s.add_dependency(%q<bundler>.freeze, ["~> 2.3"])
73
- s.add_dependency(%q<juwelier>.freeze, ["~> 2.4.9"])
74
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
75
- s.add_dependency(%q<test-unit>.freeze, [">= 0"])
76
- end
54
+ s.add_runtime_dependency(%q<commander>.freeze, [">= 0"])
55
+ s.add_runtime_dependency(%q<activesupport>.freeze, [">= 0"])
56
+ s.add_runtime_dependency(%q<pry-byebug>.freeze, [">= 0"])
57
+ s.add_runtime_dependency(%q<styled_yaml>.freeze, ["~> 0.0.1"])
58
+ s.add_development_dependency(%q<rdoc>.freeze, ["~> 6.1"])
59
+ s.add_development_dependency(%q<bundler>.freeze, ["~> 2.3"])
60
+ s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.4.9"])
61
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
62
+ s.add_development_dependency(%q<test-unit>.freeze, [">= 0"])
77
63
  end
78
64
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pfab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.58.3
4
+ version: 0.58.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Dwyer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-07 00:00:00.000000000 Z
11
+ date: 2024-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander