krane 2.3.3 → 2.3.7

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: cf190e8b0df95b836f077aaeb6bd1608f22413d6ca2f45c7fb0242adddd11568
4
- data.tar.gz: 49f9d6bf9c34ee0865fbcc650c880ba7f13ded1edf8f7ce37d2eb6e9dc92a48e
3
+ metadata.gz: dd1bb79abda9d85abeb1fcdc8a74d11643e45bc793e4d2b26968ca06630f59c4
4
+ data.tar.gz: ac8a426ccd104579c100bcb45c114c6fbf686a3329b8cd8e540def30fc693d16
5
5
  SHA512:
6
- metadata.gz: c455e5e15537081d97e49a3e288a07c43d00debf1df27588d44f313a61b52705befcc8116ad8e0ec577e604066d307b25035c25e64e6effe56d600df01d95546
7
- data.tar.gz: 2593795f45760efd470e5ceb41c359cf783ac1ef86cfaf887eb0e63ddc3fe0708ee2b26994c61f77df48f27e53555097af48b7df2cae032af0be722fa930d5e4
6
+ metadata.gz: 9291109ec07bc72ea6508b4f0368690754a65f39298d4a338ad02fa62c13f4d8d44746f39214e03f04631f1b88367f91e38a23e8bc30d609f0dc4046bf7eed60
7
+ data.tar.gz: f53a5e4cedbb7e804ae90a88c1c3e2044b87b16841ce921e90d0217f88499db71f7abba5f6ca8564275d3f7befe746528830b13d27da4ead0099cde4efd99a54
@@ -0,0 +1,75 @@
1
+ name: Krane CI
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ ruby-tests:
7
+ runs-on: ubuntu-latest
8
+
9
+ name: "Tests - Ruby ${{ matrix.ruby }} with k8s ${{ matrix.kubernetes_version }}"
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ ruby:
14
+ - '3.0' # With k8s 1.23
15
+ - '3.0' # With k8s 1.22
16
+ - '3.0' # With k8s 1.21
17
+ - '3.0' # With k8s 1.20
18
+ - '2.7' # With k8s 1.19
19
+ - '2.6.6' # With k8s 1.18
20
+ - '2.6.6' # With k8s 1.17
21
+ include:
22
+ # Match kind images with chosen version https://github.com/kubernetes-sigs/kind/releases
23
+ - ruby: '3.0'
24
+ kind_version: 'v0.11.1'
25
+ kubernetes_version: '1.23.0'
26
+ kind_image: 'kindest/node:v1.23.0@sha256:49824ab1727c04e56a21a5d8372a402fcd32ea51ac96a2706a12af38934f81ac'
27
+ - ruby: '3.0'
28
+ kind_version: 'v0.11.1'
29
+ kubernetes_version: '1.22.0'
30
+ kind_image: 'kindest/node:v1.22.0@sha256:b8bda84bb3a190e6e028b1760d277454a72267a5454b57db34437c34a588d047'
31
+ - ruby: '3.0'
32
+ kind_version: 'v0.11.1'
33
+ kubernetes_version: '1.21.1'
34
+ kind_image: 'kindest/node:v1.21.1@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6'
35
+ - ruby: '3.0'
36
+ kind_version: 'v0.11.1'
37
+ kubernetes_version: '1.20.7'
38
+ kind_image: 'kindest/node:v1.20.7@sha256:cbeaf907fc78ac97ce7b625e4bf0de16e3ea725daf6b04f930bd14c67c671ff9'
39
+ - ruby: '2.7'
40
+ kind_version: 'v0.11.1'
41
+ kubernetes_version: '1.19.11'
42
+ kind_image: 'kindest/node:v1.19.11@sha256:07db187ae84b4b7de440a73886f008cf903fcf5764ba8106a9fd5243d6f32729'
43
+ - ruby: '2.6.6'
44
+ kind_version: 'v0.11.1'
45
+ kubernetes_version: '1.18.19'
46
+ kind_image: '1.18: kindest/node:v1.18.19@sha256:7af1492e19b3192a79f606e43c35fb741e520d195f96399284515f077b3b622c'
47
+ - ruby: '2.6.6'
48
+ kind_version: 'v0.11.1'
49
+ kubernetes_version: '1.17.17'
50
+ kind_image: 'kindest/node:v1.17.17@sha256:66f1d0d91a88b8a001811e2f1054af60eef3b669a9a74f9b6db871f2f1eeed00'
51
+
52
+ steps:
53
+ - uses: actions/checkout@v2
54
+
55
+ - name: Set up Ruby ${{ matrix.ruby }}
56
+ uses: ruby/setup-ruby@v1
57
+ with:
58
+ ruby-version: ${{ matrix.ruby }}
59
+ bundler-cache: true
60
+
61
+ - name: Setup kubectl
62
+ run: |
63
+ mkdir -p "${GITHUB_WORKSPACE}/bin"
64
+ curl -o "${GITHUB_WORKSPACE}/bin/kubectl" -LO "https://dl.k8s.io/release/v${{ matrix.kubernetes_version }}/bin/linux/amd64/kubectl"
65
+ chmod +x "${GITHUB_WORKSPACE}/bin/kubectl"
66
+ echo "PATH=$GITHUB_WORKSPACE/bin:${PATH}" >> $GITHUB_ENV
67
+
68
+ - uses: engineerd/setup-kind@v0.5.0
69
+ with:
70
+ version: "${{ matrix.kind_version }}"
71
+ image: "${{ matrix.kind_image }}"
72
+
73
+ - name: Run tests
74
+ run: |
75
+ bin/test
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ dev/flamegraph.svg
15
15
  dev/profile
