vidar 1.7.0 → 1.8.0

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: eb2df292256761c82b4c0faab70db10cb3fcf9f6b28a3777ba5843cb9949deea
4
- data.tar.gz: eed9221ba5e8418ecc518b7c2168a469235bc383949c32d09e23f0ff3086a5b1
3
+ metadata.gz: 377ce0e0c614b14f20c1675d24f843c76bcce4a1631a49cbfaa4403ae0866a06
4
+ data.tar.gz: d7e15d2fcebde93e16a917667bcb722f6796c8e1a6f7ddd8ddca6628db4b0ec3
5
5
  SHA512:
6
- metadata.gz: 6d949b5d18bafd71eed2722831c68b5bae941cf1e7fb62f8f5cb8c7b3a2e8c99ed54893a2982eecaf61857b984f772f5b40a1682504d538f1d97dafa9ac06b47
7
- data.tar.gz: 1ed526fadb5d7780c1fdeaf6847793a7265329d1a29944a7a430245a0adcbd32efc33e15ef24f6f336fa8eec7cb1106bdea9d5e2e827a756788a3a7e2c518981
6
+ metadata.gz: ff6e0fd051afb356d8b5d84c3fb6e90b6402aa1bcc7a9ce01cfbcb1c97c86a4c90fdf440ec767ccd52aa9a7e8ea4e7866a1cd070915662e4dcefb971754218bb
7
+ data.tar.gz: 9117d313c5ffcefb791fcbde326621a154e6999f396c651def96c02ef70b4a296caa983a25ea8ceba1127e7ae6e2034767744509003ccd56267625a876d1d6ab
data/.bundler-version CHANGED
@@ -1 +1 @@
1
- 2.4.4
1
+ 2.4.13
@@ -1,14 +1,13 @@
1
- # automatically approve PRs submitted by Dependabot or Renofidev
2
- # this will allow Dependabot to automatically merge dependency update PRs where CI passes
3
- # from: https://github.com/hmarr/auto-approve-action
4
- name: Auto approve dependency upgrades PRs
5
- on: pull_request_target
1
+ name: Auto approve dependency upgrades and hot-fix PRs
2
+ on:
3
+ pull_request_target:
4
+ types: [labeled, unlabeled, edited, ready_for_review, review_requested, auto_merge_enabled]
6
5
 
7
6
  jobs:
8
7
  auto-approve:
9
8
  runs-on: ubuntu-latest
10
9
  steps:
11
- - uses: hmarr/auto-approve-action@v2
12
- if: github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]' || github.actor == 'renofidev'
13
- with:
14
- github-token: "${{ secrets.GITHUB_TOKEN }}"
10
+ - uses: hmarr/auto-approve-action@v3
11
+ if: github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]' || github.actor == 'renofidev' || contains(toJson(github), 'HOTFIX-AUTO-APPROVE')
12
+ with:
13
+ github-token: "${{ secrets.GITHUB_TOKEN }}"
@@ -15,7 +15,7 @@ jobs:
15
15
  runs-on: ubuntu-latest
16
16
  steps:
17
17
  - name: automerge-dependencies
18
- uses: pascalgn/automerge-action@v0.14.3
18
+ uses: pascalgn/automerge-action@v0.15.6
19
19
  env:
20
20
  GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
21
21
  MERGE_METHOD: squash
@@ -15,7 +15,7 @@ jobs:
15
15
  runs-on: ubuntu-latest
16
16
  steps:
17
17
  - name: automerge
18
- uses: pascalgn/automerge-action@v0.14.3
18
+ uses: pascalgn/automerge-action@v0.15.6
19
19
  env:
20
20
  GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
21
21
  MERGE_METHOD: squash
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- ruby-version: ['3.0', 3.1]
14
+ ruby-version: [3.1, 3.2]
15
15
 
16
16
  steps:
17
17
  - uses: actions/checkout@v3
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.8.0 - 2023-06-02
4
+
5
+ Add support for HTTPS_PROXY automatically set for each kubectl command
6
+
3
7
  ## 1.7.0 - 2023-01-23
4
8
 
5
9
  Add support for publishing Honeycomb markers on deployment.
data/Gemfile CHANGED
@@ -1,3 +1,13 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+
5
+ gem 'awesome_print'
6
+ gem 'bundler'
7
+ gem 'pry'
8
+ gem 'rake'
9
+ gem 'rspec'
10
+ gem 'rubocop'
11
+ gem 'rubocop-rake'
12
+ gem 'rubocop-rspec'
13
+ gem 'webmock'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vidar (1.7.0)
4
+ vidar (1.8.0)
5
5
  colorize
