pfab 0.57.1 → 0.58.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
  SHA256:
3
- metadata.gz: ca0e426618db3917a6ef9ec88e9f0e1e2e915aeda75ada09ee3195554b5e3459
4
- data.tar.gz: 2c3f606dc89afe42e3a4f81ca63dc26f86dbbce30b33ec0f65cb42b6e87eb6a8
3
+ metadata.gz: f5439bb786614722bb5525cf32208b7526d5fbd6bdd32ce1f65657c03e109201
4
+ data.tar.gz: fff1fbdebaca8be995c117192aa451522effb09376c51158c13092bf273c7f14
5
5
  SHA512:
6
- metadata.gz: f4a20bf537748c2ab4e695a1e317102ab68a2523f249b6f764f4b9b45dbbde4e84c3f21e8e9f3979c66c7233d1aedb1432272d34b1f54ddce300d203352d13cd
7
- data.tar.gz: 9abb5db57922ddef966c96a3682b2940614384bcee60c9a35f94e24cad27604948c9341f286176ef68310c3c29ba8021dd13be0bb4c59838dc0af3cad23b63f3
6
+ metadata.gz: e578cc68d28eb765a4c4dd25cddb2f8792253844e951129c42c504a1042e8b0fe5acc033f6457cf18ca4006826b54c2d50d4509b89f56e92e04ec4848cf81b1f
7
+ data.tar.gz: 62c984f80c304d4360f67fee40208359d0460f21274c8c84033a2d0048348283105e2a25d681c901e30957f5f7864f818c109537625ee655efc898e8206c0c88
data/README.markdown CHANGED
@@ -230,7 +230,7 @@ Local Testing
230
230
  -----------------------------------------
231
231
  ```bash
232
232
  bundle exec rake build
233
- gem install --local pkg/pfab-0.44.0.gem
233
+ gem install --local pkg/pfab-0.57.1.gem
234
234
  ```
235
235
  ```ruby
236
236
  gem 'pfab', :path => "../pfab"
data/lib/pfab/cli.rb CHANGED
@@ -65,13 +65,16 @@ 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 240s)"
69
+
68
70
  c.action do
71
+ options.default :timeout => 240
69
72
  app_name = get_app_name(all: true)
70
73
  puts "Shipping #{app_name}"
71
74
  success = cmd_build
72
75
  if success
73
76
  cmd_generate_yaml
74
- cmd_apply
77
+ cmd_apply(timeout: options.timeout)
75
78
  end
76
79
  end
77
80
  end
@@ -204,20 +207,51 @@ module Pfab
204
207
  run!
205
208
  end
206
209
 
207
- def cmd_apply
210
+ def cmd_apply(timeout: 240)
208
211
  set_kube_context
212
+ success = true
213
+
209
214
  get_apps.each do |app_name|
210
215
  app = deployables[app_name]
211
216
  if app[:deployable_type] == "cron"
212
217
  deployed_name = deployed_name(app)
213
- kubectl("delete cronjob -l deployed-name=#{deployed_name}")
218
+ success &= kubectl("delete cronjob -l deployed-name=#{deployed_name}")
214
219
  end
215
- kubectl("apply -f .application-k8s-#{$env}-#{app_name}.yaml")
216
- puts_and_system("git tag release-#{$env}-#{app_name}-#{Time.now.strftime("%Y-%m-%d-%H-%M-%S")} HEAD")
217
- puts_and_system("git push origin --tags")
220
+ success &= kubectl("apply -f .application-k8s-#{$env}-#{app_name}.yaml")
221
+ success &= puts_and_system("git tag release-#{$env}-#{app_name}-#{Time.now.strftime("%Y-%m-%d-%H-%M-%S")} HEAD")
222
+ success &= puts_and_system("git push origin --tags")
218
223
  end
224
+
219
225
  selector = "application=#{@application_yaml['name']}"
220
- kubectl "get pods -l #{selector} -w"
226
+
227
+ # Get all deployments for the given selector
228
+ deployment_json = `kubectl get deployment -l #{selector} -o json --namespace=#{yy.namespace}`
229
+ deployments = JSON.parse(deployment_json)
230
+
231
+ if deployments["items"].any?
232
+ deployments["items"].each do |deployment|
233
+ deployment_name = deployment["metadata"]["name"]
234
+ 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."
240
+ end
241
+ success &= rollout_success
242
+ end
243
+ else
244
+ puts "No deployments found for selector: #{selector}"
245
+ success = false
246
+ end
247
+
248
+ if success
249
+ puts "All deployments successfully rolled out."
250
+ else
251
+ puts "One or more deployments failed to roll out successfully."
252
+ end
253
+
254
+ exit(success ? 0 : 1)
221
255
  end
222
256
 
223
257
  def image_exists?(full_image_name)
@@ -339,16 +373,18 @@ module Pfab
339
373
  @_config ||= YAML.load(File.read(File.join(Dir.home, ".pfab.yaml")))
340
374
  end
341
375
 
342
- def kubectl cmd, post_cmd = ""
343
- puts_and_system "kubectl #{cmd} --namespace=#{yy.namespace} #{post_cmd}"
376
+ def kubectl(cmd, post_cmd = "")
377
+ result = puts_and_system("kubectl #{cmd} --namespace=#{yy.namespace} #{post_cmd}")
378
+ result == true
344
379
  end
345
380
 
346
- def puts_and_system cmd
381
+ def puts_and_system(cmd)
347
382
  puts cmd
348
383
  if $dryrun
349
384
  puts "dry run, didn't run that"
385
+ true
350
386
  else
351
- system cmd
387
+ system(cmd)
352
388
  end
353
389
  end
354
390
 
@@ -406,4 +442,4 @@ module Pfab
406
442
  (name == "all") ? deployables.keys : [name]
407
443
  end
408
444
  end
409
- end
445
+ end
data/lib/pfab/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Pfab
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 57
4
+ MINOR = 58
5
5
  PATCH = 1
6
6
  BUILD = nil
7
7
 
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.57.1 ruby lib
5
+ # stub: pfab 0.58.1 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "pfab".freeze
9
- s.version = "0.57.1"
9
+ s.version = "0.58.1"
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-07-18"
14
+ s.date = "2024-10-07"
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.10".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.57.1
4
+ version: 0.58.1
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-07-18 00:00:00.000000000 Z
11
+ date: 2024-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander