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 +4 -4
- data/README.markdown +1 -1
- data/lib/pfab/cli.rb +48 -12
- data/lib/pfab/version.rb +1 -1
- data/pfab.gemspec +14 -28
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f5439bb786614722bb5525cf32208b7526d5fbd6bdd32ce1f65657c03e109201
|
|
4
|
+
data.tar.gz: fff1fbdebaca8be995c117192aa451522effb09376c51158c13092bf273c7f14
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e578cc68d28eb765a4c4dd25cddb2f8792253844e951129c42c504a1042e8b0fe5acc033f6457cf18ca4006826b54c2d50d4509b89f56e92e04ec4848cf81b1f
|
|
7
|
+
data.tar.gz: 62c984f80c304d4360f67fee40208359d0460f21274c8c84033a2d0048348283105e2a25d681c901e30957f5f7864f818c109537625ee655efc898e8206c0c88
|
data/README.markdown
CHANGED
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
|
-
|
|
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
|
|
343
|
-
puts_and_system
|
|
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
|
|
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
|
|
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
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.
|
|
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.
|
|
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
|
|
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.
|
|
49
|
+
s.rubygems_version = "3.4.10".freeze
|
|
50
50
|
s.summary = "helper gem".freeze
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
s.specification_version = 4
|
|
54
|
-
end
|
|
52
|
+
s.specification_version = 4
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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.
|
|
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
|
|
11
|
+
date: 2024-10-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: commander
|