6
6
  faraday
7
7
  thor (~> 1.0)
@@ -9,7 +9,7 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- addressable (2.8.1)
12
+ addressable (2.8.4)
13
13
  public_suffix (>= 2.0.2, < 6.0)
14
14
  ast (2.4.2)
15
15
  awesome_print (1.9.2)
@@ -18,15 +18,15 @@ GEM
18
18
  crack (0.4.5)
19
19
  rexml
20
20
  diff-lcs (1.5.0)
21
- faraday (2.7.4)
21
+ faraday (2.7.5)
22
22
  faraday-net_http (>= 2.0, < 3.1)
23
23
  ruby2_keywords (>= 0.0.4)
24
24
  faraday-net_http (3.0.2)
25
25
  hashdiff (1.0.1)
26
26
  json (2.6.3)
27
27
  method_source (1.0.0)
28
- parallel (1.22.1)
29
- parser (3.2.0.0)
28
+ parallel (1.23.0)
29
+ parser (3.2.2.1)
30
30
  ast (~> 2.4.1)
31
31
  pry (0.14.2)
32
32
  coderay (~> 1.1)
@@ -34,43 +34,46 @@ GEM
34
34
  public_suffix (5.0.1)
35
35
  rainbow (3.1.1)
36
36
  rake (13.0.6)
37
- regexp_parser (2.6.1)
37
+ regexp_parser (2.8.0)
38
38
  rexml (3.2.5)
39
39
  rspec (3.12.0)
40
40
  rspec-core (~> 3.12.0)
41
41
  rspec-expectations (~> 3.12.0)
42
42
  rspec-mocks (~> 3.12.0)
43
- rspec-core (3.12.0)
43
+ rspec-core (3.12.2)
44
44
  rspec-support (~> 3.12.0)
45
- rspec-expectations (3.12.2)
45
+ rspec-expectations (3.12.3)
46
46
  diff-lcs (>= 1.2.0, < 2.0)
47
47
  rspec-support (~> 3.12.0)
48
- rspec-mocks (3.12.3)
48
+ rspec-mocks (3.12.5)
49
49
  diff-lcs (>= 1.2.0, < 2.0)
50
50
  rspec-support (~> 3.12.0)
51
51
  rspec-support (3.12.0)
52
- rubocop (1.43.0)
52
+ rubocop (1.51.0)
53
53
  json (~> 2.3)
54
54
  parallel (~> 1.10)
55
55
  parser (>= 3.2.0.0)
56
56
  rainbow (>= 2.2.2, < 4.0)
57
57
  regexp_parser (>= 1.8, < 3.0)
58
58
  rexml (>= 3.2.5, < 4.0)
59
- rubocop-ast (>= 1.24.1, < 2.0)
59
+ rubocop-ast (>= 1.28.0, < 2.0)
60
60
  ruby-progressbar (~> 1.7)
61
61
  unicode-display_width (>= 2.4.0, < 3.0)
62
- rubocop-ast (1.24.1)
63
- parser (>= 3.1.1.0)
64
- rubocop-capybara (2.17.0)
62
+ rubocop-ast (1.29.0)
63
+ parser (>= 3.2.1.0)
64
+ rubocop-capybara (2.18.0)
65
65
  rubocop (~> 1.41)
66
+ rubocop-factory_bot (2.23.1)
67
+ rubocop (~> 1.33)
66
68
  rubocop-rake (0.6.0)
67
69
  rubocop (~> 1.0)
68
- rubocop-rspec (2.18.0)
70
+ rubocop-rspec (2.22.0)
69
71
  rubocop (~> 1.33)
70
- rubocop-capybara
71
- ruby-progressbar (1.11.0)
72
+ rubocop-capybara (~> 2.17)
73
+ rubocop-factory_bot (~> 2.22)
74
+ ruby-progressbar (1.13.0)
72
75
  ruby2_keywords (0.0.5)
73
- thor (1.2.1)
76
+ thor (1.2.2)
74
77
  unicode-display_width (2.4.2)
75
78
  webmock (3.18.1)
76
79
  addressable (>= 2.8.0)
@@ -93,4 +96,4 @@ DEPENDENCIES
93
96
  webmock
94
97
 
95
98
  BUNDLED WITH
96
- 2.3.26
99
+ 2.4.12
data/README.md CHANGED
@@ -92,6 +92,8 @@ deployments:
92
92
  slack_webhook_url: https://hooks.slack.com/services/ASCKNZ0vug2R3Ydo/ASCKNZ0vug2R3Ydo/ASCKNZ0vug2R3Ydo
