pfab 0.57.1 → 0.58.1

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: 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