16
16
  dev/flamegraph.pl
17
17
  .local-context
18
+ bin/kind
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  ## next
2
2
 
3
+ ## 2.3.6
4
+
5
+ - Update kubeclient for better Ruby 3.1 compatibility.
6
+
7
+ ## 2.3.5
8
+
9
+ - Psych 4 compatibility
10
+
11
+ ## 2.3.4
12
+
13
+ - Fix for [CVE-2021-41817](https://www.ruby-lang.org/en/news/2021/11/15/date-parsing-method-regexp-dos-cve-2021-41817/). See [ServicesDB action item here](https://services.shopify.io/action_items/definitions/isolated/59).
14
+
3
15
  ## 2.3.3
4
16
 
5
17
  - Another Psych 4.0 compatibility fix [#844](https://github.com/Shopify/krane/pull/844)
data/Rakefile CHANGED
@@ -7,6 +7,7 @@ Rake::TestTask.new(:integration_test) do |t|
7
7
  t.libs << "test"
8
8
  t.libs << "lib"
9
9
  t.test_files = FileList['test/integration/**/*_test.rb']
10
+ t.warning = !ENV.key?('CI')
10
11
  end
11
12
 
12
13
  desc("Run integration tests that CANNOT be run in parallel")
@@ -14,6 +15,7 @@ Rake::TestTask.new(:serial_integration_test) do |t|
14
15
  t.libs << "test"
15
16
  t.libs << "lib"
16
17
  t.test_files = FileList['test/integration-serial/**/*_test.rb']
18
+ t.warning = !ENV.key?('CI')
17
19
  end
18
20
 
19
21
  desc("Run unit tests")
@@ -21,6 +23,7 @@ Rake::TestTask.new(:unit_test) do |t|
21
23
  t.libs << "test"
22
24
  t.libs << "lib"
23
25
  t.test_files = FileList['test/unit/**/*_test.rb']
26
+ t.warning = !ENV.key?('CI')
24
27
  end
25
28
 
26
29
  desc("Run cli tests")
@@ -28,6 +31,7 @@ Rake::TestTask.new(:cli_test) do |t|
28
31
  t.libs << "test"
29
32
  t.libs << "lib"
30
33
  t.test_files = FileList['test/exe/**/*_test.rb']
34
+ t.warning = !ENV.key?('CI')
31
35
  end
32
36
 
33
37
  desc("Run all tests")
data/bin/test CHANGED
@@ -27,9 +27,10 @@ if [[ ${PARALLELISM:=0} -lt 1 ]]; then
27
27
  fi
28
28
  fi
29
29
 
30
- if [[ ${CI:="0"} == "1" ]]; then
31
- echo "--- :ruby: Bundle Install"
32
- bundle install --jobs 4
30
+ if [[ "${CI:-0}" != "0" ]]; then
31
+ SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
32
+ echo "kind-kind" > "${SCRIPT_DIR}/../.local-context"
33
+ PARALLELISM=2
33
34
  fi
34
35
 
35
36
  print_header "Run CLI Tests"
data/dev.yml CHANGED
@@ -3,20 +3,20 @@ name: krane
3
3
  up:
4
4
  - ruby: 2.6.6 # Matches gemspec
5
5
  - bundler
6
- - homebrew:
7
- - minikube
8
- - hyperkit
9
6
  - custom:
10
- name: Install the minikube fork of driver-hyperkit
11
- met?: command -v docker-machine-driver-hyperkit
12
- meet: curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-hyperkit && sudo install -o root -g wheel -m 4755 docker-machine-driver-hyperkit /usr/local/bin/ && rm ./docker-machine-driver-hyperkit
7
+ name: Install Kubernetes in Docker (KinD)
8
+ met?: bin/kind version 2>&1 | grep -q v0.11.1
9
+ meet: |
10
+ mkdir -p bin
11
+ curl -sLo bin/kind "https://github.com/kubernetes-sigs/kind/releases/download/v0.11.1/kind-darwin-amd64"
12
+ chmod +x bin/kind
13
13
  - custom:
14
- name: Minikube Cluster
15
- met?: test $(minikube status | grep Running | wc -l) -ge 2 && $(minikube status | grep -q 'Configured')
16
- meet: minikube start --kubernetes-version=v1.18.18 --vm-driver=hyperkit
17
- down: minikube stop
14
+ name: Create KinD Cluster
15
+ met?: bin/kind get clusters | grep -q krane
16
+ meet: bin/kind create cluster --name krane
17
+ down: |
18
+ ((bin/kind get clusters | grep -q krane) && bin/kind delete cluster --name krane) || true
18
19
  commands:
19
- reset-minikube: minikube delete && rm -rf ~/.minikube
20
20
  test:
21
21
  run: bin/test
22
22
  tophat:
data/krane.gemspec CHANGED
@@ -27,19 +27,19 @@ Gem::Specification.new do |spec|
27
27
 
28
28
  spec.required_ruby_version = '>= 2.6.0'
29
29
  spec.add_dependency("activesupport", ">= 5.0")
30
- spec.add_dependency("kubeclient", "~> 4.3")
30
+ spec.add_dependency("kubeclient", "~> 4.9")
31
31
  spec.add_dependency("googleauth", "~> 0.8")
32
32
  spec.add_dependency("ejson", "~> 1.0")
33
33
  spec.add_dependency("colorize", "~> 0.8")
34
34
  spec.add_dependency("statsd-instrument", ['>= 2.8', "< 4"])
35
35
  spec.add_dependency("oj", "~> 3.0")
36
36
  spec.add_dependency("concurrent-ruby", "~> 1.1")
37
- spec.add_dependency("jsonpath", "~> 0.9.6")
37
+ spec.add_dependency("jsonpath", "~> 1.0")
38
38
  spec.add_dependency("thor", ">= 1.0", "< 2.0")
39
39
 
40
40
  # Basics
41
41
  spec.add_development_dependency("bundler")
42
- spec.add_development_dependency("rake", "~> 10.0")
42
+ spec.add_development_dependency("rake", "~> 13.0")
43
43
  spec.add_development_dependency("yard")
44
44
 
45
45
  # Test framework
data/lib/krane/common.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'active_support'
4
+ require 'active_support/isolated_execution_state' if ActiveSupport::VERSION::MAJOR > 6
3
5
  require 'active_support/core_ext/object/blank'
4
6
  require 'active_support/core_ext/hash/reverse_merge'
5
7
  require 'active_support/core_ext/hash/slice'
@@ -584,7 +584,12 @@ module Krane
584
584
  # If the resource template uses generateName, validating with apply will fail
585
585
  def validate_with_local_dry_run(kubectl)
586
586
  verb = deploy_method == :apply ? "apply" : "create"
587
- command = [verb, "-f", file_path, "--dry-run", "--output=name"]
587
+ command = if kubectl.client_version >= Gem::Version.new('1.18')
588
+ [verb, "-f", file_path, "--dry-run=client", "--output=name"]
589
+ else
590
+ [verb, "-f", file_path, "--dry-run", "--output=name"]
591
+ end
592
+
588
593
  kubectl.run(*command, log_failure: false, output_is_sensitive: sensitive_template_content?,
589
594
  retry_whitelist: [:client_timeout, :empty, :context_deadline], attempts: 3, use_namespace: !global?)
590
595
  end
@@ -73,7 +73,7 @@ module Krane
73
73
  file_basename = File.basename(filename)
74
74
  @logger.info("Rendering #{file_basename}...")
75
75
  implicit = []
76
- YAML.parse_stream(rendered_content, "<rendered> #{filename}") { |d| implicit << d.implicit }
76
+ YAML.parse_stream(rendered_content, filename: "<rendered> #{filename}") { |d| implicit << d.implicit }
77
77
  if rendered_content.present?
78
78
  stream.puts "---\n" if implicit.first
79
79
  stream.puts rendered_content
data/lib/krane/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Krane
3
- VERSION = "2.3.3"
3
+ VERSION = "2.3.7"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: krane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.3
4
+ version: 2.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Verey
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2021-11-24 00:00:00.000000000 Z
13
+ date: 2022-01-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -32,14 +32,14 @@ dependencies:
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: '4.3'
35
+ version: '4.9'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '4.3'
42
+ version: '4.9'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: googleauth
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -136,14 +136,14 @@ dependencies:
136
136
  requirements:
137
137
  - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: 0.9.6
139
+ version: '1.0'
140
140
  type: :runtime
141
141
  prerelease: false
142
142
  version_requirements: !ruby/object:Gem::Requirement
143
143
  requirements:
144
144
  - - "~>"
145
145
  - !ruby/object:Gem::Version
146
- version: 0.9.6
146
+ version: '1.0'
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: thor
149
149
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '10.0'
187
+ version: '13.0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: '10.0'
194
+ version: '13.0'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: yard
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -416,11 +416,10 @@ files:
416
416
  - ".github/ISSUE_TEMPLATE.md"
417
417
  - ".github/probots.yml"
418
418
  - ".github/pull_request_template.md"
419
+ - ".github/workflows/ci.yml"
419
420
  - ".gitignore"
420
421
  - ".rubocop-http---shopify-github-io-ruby-style-guide-rubocop-yml"
421
422
  - ".rubocop.yml"
422
- - ".shopify-build/VERSION"
423
- - ".shopify-build/krane.yml"
424
423
  - 1.0-Upgrade.md
425
424
  - CHANGELOG.md
426
425
  - CODE_OF_CONDUCT.md
@@ -1 +0,0 @@
1
- v1
@@ -1,48 +0,0 @@
1
- containers:
2
- default:
3
- docker: circleci/ruby:2.6.6
4
-
5
- steps:
6
- - label: Lint
7
- timeout: 5m
8
- run:
9
- - bundle: ~
10
- - bundle exec rubocop
11
- - label: 'Run Test Suite (:kubernetes: 1.21-latest :ruby: 3.0)'
12
- command: bin/ci
13
- agents:
14
- queue: k8s-ci
15
- env:
16
- LOGGING_LEVEL: "4"
17
- KUBERNETES_VERSION: v1.21-latest
18
- RUBY_VERSION: "3.0"
19
- - label: 'Run Test Suite (:kubernetes: 1.20-latest :ruby: 3.0)'
20
- command: bin/ci
21
- agents:
22
- queue: k8s-ci
23
- env:
24
- LOGGING_LEVEL: "4"
25
- KUBERNETES_VERSION: v1.20-latest
26
- RUBY_VERSION: "3.0"
27
- - label: 'Run Test Suite (:kubernetes: 1.19-latest :ruby: 2.7)'
28
- command: bin/ci
29
- agents:
30
- queue: k8s-ci
31
- env:
32
- LOGGING_LEVEL: "4"
33
- KUBERNETES_VERSION: v1.19-latest
34
- RUBY_VERSION: "2.7"
35
- - label: 'Run Test Suite (:kubernetes: 1.18-latest)'
36
- command: bin/ci
37
- agents:
38
- queue: k8s-ci
39
- env:
40
- LOGGING_LEVEL: "4"
41
- KUBERNETES_VERSION: v1.18-latest
42
- - label: 'Run Test Suite (:kubernetes: 1.17-latest)'
43
- command: bin/ci
44
- agents:
45
- queue: k8s-ci
46
- env:
47
- LOGGING_LEVEL: "4"
48
- KUBERNETES_VERSION: v1.17-latest