93
93
  # Name of the Honeycomb dataset to create a deployment marker in
94
94
  honeycomb_dataset: staging
95
+ # https_proxy address used to connect private k8s control plane endpoint
96
+ https_proxy: localhost:8888
95
97
  # docker-compose file, optional, default value: docker-compose.ci.yml
96
98
  compose_file: docker-compose.ci.yml
97
99
  # default_branch, optional, default value: main or master (auto-detected from local branches)
data/lib/vidar/cli.rb CHANGED
@@ -14,6 +14,11 @@ module Vidar
14
14
  Run.docker_compose("run #{target} #{options[:command]}") || exit(1)
15
15
  end
16
16
 
17
+ desc "version", "Prints current version"
18
+ def version
19
+ puts Vidar::VERSION
20
+ end
21
+
17
22
  desc "pull", "Pull existing docker images to leverage docker caching"
18
23
  def pull
19
24
  Log.info "Pulling #{Config.get!(:image)} tags"
data/lib/vidar/config.rb CHANGED
@@ -14,7 +14,7 @@ module Vidar
14
14
  console_command: -> { "bin/console" },
15
15
  base_stage_name: -> { "base" },
16
16
  release_stage_name: -> { "release" },
17
- honeycomb_api_key: -> { ENV['HONEYCOMB_API_KEY'] },
17
+ honeycomb_api_key: -> { ENV['HONEYCOMB_API_KEY'] },
18
18
  }.freeze
19
19
 
20
20
  class << self
@@ -59,10 +59,18 @@ module Vidar
59
59
  value&.empty? ? nil : value
60
60
  end
61
61
 
62
+ def honeycomb_env_api_key(env)
63
+ ENV["HONEYCOMB_API_KEY_#{env.upcase}"]
64
+ end
65
+
62
66
  def deploy_config
67
+ deploy_configs[get!(:kubectl_context)] ||= build_deploy_config(get!(:kubectl_context))
68
+ end
69
+
70
+ def build_deploy_config(kubectl_context)
63
71
  deployments = get(:deployments)
64
72
  deployments = {} unless deployments.is_a?(Hash)
65
- deployment = deployments[get!(:kubectl_context)]
73
+ deployment = deployments[kubectl_context]
66
74
 
67
75
  if deployment.nil?
68
76
  Log.error "ERROR: could not find deployment config for #{get!(:kubectl_context)} context"
@@ -75,6 +83,10 @@ module Vidar
75
83
  DeployConfig.new(deployment)
76
84
  end
77
85
 
86
+ def deploy_configs
87
+ @deploy_configs ||= {}
88
+ end
89
+
78
90
  def branches
79
91
  `git for-each-ref --format='%(refname:short)' refs/heads/*`.split("\n")
80
92
  end
@@ -6,7 +6,8 @@ module Vidar
6
6
 
7
7
  attr_reader :name, :url,
8
8
  :default_color, :success_color, :failure_color,
9
- :slack_webhook_url, :sentry_webhook_url, :honeycomb_dataset
9
+ :slack_webhook_url, :sentry_webhook_url, :honeycomb_dataset,
10
+ :https_proxy
10
11
 
11
12
  def initialize(options)
12
13
  @name = options.fetch(:name)
@@ -19,6 +20,8 @@ module Vidar
19
20
  @slack_webhook_url = options[:slack_webhook_url]
20
21
  @sentry_webhook_url = options[:sentry_webhook_url]
21
22
  @honeycomb_dataset = options[:honeycomb_dataset]
23
+
24
+ @https_proxy = options[:https_proxy]
22
25
  end
23
26
  end
24
27
  end
@@ -59,6 +59,11 @@ module Vidar
59
59
  end
60
60
 
61
61
  def call
62
+ create_legacy_marker
63
+ create_marker
64
+ end
65
+
66
+ def create_legacy_marker
62
67
  return false unless configured?
63
68
 
64
69
  response = connection.post do |req|
@@ -74,6 +79,22 @@ module Vidar
74
79
  false
75
80
  end
76
81
 
82
+ def create_marker
83
+ return false unless dataset && Config.honeycomb_env_api_key(dataset)
84
+
85
+ response = connection.post do |req|
86
+ req.url "https://api.honeycomb.io/1/markers/__all__"
87
+ req.headers['Content-Type'] = 'application/json'
88
+ req.headers['X-Honeycomb-Team'] = Config.honeycomb_env_api_key(dataset).to_s
89
+ req.body = data.to_json
90
+ end
91
+
92
+ return true if response.status == 201
93
+
94
+ warn "Honeycomb marker not created: status: #{response.status} response: #{response.body}"
95
+ false
96
+ end
97
+
77
98
  def data
