vidar 1.7.0 → 1.8.0.rc4

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: eb2df292256761c82b4c0faab70db10cb3fcf9f6b28a3777ba5843cb9949deea
4
- data.tar.gz: eed9221ba5e8418ecc518b7c2168a469235bc383949c32d09e23f0ff3086a5b1
3
+ metadata.gz: 681a670d387a294ee0cec0976d8a616dcd8d762c53c9eaa941f933e89471c8e2
4
+ data.tar.gz: 39476480b15318b08f5014bbd9fe12349a667265d335e784a7a4232c8790768c
5
5
  SHA512:
6
- metadata.gz: 6d949b5d18bafd71eed2722831c68b5bae941cf1e7fb62f8f5cb8c7b3a2e8c99ed54893a2982eecaf61857b984f772f5b40a1682504d538f1d97dafa9ac06b47
7
- data.tar.gz: 1ed526fadb5d7780c1fdeaf6847793a7265329d1a29944a7a430245a0adcbd32efc33e15ef24f6f336fa8eec7cb1106bdea9d5e2e827a756788a3a7e2c518981
6
+ metadata.gz: 6573c96793a0b85b68abf920085da0ab3b60876da440c7d232078d416f92a7bd7a6f8bba6f5ab842100dd4872b002594d1d71673c3ca47321b3db10b9ff8de39
7
+ data.tar.gz: 8e7712f557a38053a3810da0a4b92bfa45f86f6f0a6a2f57adf351dcb4c24269bd4af6484d471dbcd561b33f9c7f888c33d4e43a936f2629fc2155e79335e946
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/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.rc4)
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/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.rc4'.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.rc4
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
@@ -241,11 +115,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
241
115
  version: '3.0'
242
116
  required_rubygems_version: !ruby/object:Gem::Requirement
243
117
  requirements:
244
- - - ">="
118
+ - - ">"
245
119
  - !ruby/object:Gem::Version
246
- version: '0'
120
+ version: 1.3.1
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