pfab 0.19.0 → 0.22.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
  SHA256:
3
- metadata.gz: e0d1ae2ca336b8e351b2ac53c9277ea24c35455ced37d6ecf763a48abbc646d3
4
- data.tar.gz: 53e793098a80b90dfc79217a946a1db84e945026ed75139979353311855622ee
3
+ metadata.gz: 3cf4984e6014745e194fa5d2b6cb12499548ae1113fd61c73529273554d1f5db
4
+ data.tar.gz: febfd1b79e28f2227c40b2d122a9fd236d065f8b18a0c09fad82779f02174061
5
5
  SHA512:
6
- metadata.gz: e6e6e46e096196424976bef15fbf00ca58ccc25b3223e40792c96e7991962f1fecb0bdd8bc59eb41cf89bcb63c502637c694f62a709780c43088fd3f7aa8a5cc
7
- data.tar.gz: 0c6d61a87473c7dff05646bb62d9c46780a9a11c47d4a6f3bcacc0479ff5a1d322c89534a1140d5a07f239a2f7b560a0e0f061d15f4d41532a17cbb2c3373103
6
+ metadata.gz: d3802f127e96a1b0f2fc57e6f38821783e0caa2fc065d7d718727960c201ea76d6d96420196256a26ecf2559904b70fbe2d5f45f6b5b71bdca47ffbbb7f4eef5
7
+ data.tar.gz: 7366605a1c4882177ce807a26113d465a419e839193e795cafa17546f8b38cb7f0709dee5c72c1b771ba44e2147267d7cbd20b036d0f16db5c3851b2fff93829
data/.tool-versions CHANGED
@@ -1 +1 @@
1
- ruby 2.6.9
1
+ ruby 3.0.3
data/CODEOWNERS ADDED
@@ -0,0 +1 @@
1
+ * @prefab-cloud/prefabdevs @prefab-cloud/prefabmaintainers @prefab-cloud/prefabadmins
data/Gemfile.lock CHANGED
@@ -18,7 +18,7 @@ GIT
18
18
  GEM
19
19
  remote: https://rubygems.org/
20
20
  specs:
21
- activesupport (5.2.2)
21
+ activesupport (5.2.4.3)
22
22
  concurrent-ruby (~> 1.0, >= 1.0.2)
23
23
  i18n (>= 0.7, < 2)
24
24
  minitest (~> 5.1)
@@ -30,7 +30,7 @@ GEM
30
30
  coderay (1.1.2)
31
31
  commander (4.4.6)
32
32
  highline (~> 1.7.2)
33
- concurrent-ruby (1.1.4)
33
+ concurrent-ruby (1.1.9)
34
34
  descendants_tracker (0.0.4)
35
35
  thread_safe (~> 0.3, >= 0.3.1)
36
36
  docile (1.3.1)
@@ -53,7 +53,7 @@ GEM
53
53
  faraday-net_http_persistent (1.2.0)
54
54
  faraday-patron (1.0.0)
55
55
  faraday-rack (1.0.0)
56
- git (1.9.1)
56
+ git (1.11.0)
57
57
  rchardet (~> 1.8)
58
58
  github_api (0.19.0)
59
59
  addressable (~> 2.4)
@@ -63,20 +63,20 @@ GEM
63
63
  oauth2 (~> 1.0)
64
64
  hashie (3.6.0)
65
65
  highline (1.7.10)
66
- i18n (1.2.0)
66
+ i18n (1.8.11)
67
67
  concurrent-ruby (~> 1.0)
68
68
  json (1.8.6)
69
69
  jwt (2.3.0)
70
70
  kamelcase (0.0.2)
71
71
  semver2 (~> 3)
72
72
  method_source (0.9.2)
73
- mini_portile2 (2.6.1)
74
- minitest (5.11.3)
73
+ mini_portile2 (2.8.0)
74
+ minitest (5.15.0)
75
75
  multi_json (1.15.0)
76
76
  multi_xml (0.6.0)
77
77
  multipart-post (2.1.1)
78
- nokogiri (1.12.5)
79
- mini_portile2 (~> 2.6.1)
78
+ nokogiri (1.13.6)
79
+ mini_portile2 (~> 2.8.0)
80
80
  racc (~> 1.4)
81
81
  oauth2 (1.4.7)
82
82
  faraday (>= 0.8, < 2.0)
@@ -109,7 +109,7 @@ GEM
109
109
  test-unit (3.2.9)
110
110
  power_assert
111
111
  thread_safe (0.3.6)