78
99
  {
79
100
  message: "#{success? ? 'Successful' : 'Failed'} deploy of #{github} revision #{revision} - #{revision_name}",
@@ -52,9 +52,9 @@ module Vidar
52
52
 
53
53
  def kubectl_get
54
54
  if namespace == "all"
55
- `kubectl get pods --all-namespaces -o json`
55
+ `#{Run.kubectl_envs_string}kubectl get pods --all-namespaces -o json`
56
56
  else
57
- `kubectl get pods -n #{namespace} -o json`
57
+ `#{Run.kubectl_envs_string}kubectl get pods -n #{namespace} -o json`
58
58
  end
59
59
  end
60
60
 
data/lib/vidar/run.rb CHANGED
@@ -10,8 +10,13 @@ module Vidar
10
10
  system("#{args.join(' ')} docker-compose -f #{Config.get!(:compose_file)} #{command}") || exit(1)
11
11
  end
12
12
 
13
- def kubectl(command)
14
- system("kubectl --namespace=#{Config.get!(:namespace)} #{command}") || exit(1)
13
+ def kubectl(command, namespace: Config.get!(:namespace))
14
+ system("#{kubectl_envs_string}kubectl --namespace=#{namespace} #{command}") || exit(1)
15
+ end
16
+
17
+ def kubectl_envs_string
18
+ https_proxy = Config.deploy_config.https_proxy
19
+ "HTTPS_PROXY=#{https_proxy} " if https_proxy
15
20
  end
16
21
  end
17
22
  end
data/lib/vidar/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vidar
2
- VERSION = '1.7.0'.freeze
2
+ VERSION = '1.8.0'.freeze
3
3
  end
data/vidar.gemspec CHANGED
@@ -29,14 +29,4 @@ Gem::Specification.new do |spec|
29
29
  spec.add_dependency 'colorize'
30
30
  spec.add_dependency 'faraday'
31
31
  spec.add_dependency 'thor', '~> 1.0'
32
-
33
- spec.add_development_dependency 'awesome_print'
34
- spec.add_development_dependency 'bundler'
35
- spec.add_development_dependency 'pry'
36
- spec.add_development_dependency 'rake'
37
- spec.add_development_dependency 'rspec'
38
- spec.add_development_dependency 'rubocop'
39
- spec.add_development_dependency 'rubocop-rake'
40
- spec.add_development_dependency 'rubocop-rspec'
41
- spec.add_development_dependency 'webmock'
42
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vidar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Krzysztof Knapik
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-01-23 00:00:00.000000000 Z
12
+ date: 2023-06-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: colorize
@@ -53,132 +53,6 @@ dependencies:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '1.0'
56
- - !ruby/object:Gem::Dependency
57
- name: awesome_print
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- - !ruby/object:Gem::Dependency
71
- name: bundler
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: '0'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: '0'
84
- - !ruby/object:Gem::Dependency
85
- name: pry
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: '0'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: '0'
98
- - !ruby/object:Gem::Dependency
99
- name: rake
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: '0'
112
- - !ruby/object:Gem::Dependency
113
- name: rspec
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- - !ruby/object:Gem::Dependency
127
- name: rubocop
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- version: '0'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- version: '0'
140
- - !ruby/object:Gem::Dependency
141
- name: rubocop-rake
142
- requirement: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- version: '0'
147
- type: :development
148
- prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: '0'
154
- - !ruby/object:Gem::Dependency
155
- name: rubocop-rspec
156
- requirement: !ruby/object:Gem::Requirement
157
- requirements:
158
- - - ">="
159
- - !ruby/object:Gem::Version
160
- version: '0'
161
- type: :development
162
- prerelease: false
163
- version_requirements: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: '0'
168
- - !ruby/object:Gem::Dependency
169
- name: webmock
170
- requirement: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- version: '0'
175
- type: :development
176
- prerelease: false
177
- version_requirements: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: '0'
182
56
  description:
183
57
  email:
184
58
  - knapo@knapo.net
@@ -245,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
119
  - !ruby/object:Gem::Version
246
120
  version: '0'
247
121
  requirements: []
248
- rubygems_version: 3.4.4
122
+ rubygems_version: 3.4.12
249
123
  signing_key:
250
124
  specification_version: 4
251
125
  summary: K8s deployment tools based on thor