vidar 1.15.1 → 1.17.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/.bundler-version +1 -1
- data/.github/dependabot.yml +40 -1
- data/.github/workflows/auto-approve.yml +8 -6
- data/.github/workflows/auto-merge.yml +62 -15
- data/.github/workflows/ci.yml +3 -3
- data/.gitignore +2 -1
- data/.standard.yml +2 -0
- data/CHANGELOG.md +22 -0
- data/Gemfile +11 -10
- data/Gemfile.lock +78 -44
- data/Rakefile +5 -6
- data/exe/vidar +1 -1
- data/lib/vidar/cli.rb +15 -13
- data/lib/vidar/config.rb +57 -12
- data/lib/vidar/deploy_status.rb +22 -21
- data/lib/vidar/honeycomb_notification.rb +16 -10
- data/lib/vidar/interpolation.rb +1 -1
- data/lib/vidar/k8s/container.rb +30 -3
- data/lib/vidar/k8s/pod_set.rb +27 -8
- data/lib/vidar/log.rb +1 -1
- data/lib/vidar/run.rb +2 -2
- data/lib/vidar/sentry_notification.rb +4 -1
- data/lib/vidar/slack_notification.rb +10 -7
- data/lib/vidar/version.rb +1 -1
- data/lib/vidar.rb +20 -20
- data/vidar.gemspec +18 -18
- metadata +12 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c9f70e2aea16ca7648801c10d594785cf71cc4059e723075a7e0a5ac2df28e7a
|
|
4
|
+
data.tar.gz: e02d0cfe17b044eb62d11fee018e15956c02835ab7bb947a224b5a3fcfdf48bc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 88bb3c398a191d7b02a6d2591653b5ddc8ed88a1d2432dd84e2d0188fdcbb3873ea5f20eb7ca00c3b2f3bc49b03f030f3c12dcb4799d306741fa4d0f668489f4
|
|
7
|
+
data.tar.gz: afe4490c85deca103d2b07f720b36710fae66fc7acc60ffb91fbf4c235ac4fa027ecb01067a56710a3bafb9e0d357eeeafb3aa41d729b0c0a43b607ca4c3f3b1
|
data/.bundler-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4.0.10
|
data/.github/dependabot.yml
CHANGED
|
@@ -6,10 +6,49 @@ updates:
|
|
|
6
6
|
schedule:
|
|
7
7
|
interval: "weekly"
|
|
8
8
|
day: "monday"
|
|
9
|
-
time: "
|
|
9
|
+
time: "11:00"
|
|
10
10
|
timezone: "UTC"
|
|
11
|
+
cooldown:
|
|
12
|
+
default-days: 2
|
|
13
|
+
include:
|
|
14
|
+
- "*"
|
|
11
15
|
commit-message:
|
|
12
16
|
prefix: "[dependabot]"
|
|
17
|
+
groups:
|
|
18
|
+
ruby-minor-and-patch:
|
|
19
|
+
applies-to: version-updates
|
|
20
|
+
update-types:
|
|
21
|
+
- "minor"
|
|
22
|
+
- "patch"
|
|
13
23
|
labels:
|
|
24
|
+
- "dependencies"
|
|
14
25
|
- "automerge"
|
|
26
|
+
ignore:
|
|
27
|
+
- dependency-name: "*"
|
|
28
|
+
update-types:
|
|
29
|
+
- "version-update:semver-major"
|
|
30
|
+
|
|
31
|
+
- package-ecosystem: "github-actions"
|
|
32
|
+
directory: "/"
|
|
33
|
+
schedule:
|
|
34
|
+
interval: "weekly"
|
|
35
|
+
day: "monday"
|
|
36
|
+
time: "11:00"
|
|
37
|
+
timezone: "UTC"
|
|
38
|
+
cooldown:
|
|
39
|
+
default-days: 2
|
|
40
|
+
commit-message:
|
|
41
|
+
prefix: "[dependabot]"
|
|
42
|
+
groups:
|
|
43
|
+
actions-minor-and-patch:
|
|
44
|
+
applies-to: version-updates
|
|
45
|
+
update-types:
|
|
46
|
+
- "minor"
|
|
47
|
+
- "patch"
|
|
48
|
+
labels:
|
|
15
49
|
- "dependencies"
|
|
50
|
+
- "automerge"
|
|
51
|
+
ignore:
|
|
52
|
+
- dependency-name: "*"
|
|
53
|
+
update-types:
|
|
54
|
+
- "version-update:semver-major"
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
name: Auto approve
|
|
1
|
+
name: Auto approve hot-fix PRs
|
|
2
2
|
on:
|
|
3
3
|
pull_request_target:
|
|
4
|
-
types:
|
|
5
|
-
|
|
6
|
-
- ready_for_review
|
|
4
|
+
types: [opened, labeled, ready_for_review]
|
|
5
|
+
|
|
7
6
|
jobs:
|
|
8
7
|
auto-approve:
|
|
8
|
+
if: >
|
|
9
|
+
github.actor == 'renofidev' ||
|
|
10
|
+
contains(github.event.pull_request.labels.*.name, 'HOTFIX-AUTO-APPROVE') ||
|
|
11
|
+
contains(github.event.pull_request.labels.*.name, 'self-approve')
|
|
9
12
|
runs-on: ubuntu-latest
|
|
10
13
|
steps:
|
|
11
|
-
- uses: hmarr/auto-approve-action@
|
|
12
|
-
if: github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]' || github.actor == 'renofidev' || contains(github.event.pull_request.labels.*.name, 'HOTFIX-AUTO-APPROVE') || contains(github.event.pull_request.labels.*.name, 'self-approve') || contains(github.event.pull_request.labels.*.name, 'dependencies')
|
|
14
|
+
- uses: hmarr/auto-approve-action@f0939ea97e9205ef24d872e76833fa908a770363 # v4.0.0
|
|
13
15
|
with:
|
|
14
16
|
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
|
@@ -2,6 +2,9 @@ name: automerge
|
|
|
2
2
|
on:
|
|
3
3
|
pull_request_target:
|
|
4
4
|
types:
|
|
5
|
+
- opened
|
|
6
|
+
- synchronize
|
|
7
|
+
- reopened
|
|
5
8
|
- labeled
|
|
6
9
|
pull_request_review:
|
|
7
10
|
types:
|
|
@@ -9,23 +12,67 @@ on:
|
|
|
9
12
|
check_suite:
|
|
10
13
|
types:
|
|
11
14
|
- completed
|
|
12
|
-
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
contents: write
|
|
18
|
+
pull-requests: write
|
|
19
|
+
|
|
13
20
|
jobs:
|
|
14
|
-
automerge:
|
|
21
|
+
automerge-labeled:
|
|
22
|
+
if: >
|
|
23
|
+
github.event.pull_request.user.login != 'dependabot[bot]' &&
|
|
24
|
+
contains(github.event.pull_request.labels.*.name, 'automerge') &&
|
|
25
|
+
!contains(github.event.pull_request.labels.*.name, 'automerge blocked')
|
|
15
26
|
runs-on: ubuntu-latest
|
|
16
27
|
steps:
|
|
17
|
-
- name:
|
|
18
|
-
|
|
28
|
+
- name: Enable auto-merge
|
|
29
|
+
run: gh pr merge --auto --squash --delete-branch "$PR_URL"
|
|
19
30
|
env:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
PR_URL: ${{ github.event.pull_request.html_url }}
|
|
32
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
33
|
+
|
|
34
|
+
automerge-dependabot:
|
|
35
|
+
if: >
|
|
36
|
+
github.event.pull_request.user.login == 'dependabot[bot]' &&
|
|
37
|
+
!contains(github.event.pull_request.labels.*.name, 'automerge blocked')
|
|
38
|
+
runs-on: ubuntu-latest
|
|
39
|
+
steps:
|
|
40
|
+
- name: Fetch Dependabot metadata
|
|
41
|
+
id: metadata
|
|
42
|
+
uses: dependabot/fetch-metadata@25dd0e34f4fe68f24cc83900b1fe3fe149efef98 # v3.1.0
|
|
43
|
+
with:
|
|
44
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
45
|
+
|
|
46
|
+
- name: Approve minor and patch
|
|
47
|
+
if: >
|
|
48
|
+
steps.metadata.outputs.update-type == 'version-update:semver-patch' ||
|
|
49
|
+
steps.metadata.outputs.update-type == 'version-update:semver-minor'
|
|
50
|
+
uses: hmarr/auto-approve-action@f0939ea97e9205ef24d872e76833fa908a770363 # v4.0.0
|
|
51
|
+
with:
|
|
52
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
53
|
+
|
|
54
|
+
- name: Enable auto-merge for minor and patch
|
|
55
|
+
if: >
|
|
56
|
+
steps.metadata.outputs.update-type == 'version-update:semver-patch' ||
|
|
57
|
+
steps.metadata.outputs.update-type == 'version-update:semver-minor'
|
|
58
|
+
run: gh pr merge --auto --squash --delete-branch "$PR_URL"
|
|
59
|
+
env:
|
|
60
|
+
PR_URL: ${{ github.event.pull_request.html_url }}
|
|
61
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
62
|
+
|
|
63
|
+
automerge-update-branch:
|
|
64
|
+
if: github.event_name == 'check_suite'
|
|
65
|
+
runs-on: ubuntu-latest
|
|
66
|
+
steps:
|
|
67
|
+
- name: Update branches behind base
|
|
26
68
|
env:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
69
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
70
|
+
run: |
|
|
71
|
+
gh pr list --repo "$GITHUB_REPOSITORY" \
|
|
72
|
+
--label automerge \
|
|
73
|
+
--limit 100 \
|
|
74
|
+
--json number,labels \
|
|
75
|
+
--jq '.[] | select(.labels | map(.name) | contains(["automerge blocked"]) | not) | .number' \
|
|
76
|
+
| while read pr_number; do
|
|
77
|
+
gh pr update-branch "$pr_number" --repo "$GITHUB_REPOSITORY" 2>/dev/null || true
|
|
78
|
+
done
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -11,12 +11,12 @@ jobs:
|
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
12
|
strategy:
|
|
13
13
|
matrix:
|
|
14
|
-
ruby-version: [3.
|
|
14
|
+
ruby-version: [3.4, 4.0]
|
|
15
15
|
|
|
16
16
|
steps:
|
|
17
|
-
- uses: actions/checkout@
|
|
17
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
18
18
|
- name: Set up Ruby
|
|
19
|
-
uses: ruby/setup-ruby@v1
|
|
19
|
+
uses: ruby/setup-ruby@c4e5b1316158f92e3d49443a9d58b31d25ac0f8f # v1.306.0
|
|
20
20
|
with:
|
|
21
21
|
ruby-version: ${{ matrix.ruby-version }}
|
|
22
22
|
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
data/.gitignore
CHANGED
data/.standard.yml
ADDED
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## 1.17.1 - 2026-05-19
|
|
4
|
+
|
|
5
|
+
- Fix `monitor_deploy_status` failing the deploy promotion when `--max_tries` is passed: Thor's `invoke :notify_sentry` was forwarding the parent task's ARGV as positional args. Pass explicit empty args/options to scope the sub-invocation.
|
|
6
|
+
|
|
7
|
+
## 1.17.0 - 2026-03-24
|
|
8
|
+
|
|
9
|
+
- Replace backtick shell calls with `Open3.capture3` for safer command execution
|
|
10
|
+
- Add `rescue JSON::ParserError` in `K8s::PodSet` to handle malformed kubectl output gracefully
|
|
11
|
+
- Fix `terminated_error?` returning truthy for exit code 0
|
|
12
|
+
- Add `Unknown` state label for containers with unrecognized state
|
|
13
|
+
- Add `sidecar?` method and `sidecar_container_names` config key for configurable sidecar filtering (replaces hardcoded istio-proxy)
|
|
14
|
+
- Add `rescue Faraday::Error` to all notification classes to prevent network errors from crashing deploys
|
|
15
|
+
- Simplify `DeployStatus` polling loops and remove off-by-one in max_tries
|
|
16
|
+
- Add `vidar.yml` schema validation on load (requires `image`, `namespace`, `github`)
|
|
17
|
+
- Pin faraday dependency to `>= 2.0, < 3`
|
|
18
|
+
- Add YARD documentation to all public classes and methods
|
|
19
|
+
- Expand test coverage from 18 to 148 examples
|
|
20
|
+
|
|
21
|
+
## 1.16.0 - 2026-01-27
|
|
22
|
+
|
|
23
|
+
Ruby 4.0 support. Drop ruby 3.3 support.
|
|
24
|
+
|
|
3
25
|
## 1.15.0 - 2025-06-23
|
|
4
26
|
|
|
5
27
|
Don't stop watining and mark deployment as failed, when any container is still in a waiting state
|
data/Gemfile
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
source
|
|
1
|
+
source "https://rubygems.org"
|
|
2
2
|
|
|
3
3
|
gemspec
|
|
4
4
|
|
|
5
|
-
gem
|
|
6
|
-
gem
|
|
7
|
-
gem
|
|
8
|
-
gem
|
|
9
|
-
gem
|
|
10
|
-
gem
|
|
11
|
-
gem
|
|
12
|
-
gem
|
|
13
|
-
|
|
5
|
+
gem "awesome_print"
|
|
6
|
+
gem "bundler"
|
|
7
|
+
gem "irb"
|
|
8
|
+
gem "pry"
|
|
9
|
+
gem "rake"
|
|
10
|
+
gem "rspec"
|
|
11
|
+
gem "standard"
|
|
12
|
+
gem "webmock"
|
|
13
|
+
|
|
14
|
+
gem "openssl"
|
data/Gemfile.lock
CHANGED
|
@@ -1,67 +1,89 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
vidar (1.
|
|
4
|
+
vidar (1.17.1)
|
|
5
5
|
colorize
|
|
6
|
-
faraday
|
|
6
|
+
faraday (>= 2.0, < 3)
|
|
7
7
|
thor (~> 1.0)
|
|
8
8
|
|
|
9
9
|
GEM
|
|
10
10
|
remote: https://rubygems.org/
|
|
11
11
|
specs:
|
|
12
|
-
addressable (2.
|
|
13
|
-
public_suffix (>= 2.0.2, <
|
|
12
|
+
addressable (2.9.0)
|
|
13
|
+
public_suffix (>= 2.0.2, < 8.0)
|
|
14
14
|
ast (2.4.3)
|
|
15
15
|
awesome_print (1.9.2)
|
|
16
|
-
bigdecimal (
|
|
16
|
+
bigdecimal (4.1.1)
|
|
17
17
|
coderay (1.1.3)
|
|
18
18
|
colorize (1.1.0)
|
|
19
|
-
crack (1.0.
|
|
19
|
+
crack (1.0.1)
|
|
20
20
|
bigdecimal
|
|
21
21
|
rexml
|
|
22
|
+
date (3.5.1)
|
|
22
23
|
diff-lcs (1.6.2)
|
|
23
|
-
|
|
24
|
+
erb (6.0.4)
|
|
25
|
+
faraday (2.14.2)
|
|
24
26
|
faraday-net_http (>= 2.0, < 3.5)
|
|
25
27
|
json
|
|
26
28
|
logger
|
|
27
|
-
faraday-net_http (3.4.
|
|
28
|
-
net-http (
|
|
29
|
-
hashdiff (1.2.
|
|
30
|
-
|
|
29
|
+
faraday-net_http (3.4.2)
|
|
30
|
+
net-http (~> 0.5)
|
|
31
|
+
hashdiff (1.2.1)
|
|
32
|
+
io-console (0.8.2)
|
|
33
|
+
irb (1.18.0)
|
|
34
|
+
pp (>= 0.6.0)
|
|
35
|
+
prism (>= 1.3.0)
|
|
36
|
+
rdoc (>= 4.0.0)
|
|
37
|
+
reline (>= 0.4.2)
|
|
38
|
+
json (2.19.5)
|
|
31
39
|
language_server-protocol (3.17.0.5)
|
|
32
40
|
lint_roller (1.1.0)
|
|
33
41
|
logger (1.7.0)
|
|
34
42
|
method_source (1.1.0)
|
|
35
|
-
net-http (0.
|
|
36
|
-
uri
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
net-http (0.9.1)
|
|
44
|
+
uri (>= 0.11.1)
|
|
45
|
+
openssl (4.0.2)
|
|
46
|
+
parallel (1.28.0)
|
|
47
|
+
parser (3.3.11.1)
|
|
39
48
|
ast (~> 2.4.1)
|
|
40
49
|
racc
|
|
41
|
-
|
|
42
|
-
|
|
50
|
+
pp (0.6.3)
|
|
51
|
+
prettyprint
|
|
52
|
+
prettyprint (0.2.0)
|
|
53
|
+
prism (1.9.0)
|
|
54
|
+
pry (0.16.0)
|
|
43
55
|
coderay (~> 1.1)
|
|
44
56
|
method_source (~> 1.0)
|
|
45
|
-
|
|
57
|
+
reline (>= 0.6.0)
|
|
58
|
+
psych (5.3.1)
|
|
59
|
+
date
|
|
60
|
+
stringio
|
|
61
|
+
public_suffix (7.0.5)
|
|
46
62
|
racc (1.8.1)
|
|
47
63
|
rainbow (3.1.1)
|
|
48
|
-
rake (13.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
64
|
+
rake (13.4.2)
|
|
65
|
+
rdoc (7.2.0)
|
|
66
|
+
erb
|
|
67
|
+
psych (>= 4.0.0)
|
|
68
|
+
tsort
|
|
69
|
+
regexp_parser (2.12.0)
|
|
70
|
+
reline (0.6.3)
|
|
71
|
+
io-console (~> 0.5)
|
|
72
|
+
rexml (3.4.4)
|
|
73
|
+
rspec (3.13.2)
|
|
52
74
|
rspec-core (~> 3.13.0)
|
|
53
75
|
rspec-expectations (~> 3.13.0)
|
|
54
76
|
rspec-mocks (~> 3.13.0)
|
|
55
|
-
rspec-core (3.13.
|
|
77
|
+
rspec-core (3.13.6)
|
|
56
78
|
rspec-support (~> 3.13.0)
|
|
57
79
|
rspec-expectations (3.13.5)
|
|
58
80
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
59
81
|
rspec-support (~> 3.13.0)
|
|
60
|
-
rspec-mocks (3.13.
|
|
82
|
+
rspec-mocks (3.13.8)
|
|
61
83
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
62
84
|
rspec-support (~> 3.13.0)
|
|
63
|
-
rspec-support (3.13.
|
|
64
|
-
rubocop (1.
|
|
85
|
+
rspec-support (3.13.7)
|
|
86
|
+
rubocop (1.84.2)
|
|
65
87
|
json (~> 2.3)
|
|
66
88
|
language_server-protocol (~> 3.17.0.2)
|
|
67
89
|
lint_roller (~> 1.1.0)
|
|
@@ -69,25 +91,37 @@ GEM
|
|
|
69
91
|
parser (>= 3.3.0.2)
|
|
70
92
|
rainbow (>= 2.2.2, < 4.0)
|
|
71
93
|
regexp_parser (>= 2.9.3, < 3.0)
|
|
72
|
-
rubocop-ast (>= 1.
|
|
94
|
+
rubocop-ast (>= 1.49.0, < 2.0)
|
|
73
95
|
ruby-progressbar (~> 1.7)
|
|
74
96
|
unicode-display_width (>= 2.4.0, < 4.0)
|
|
75
|
-
rubocop-ast (1.
|
|
97
|
+
rubocop-ast (1.49.1)
|
|
76
98
|
parser (>= 3.3.7.2)
|
|
77
|
-
prism (~> 1.
|
|
78
|
-
rubocop-
|
|
99
|
+
prism (~> 1.7)
|
|
100
|
+
rubocop-performance (1.26.1)
|
|
79
101
|
lint_roller (~> 1.1)
|
|
80
|
-
rubocop (>= 1.
|
|
81
|
-
|
|
82
|
-
lint_roller (~> 1.1)
|
|
83
|
-
rubocop (~> 1.72, >= 1.72.1)
|
|
102
|
+
rubocop (>= 1.75.0, < 2.0)
|
|
103
|
+
rubocop-ast (>= 1.47.1, < 2.0)
|
|
84
104
|
ruby-progressbar (1.13.0)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
105
|
+
standard (1.54.0)
|
|
106
|
+
language_server-protocol (~> 3.17.0.2)
|
|
107
|
+
lint_roller (~> 1.0)
|
|
108
|
+
rubocop (~> 1.84.0)
|
|
109
|
+
standard-custom (~> 1.0.0)
|
|
110
|
+
standard-performance (~> 1.8)
|
|
111
|
+
standard-custom (1.0.2)
|
|
112
|
+
lint_roller (~> 1.0)
|
|
113
|
+
rubocop (~> 1.50)
|
|
114
|
+
standard-performance (1.9.0)
|
|
115
|
+
lint_roller (~> 1.1)
|
|
116
|
+
rubocop-performance (~> 1.26.0)
|
|
117
|
+
stringio (3.2.0)
|
|
118
|
+
thor (1.5.0)
|
|
119
|
+
tsort (0.2.0)
|
|
120
|
+
unicode-display_width (3.2.0)
|
|
121
|
+
unicode-emoji (~> 4.1)
|
|
122
|
+
unicode-emoji (4.2.0)
|
|
123
|
+
uri (1.1.1)
|
|
124
|
+
webmock (3.26.2)
|
|
91
125
|
addressable (>= 2.8.0)
|
|
92
126
|
crack (>= 0.3.2)
|
|
93
127
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
@@ -98,14 +132,14 @@ PLATFORMS
|
|
|
98
132
|
DEPENDENCIES
|
|
99
133
|
awesome_print
|
|
100
134
|
bundler
|
|
135
|
+
irb
|
|
136
|
+
openssl
|
|
101
137
|
pry
|
|
102
138
|
rake
|
|
103
139
|
rspec
|
|
104
|
-
|
|
105
|
-
rubocop-rake
|
|
106
|
-
rubocop-rspec
|
|
140
|
+
standard
|
|
107
141
|
vidar!
|
|
108
142
|
webmock
|
|
109
143
|
|
|
110
144
|
BUNDLED WITH
|
|
111
|
-
|
|
145
|
+
4.0.4
|
data/Rakefile
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
1
|
+
require "bundler/gem_tasks"
|
|
2
|
+
require "rspec/core/rake_task"
|
|
3
|
+
require "standard/rake"
|
|
4
4
|
|
|
5
5
|
RSpec::Core::RakeTask.new(:spec)
|
|
6
|
-
RuboCop::RakeTask.new
|
|
7
6
|
|
|
8
|
-
task ci: %i[spec
|
|
9
|
-
task default: %i[spec
|
|
7
|
+
task ci: %i[spec standard]
|
|
8
|
+
task default: %i[spec standard:fix]
|
data/exe/vidar
CHANGED
data/lib/vidar/cli.rb
CHANGED
|
@@ -24,7 +24,8 @@ module Vidar
|
|
|
24
24
|
Log.info "Pulling #{Config.get!(:image)} tags"
|
|
25
25
|
Run.docker "pull #{Config.get!(:image)}:#{Config.get!(:base_stage_name)}-#{Config.get!(:current_branch)} 2> /dev/null || true"
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
image_names_stdout, _stderr, _status = Open3.capture3('docker images --format "{{.Repository}}:{{.Tag}}"')
|
|
28
|
+
image_names = image_names_stdout.split("\n")
|
|
28
29
|
base_image = "#{Config.get!(:image)}:#{Config.get!(:base_stage_name)}-#{Config.get!(:default_branch)}"
|
|
29
30
|
Run.docker "pull #{base_image} 2> /dev/null || true" unless image_names.include?(base_image)
|
|
30
31
|
|
|
@@ -128,8 +129,8 @@ module Vidar
|
|
|
128
129
|
destination = options[:destination]
|
|
129
130
|
container = options[:container]
|
|
130
131
|
all = options[:all]
|
|
131
|
-
Log.info "Set kubectl image for #{
|
|
132
|
-
Run.kubectl "set image #{destination} #{container}=#{Config.get!(:image)}:#{revision} #{
|
|
132
|
+
Log.info "Set kubectl image for #{"all " if all}#{destination} container=#{container}..."
|
|
133
|
+
Run.kubectl "set image #{destination} #{container}=#{Config.get!(:image)}:#{revision} #{"--all" if all}"
|
|
133
134
|
end
|
|
134
135
|
|
|
135
136
|
desc "set_image", "Set image for k8s deployment"
|
|
@@ -146,8 +147,8 @@ module Vidar
|
|
|
146
147
|
destination = options[:destination]
|
|
147
148
|
container = options[:container]
|
|
148
149
|
all = options[:all]
|
|
149
|
-
Log.info "Set kubectl image for #{
|
|
150
|
-
Run.kubectl "set image #{destination} #{container}=#{Config.get!(:image)}:#{revision} #{
|
|
150
|
+
Log.info "Set kubectl image for #{"all " if all}#{destination} container=#{container}..."
|
|
151
|
+
Run.kubectl "set image #{destination} #{container}=#{Config.get!(:image)}:#{revision} #{"--all" if all}"
|
|
151
152
|
end
|
|
152
153
|
|
|
153
154
|
desc "release", "Build and publish docker images"
|
|
@@ -178,7 +179,7 @@ module Vidar
|
|
|
178
179
|
Log.info "OK: All containers are ready"
|
|
179
180
|
slack_notification.success if slack_notification.configured?
|
|
180
181
|
honeycomb_notification.success
|
|
181
|
-
invoke :notify_sentry
|
|
182
|
+
invoke :notify_sentry, [], {}
|
|
182
183
|
else
|
|
183
184
|
Log.error "ERROR: Some of containers are errored or not ready"
|
|
184
185
|
slack_notification.failure if slack_notification.configured?
|
|
@@ -198,16 +199,17 @@ module Vidar
|
|
|
198
199
|
Log.error "ERROR: could not find deployment config for #{Config.get!(:kubectl_context)} context" unless deploy_config
|
|
199
200
|
|
|
200
201
|
pod_set = K8s::PodSet.new(namespace: Config.get!(:namespace), filter: options[:name])
|
|
201
|
-
|
|
202
|
+
sidecar_names = Array(Config.get(:sidecar_container_names))
|
|
203
|
+
containers = pod_set.containers.select(&:ready_and_running?).reject { |c| c.sidecar?(sidecar_names) }
|
|
202
204
|
|
|
203
205
|
if containers.empty?
|
|
204
|
-
name = options[:name] ||
|
|
206
|
+
name = options[:name] || "any"
|
|
205
207
|
Log.error "No running containers found with *#{name}* name"
|
|
206
208
|
exit(1)
|
|
207
209
|
else
|
|
208
210
|
Log.info "Available containers:"
|
|
209
211
|
containers.each(&:print)
|
|
210
|
-
container = containers.detect { |c| c.name ==
|
|
212
|
+
container = containers.detect { |c| c.name == "console" } || containers.last
|
|
211
213
|
|
|
212
214
|
Log.info "Running #{options[:command]} in #{container.pod_name}"
|
|
213
215
|
Run.kubectl("exec -it #{container.pod_name} -- #{options[:command]}")
|
|
@@ -232,7 +234,7 @@ module Vidar
|
|
|
232
234
|
desc "notify_sentry", "Notify sentry about current release"
|
|
233
235
|
def notify_sentry
|
|
234
236
|
sentry_notification = SentryNotification.new(
|
|
235
|
-
revision:
|
|
237
|
+
revision: Config.get!(:revision),
|
|
236
238
|
deploy_config: Config.deploy_config
|
|
237
239
|
)
|
|
238
240
|
|
|
@@ -248,10 +250,10 @@ module Vidar
|
|
|
248
250
|
desc "notify_slack", "Send custom slack notification"
|
|
249
251
|
def notify_slack
|
|
250
252
|
slack_notification = SlackNotification.new(
|
|
251
|
-
github:
|
|
252
|
-
revision:
|
|
253
|
+
github: Config.get!(:github),
|
|
254
|
+
revision: Config.get!(:revision),
|
|
253
255
|
revision_name: Config.get!(:revision_name),
|
|
254
|
-
build_url:
|
|
256
|
+
build_url: Config.build_url,
|
|
255
257
|
deploy_config: Config.deploy_config
|
|
256
258
|
)
|
|
257
259
|
|