112
- tzinfo (1.2.5)
112
+ tzinfo (1.2.9)
113
113
  thread_safe (~> 0.1)
114
114
 
115
115
  PLATFORMS
@@ -126,4 +126,4 @@ DEPENDENCIES
126
126
  test-unit
127
127
 
128
128
  BUNDLED WITH
129
- 1.17.2
129
+ 2.3.5
data/README.markdown CHANGED
@@ -117,9 +117,9 @@ Releasing
117
117
  - modify version.rb
118
118
  - ```bundle exec rake gemspec```
119
119
  - ```git commit ```
120
- - ```bundle exec rake git:release```
121
- - ```bundle exec rake build```
122
- - ```gem push pkg/pfab-0.12.0.gem```
120
+ - ```REMOTE_BRANCH=main LOCAL_BRANCH=main bundle exec rake git:release```
121
+ - ```REMOTE_BRANCH=main LOCAL_BRANCH=main bundle exec rake build```
122
+ - ```gem push pkg/pfab-0.15.0.gem```
123
123
 
124
124
  Copyright
125
125
  ---------
data/lib/pfab/cli.rb CHANGED
@@ -31,8 +31,9 @@ module Pfab
31
31
  c.syntax = "pfab build"
32
32
  c.summary = "build image"
33
33
  c.option "--force", "force build and push"
34
+ c.option "--check", "just check if built"
34
35
  c.action do |_args, options|
35
- cmd_build(force: options.force)
36
+ cmd_build(force: options.force, checkonly: options.check)
36
37
  end
37
38
  end
38
39
 
@@ -83,6 +84,18 @@ module Pfab
83
84
  end
84
85
  end
85
86
 
87
+ command :restart do |c|
88
+ c.syntax = "pfab restart"
89
+ c.summary = "rolling restart of a deployment"
90
+ c.description = "rolling restart of a deployment"
91
+ c.action do
92
+ set_kube_context
93
+ app_name = get_app_name
94
+
95
+ puts_and_system "kubectl rollout restart deployment.apps/#{app_name}"
96
+ end
97
+ end
98
+
86
99
  command :exec do |c|
87
100
  c.syntax = "pfab exec"
88
101
  c.summary = "kubectl exec into a pod"
@@ -193,7 +206,16 @@ module Pfab
193
206
  end
194
207
  end
195
208
 
196
- def cmd_build(force: false)
209
+ def image_exists?(full_image_name)
210
+
211
+ # return 0 if image exists 1 if not
212
+ cmd = "docker manifest inspect #{full_image_name} > /dev/null ; echo $?"
213
+ say "Looking for images with #{cmd}"
214
+ existing = `#{cmd}`.strip
215
+ existing == "0"
216
+ end
217
+
218
+ def cmd_build(force: false, checkonly: false)
197
219
  rev = get_current_sha
198
220
  say "This repo is at rev: #{rev}"
199
221
  uncommitted_changes = !`git diff-index HEAD --`.empty?
@@ -209,13 +231,14 @@ module Pfab
209
231
 
210
232
  full_image_name = "#{container_repository}/#{image_name}:#{rev}"
211
233
 
212
- cmd = "docker images -q #{full_image_name}"
213
- say "Looking for images with #{cmd}"
214
- existing = `#{cmd}`
215
-
216
- if !existing.to_s.empty? && !force
217
- say "Found image #{full_image_name} already, skipping prebuild, build & push"
218
- return true
234
+ unless force
235
+ if image_exists?(full_image_name)
236
+ say "Found image #{full_image_name} already, skipping prebuild, build & push"
237
+ return true
238
+ else
239
+ say "No image #{full_image_name} present"
240
+ end
241
+ return if checkonly
219
242
  end
220
243
 
221
244
  say "No image #{full_image_name} present, building"
@@ -234,13 +257,23 @@ module Pfab
234
257
  end
235
258
  end
236
259
 
237
- puts_and_system "docker build -t #{image_name} --platform amd64 ."
260
+ build_cmd = "docker build -t #{image_name} --platform amd64 ."
261
+ puts build_cmd
262
+ result = system(build_cmd)
238
263
 
239
- puts_and_system "docker tag #{image_name}:latest #{image_name}:#{rev}"
240
- puts_and_system "docker tag #{image_name}:#{rev} #{full_image_name}"
264
+ puts "Build Result #{result}"
265
+
266
+ if result
267
+ puts_and_system "docker tag #{image_name}:latest #{image_name}:#{rev}"
268
+ puts_and_system "docker tag #{image_name}:#{rev} #{full_image_name}"
269
+
270
+ puts_and_system "docker push #{container_repository}/#{image_name}:#{rev}"
271
+ return true
272
+ else
273
+ say "Build Did Not Succeed"
274
+ return false
275
+ end
241
276
 
242
- puts_and_system "docker push #{container_repository}/#{image_name}:#{rev}"
243
- return true
244
277
  end
245
278
 
246
279
  def yy
@@ -263,7 +296,7 @@ module Pfab
263
296
  end
264
297
 
265
298
  def get_current_sha
266
- `git rev-parse --short --verify HEAD`.chomp
299
+ `git rev-parse --short=8 --verify HEAD`.chomp
267
300
  end
268
301
 
269
302
  def set_kube_context
@@ -42,8 +42,17 @@ module Pfab
42
42
  }
43
43
  end
44
44
 
45
+
46
+ def deploy_id
47
+ "#{@data['application']}.#{application_type}.#{@data['deployed_name']}"
48
+ end
49
+
45
50
  def env_vars
46
- env_vars = { "DEPLOYED_NAME" => { value: @data['deployed_name'] } }
51
+
52
+ env_vars = { "DEPLOYED_NAME" => { value: @data['deployed_name'] },
53
+ "DEPLOY_ID" => { value: deploy_id },
54
+ "POD_ID" => { valueFrom: { fieldRef: { fieldPath: 'metadata.name' } } }
55
+ }
47
56
 
48
57
  # load defaults
49
58
  load_env_vars(env_vars, @data.dig("application_yaml", :environment))
@@ -5,6 +5,10 @@ module Pfab
5
5
  f << YAML.dump(job.deep_stringify_keys)
6
6
  end
7
7
 
8
+ def application_type
9
+ "cron"
10
+ end
11
+
8
12
  def job
9
13
  {
10
14
  apiVersion: "batch/v1beta1",
@@ -15,7 +19,8 @@ module Pfab
15
19
  labels: {
16
20
  application: @data['application'],
17
21
  "deployed-name" => @data['deployed_name'],
18
- "application-type" => "job",
22
+ "application-type" => application_type,
23
+ "deploy-id" => deploy_id
19
24
  }
20
25
  },
21
26
  spec: {
@@ -5,6 +5,10 @@ module Pfab
5
5
  f << YAML.dump(deployment.deep_stringify_keys)
6
6
  end
7
7
 
8
+ def application_type
9
+ "daemon"
10
+ end
11
+
8
12
  def deployment
9
13
  {
10
14
  kind: "Deployment",
@@ -15,7 +19,8 @@ module Pfab
15
19
  labels: {
16
20
  application: @data['application'],
17
21
  "deployed-name" => @data['deployed_name'],
18
- "application-type" => "daemon",
22
+ "application-type" => application_type,
23
+ "deploy-id" => deploy_id
19
24
  }
20
25
  },
21
26
  spec: {
@@ -5,6 +5,10 @@ module Pfab
5
5
  f << YAML.dump(job.deep_stringify_keys)
6
6
  end
7
7
 
8
+ def application_type
9
+ "job"
10
+ end
11
+
8
12
  def job
9
13
  {
10
14
  apiVersion: "batch/v1",
@@ -15,7 +19,8 @@ module Pfab
15
19
  labels: {
16
20
  application: @data['application'],
17
21
  "deployed-name" => @data['deployed_name'],
18
- "application-type" => "job",
22
+ "application-type" => application_type,
23
+ "deploy-id" => deploy_id
19
24
  }
20
25
  },
21
26
  spec: {
@@ -21,7 +21,8 @@ module Pfab
21
21
  labels: {
22
22
  application: @data['application'],
23
23
  "deployed-name" => @data['deployed_name'],
24
- }
24
+ },
25
+ annotations: service_annotations,
25
26
  },
26
27
  spec: {
27
28
  selector: {
@@ -38,6 +39,12 @@ module Pfab
38
39
  }
39
40
  end
40
41
 
42
+ def service_annotations
43
+ h = {}
44
+ h["traefik.ingress.kubernetes.io/service.serversscheme"] = "h2c" if get("protocol") == "h2c"
45
+ h
46
+ end
47
+
41
48
  def ingress
42
49
  {
43
50
  apiVersion: "networking.k8s.io/v1",
@@ -107,7 +114,6 @@ module Pfab
107
114
  "traefik.ingress.kubernetes.io/router.entrypoints" => "websecure",
108
115
  "traefik.ingress.kubernetes.io/router.tls" => "true"
109
116
  }
110
- h["ingress.kubernetes.io/protocol"] = "h2c" if get("protocol") == "h2c"
111
117
  h
112
118
  end
113
119
 
@@ -130,6 +136,10 @@ module Pfab
130
136
  get("readinessProbe") || default_probe
131
137
  end
132
138
 
139
+ def application_type
140
+ "web"
141
+ end
142
+
133
143
  def deployment
134
144
  {
135
145
  kind: "Deployment",
@@ -140,7 +150,8 @@ module Pfab
140
150
  labels: {
141
151
  application: @data['application'],
142
152
  "deployed-name" => @data['deployed_name'],
143
- "application-type" => "web",
153
+ "application-type" => application_type,
154
+ "deploy-id" => deploy_id
144
155
  }
145
156
  },
146
157
  spec: {
data/lib/pfab/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Pfab
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 19
4
+ MINOR = 22
5
5
  PATCH = 0
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.19.0 ruby lib
5
+ # stub: pfab 0.22.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "pfab".freeze
9
- s.version = "0.19.0"
9
+ s.version = "0.22.0"
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 = "2022-07-16"
14
+ s.date = "2022-07-21"
15
15
  s.description = "k8s helper".freeze
16
16
  s.email = "jdwyer@prefab.cloud".freeze
17
17
  s.executables = ["pfab".freeze]
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.files = [
23
23
  ".document",
24
24
  ".tool-versions",
25
+ "CODEOWNERS",
25
26
  "Gemfile",
26
27
  "Gemfile.lock",
27
28
  "LICENSE.txt",
@@ -43,31 +44,22 @@ Gem::Specification.new do |s|
43
44
  ]
44
45
  s.homepage = "http://github.com/prefab-cloud/pfab".freeze
45
46
  s.licenses = ["MIT".freeze]
46
- s.rubygems_version = "3.0.3.1".freeze
47
+ s.rubygems_version = "3.2.32".freeze
47
48
  s.summary = "helper gem".freeze
48
49
 
49
50
  if s.respond_to? :specification_version then
50
51
  s.specification_version = 4
52
+ end
51
53
 
52
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
- s.add_runtime_dependency(%q<commander>.freeze, [">= 0"])
54
- s.add_runtime_dependency(%q<activesupport>.freeze, [">= 0"])
55
- s.add_runtime_dependency(%q<pry-byebug>.freeze, [">= 0"])
56
- s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
57
- s.add_development_dependency(%q<bundler>.freeze, ["~> 1.0"])
58
- s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.4.9"])
59
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
60
- s.add_development_dependency(%q<test-unit>.freeze, [">= 0"])
61
- else
62
- s.add_dependency(%q<commander>.freeze, [">= 0"])
63
- s.add_dependency(%q<activesupport>.freeze, [">= 0"])
64
- s.add_dependency(%q<pry-byebug>.freeze, [">= 0"])
65
- s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
66
- s.add_dependency(%q<bundler>.freeze, ["~> 1.0"])
67
- s.add_dependency(%q<juwelier>.freeze, ["~> 2.4.9"])
68
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
69
- s.add_dependency(%q<test-unit>.freeze, [">= 0"])
70
- end
54
+ if s.respond_to? :add_runtime_dependency then
55
+ s.add_runtime_dependency(%q<commander>.freeze, [">= 0"])
56
+ s.add_runtime_dependency(%q<activesupport>.freeze, [">= 0"])
57
+ s.add_runtime_dependency(%q<pry-byebug>.freeze, [">= 0"])
58
+ s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
59
+ s.add_development_dependency(%q<bundler>.freeze, ["~> 1.0"])
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"])
71
63
  else
72
64
  s.add_dependency(%q<commander>.freeze, [">= 0"])
73
65
  s.add_dependency(%q<activesupport>.freeze, [">= 0"])
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.19.0
4
+ version: 0.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Dwyer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-16 00:00:00.000000000 Z
11
+ date: 2022-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander
@@ -133,6 +133,7 @@ extra_rdoc_files:
133
133
  files:
134
134
  - ".document"
135
135
  - ".tool-versions"
136
+ - CODEOWNERS
136
137
  - Gemfile
137
138
  - Gemfile.lock
138
139
  - LICENSE.txt
@@ -170,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
171
  - !ruby/object:Gem::Version
171
172
  version: '0'
172
173
  requirements: []
173
- rubygems_version: 3.0.3.1
174
+ rubygems_version: 3.2.32
174
175
  signing_key:
175
176
  specification_version: 4
176
177
  summary: helper gem