danger-dangermattic 1.0.2 â 1.1.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/.github/workflows/reusable-retry-buildkite-step-on-events.yml +124 -0
- data/CHANGELOG.md +12 -0
- data/Gemfile.lock +24 -19
- data/danger-dangermattic.gemspec +2 -2
- data/lib/dangermattic/gem_version.rb +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b15ae97cc1a24568ecab35470fabcf26fcb858e586abf81f1c9cba4e8f28a095
|
4
|
+
data.tar.gz: 5a5441a1ffd66d05a136e3db188b3f20cb963ef8c376ea70af86b6194cf6a79c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5fe63d7356f08bd84721b91436eb66e66e6a3b1cb4b53c17e5e503e10d95417af516224c904dd788c5971b5e69d79e09e1d11c0a87673051a2bd34deb6add6a
|
7
|
+
data.tar.gz: 03c6f7e8fe657924e88aeaecd6d0bf56ae68f133f3b5ed0214267507ab1c4692f711b181a5ec41e2de47bb12e13da4e2af7d6cb0a1155d6ad628a2abf7f74a6d
|
@@ -0,0 +1,124 @@
|
|
1
|
+
on:
|
2
|
+
workflow_call:
|
3
|
+
inputs:
|
4
|
+
org-slug:
|
5
|
+
description: 'Buildkite organization slug'
|
6
|
+
required: true
|
7
|
+
type: string
|
8
|
+
pipeline-slug:
|
9
|
+
description: 'Slug of the Buildkite pipeline to be run'
|
10
|
+
required: true
|
11
|
+
type: string
|
12
|
+
retry-step-key:
|
13
|
+
description: 'Key of the Buildkite job to be retried'
|
14
|
+
required: true
|
15
|
+
type: string
|
16
|
+
build-commit-sha:
|
17
|
+
description: 'Commit to check for running Buildkite Builds on. Usually github.event.pull_request.head.sha .'
|
18
|
+
required: true
|
19
|
+
type: string
|
20
|
+
cancel-running-github-jobs:
|
21
|
+
description: 'Cancel currently in progress Github jobs when new ones are added.'
|
22
|
+
default: true
|
23
|
+
type: boolean
|
24
|
+
required: false
|
25
|
+
secrets:
|
26
|
+
buildkite-api-token:
|
27
|
+
required: true
|
28
|
+
|
29
|
+
concurrency:
|
30
|
+
group: danger-buildkite-retry-${{ github.ref }}
|
31
|
+
cancel-in-progress: ${{ inputs.cancel-running-github-jobs }}
|
32
|
+
|
33
|
+
jobs:
|
34
|
+
retry-buildkite-job:
|
35
|
+
runs-on: ubuntu-latest
|
36
|
+
steps:
|
37
|
+
- name: "đ Retry job on the latest Buildkite Build"
|
38
|
+
run: |
|
39
|
+
ORG_SLUG="${{ inputs.org-slug }}"
|
40
|
+
PIPELINE_SLUG="${{ inputs.pipeline-slug }}"
|
41
|
+
RETRY_STEP_KEY="${{ inputs.retry-step-key }}"
|
42
|
+
BUILDKITE_API_ACCESS_TOKEN="${{ secrets.buildkite-api-token }}"
|
43
|
+
COMMIT_SHA="${{ inputs.build-commit-sha }}"
|
44
|
+
|
45
|
+
# Performs a Buildkite request using a http method ($1) and an api path ($2)
|
46
|
+
perform_buildkite_request() {
|
47
|
+
local METHOD=$1
|
48
|
+
local BUILDKITE_API_PATH=$2
|
49
|
+
|
50
|
+
local BUILDKITE_API_URL="https://api.buildkite.com/v2/organizations/$ORG_SLUG/pipelines/$PIPELINE_SLUG/$BUILDKITE_API_PATH"
|
51
|
+
|
52
|
+
local RAW_RESPONSE
|
53
|
+
|
54
|
+
RAW_RESPONSE=$(
|
55
|
+
curl \
|
56
|
+
--fail-with-body \
|
57
|
+
--silent \
|
58
|
+
--show-error \
|
59
|
+
-X "$METHOD" \
|
60
|
+
-H "Authorization: Bearer $BUILDKITE_API_ACCESS_TOKEN" \
|
61
|
+
"$BUILDKITE_API_URL"
|
62
|
+
)
|
63
|
+
|
64
|
+
echo "$RAW_RESPONSE" | jq
|
65
|
+
}
|
66
|
+
|
67
|
+
# Gets the build(s) associated with the commit
|
68
|
+
get_buildkite_build() {
|
69
|
+
perform_buildkite_request "GET" "builds?commit=$COMMIT_SHA"
|
70
|
+
}
|
71
|
+
|
72
|
+
# Given a build id ($1) and a job id ($2), retry the given job
|
73
|
+
retry_buildkite_job() {
|
74
|
+
local BUILD_ID=$1
|
75
|
+
local JOB_ID=$2
|
76
|
+
|
77
|
+
perform_buildkite_request "PUT" "builds/$BUILD_ID/jobs/$JOB_ID/retry"
|
78
|
+
}
|
79
|
+
|
80
|
+
# Validates a Buildkite response ($1)
|
81
|
+
check_buildkite_error() {
|
82
|
+
local RESPONSE=$1
|
83
|
+
|
84
|
+
# Check if the response is empty
|
85
|
+
if [ -z "$RESPONSE" ] || [ "$(echo "$RESPONSE" | jq 'length')" -eq 0 ]; then
|
86
|
+
echo "â Buildkite API call returned an empty response."
|
87
|
+
exit 1
|
88
|
+
fi
|
89
|
+
|
90
|
+
# Check if the response contains an error message
|
91
|
+
RESPONSE_ERROR=$(echo "$RESPONSE" | jq .message 2>/dev/null || true)
|
92
|
+
if [[ -n "$RESPONSE_ERROR" && "$RESPONSE_ERROR" != 'null' ]]; then
|
93
|
+
echo "â Buildkite API call failed: $RESPONSE_ERROR"
|
94
|
+
exit 1
|
95
|
+
fi
|
96
|
+
}
|
97
|
+
|
98
|
+
BUILDKITE_GET_BUILD_RESPONSE=$(get_buildkite_build)
|
99
|
+
check_buildkite_error "$BUILDKITE_GET_BUILD_RESPONSE"
|
100
|
+
|
101
|
+
LATEST_BUILD=$(echo "$BUILDKITE_GET_BUILD_RESPONSE" | jq -r '.[0]')
|
102
|
+
LATEST_BUILD_NUMBER=$(echo "$LATEST_BUILD" | jq -r '.number')
|
103
|
+
|
104
|
+
SELECTED_JOB=$(echo "$LATEST_BUILD" | jq -r --arg step_key "$RETRY_STEP_KEY" '.jobs[] | select(.step_key == $step_key)')
|
105
|
+
SELECTED_JOB_ID=$(echo "$SELECTED_JOB" | jq -r '.id')
|
106
|
+
SELECTED_JOB_STATE=$(echo "$SELECTED_JOB" | jq -r '.state')
|
107
|
+
|
108
|
+
echo "âšī¸ Build Number: $LATEST_BUILD_NUMBER"
|
109
|
+
echo "âšī¸ Job ID for step '$RETRY_STEP_KEY': $SELECTED_JOB_ID"
|
110
|
+
echo "âšī¸ Current job state for step '$RETRY_STEP_KEY': $SELECTED_JOB_STATE"
|
111
|
+
|
112
|
+
# all states: running, scheduled, passed, failing, failed, blocked, canceled, canceling, skipped, not_run, finished
|
113
|
+
ALLOWED_JOB_STATES=("passed" "failed" "canceled" "finished")
|
114
|
+
if [[ " ${ALLOWED_JOB_STATES[*]} " =~ [[:space:]]${SELECTED_JOB_STATE}[[:space:]] ]]; then
|
115
|
+
BUILDKITE_RETRY_JOB_RESPONSE=$(retry_buildkite_job "$LATEST_BUILD_NUMBER" "$SELECTED_JOB_ID")
|
116
|
+
check_buildkite_error "$BUILDKITE_RETRY_JOB_RESPONSE"
|
117
|
+
|
118
|
+
JOB_WEB_URL=$(echo "$BUILDKITE_RETRY_JOB_RESPONSE" | jq -r '.web_url')
|
119
|
+
echo "â
Job succesfully retried: $JOB_WEB_URL"
|
120
|
+
elif [[ "$SELECTED_JOB_STATE" == "running" || "$SELECTED_JOB_STATE" == "scheduled" ]]; then
|
121
|
+
echo "â ī¸ Job is already in state '$SELECTED_JOB_STATE', no need to retry."
|
122
|
+
else
|
123
|
+
echo "â Cannot retry job in state '$SELECTED_JOB_STATE'"
|
124
|
+
fi
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,18 @@
|
|
2
2
|
|
3
3
|
---
|
4
4
|
|
5
|
+
## 1.1.1
|
6
|
+
|
7
|
+
### Internal Changes
|
8
|
+
|
9
|
+
- Update `danger-rubocop` so that we can run it without `bundle exec`.
|
10
|
+
|
11
|
+
## 1.1.0
|
12
|
+
|
13
|
+
### New Features
|
14
|
+
|
15
|
+
- Reusable GitHub Workflow for retrying Buildkite jobs (#64)
|
16
|
+
|
5
17
|
## 1.0.2
|
6
18
|
|
7
19
|
### Bug Fixes
|
data/Gemfile.lock
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
danger-dangermattic (1.
|
4
|
+
danger-dangermattic (1.1.1)
|
5
5
|
danger (~> 9.4)
|
6
6
|
danger-plugin-api (~> 1.0)
|
7
|
-
danger-rubocop (~> 0.
|
8
|
-
rubocop (~> 1.
|
7
|
+
danger-rubocop (~> 0.13)
|
8
|
+
rubocop (~> 1.63)
|
9
9
|
|
10
10
|
GEM
|
11
11
|
remote: https://rubygems.org/
|
@@ -38,7 +38,7 @@ GEM
|
|
38
38
|
terminal-table (>= 1, < 4)
|
39
39
|
danger-plugin-api (1.0.0)
|
40
40
|
danger (> 2.0)
|
41
|
-
danger-rubocop (0.
|
41
|
+
danger-rubocop (0.13.0)
|
42
42
|
danger
|
43
43
|
rubocop (~> 1.0)
|
44
44
|
diff-lcs (1.5.1)
|
@@ -67,7 +67,7 @@ GEM
|
|
67
67
|
guard (~> 2.1)
|
68
68
|
guard-compat (~> 1.1)
|
69
69
|
rspec (>= 2.99.0, < 4.0)
|
70
|
-
json (2.7.
|
70
|
+
json (2.7.2)
|
71
71
|
kramdown (2.4.0)
|
72
72
|
rexml
|
73
73
|
kramdown-parser-gfm (1.1.0)
|
@@ -77,7 +77,7 @@ GEM
|
|
77
77
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
78
78
|
rb-inotify (~> 0.9, >= 0.9.10)
|
79
79
|
lumberjack (1.2.10)
|
80
|
-
method_source (1.
|
80
|
+
method_source (1.1.0)
|
81
81
|
nap (1.1.0)
|
82
82
|
nenv (0.3.0)
|
83
83
|
net-http (0.4.1)
|
@@ -92,22 +92,23 @@ GEM
|
|
92
92
|
sawyer (~> 0.9)
|
93
93
|
open4 (1.3.4)
|
94
94
|
parallel (1.24.0)
|
95
|
-
parser (3.3.0
|
95
|
+
parser (3.3.1.0)
|
96
96
|
ast (~> 2.4.1)
|
97
97
|
racc
|
98
98
|
pry (0.14.2)
|
99
99
|
coderay (~> 1.1)
|
100
100
|
method_source (~> 1.0)
|
101
|
-
public_suffix (5.0.
|
102
|
-
racc (1.
|
101
|
+
public_suffix (5.0.5)
|
102
|
+
racc (1.8.0)
|
103
103
|
rainbow (3.1.1)
|
104
|
-
rake (13.1
|
104
|
+
rake (13.2.1)
|
105
105
|
rb-fsevent (0.11.2)
|
106
|
-
rb-inotify (0.
|
106
|
+
rb-inotify (0.11.1)
|
107
107
|
ffi (~> 1.0)
|
108
108
|
rchardet (1.8.0)
|
109
|
-
regexp_parser (2.9.
|
110
|
-
rexml (3.2.
|
109
|
+
regexp_parser (2.9.2)
|
110
|
+
rexml (3.2.8)
|
111
|
+
strscan (>= 3.0.9)
|
111
112
|
rspec (3.13.0)
|
112
113
|
rspec-core (~> 3.13.0)
|
113
114
|
rspec-expectations (~> 3.13.0)
|
@@ -117,11 +118,11 @@ GEM
|
|
117
118
|
rspec-expectations (3.13.0)
|
118
119
|
diff-lcs (>= 1.2.0, < 2.0)
|
119
120
|
rspec-support (~> 3.13.0)
|
120
|
-
rspec-mocks (3.13.
|
121
|
+
rspec-mocks (3.13.1)
|
121
122
|
diff-lcs (>= 1.2.0, < 2.0)
|
122
123
|
rspec-support (~> 3.13.0)
|
123
124
|
rspec-support (3.13.1)
|
124
|
-
rubocop (1.
|
125
|
+
rubocop (1.63.5)
|
125
126
|
json (~> 2.3)
|
126
127
|
language_server-protocol (>= 3.17.0)
|
127
128
|
parallel (~> 1.10)
|
@@ -129,26 +130,30 @@ GEM
|
|
129
130
|
rainbow (>= 2.2.2, < 4.0)
|
130
131
|
regexp_parser (>= 1.8, < 3.0)
|
131
132
|
rexml (>= 3.2.5, < 4.0)
|
132
|
-
rubocop-ast (>= 1.
|
133
|
+
rubocop-ast (>= 1.31.1, < 2.0)
|
133
134
|
ruby-progressbar (~> 1.7)
|
134
135
|
unicode-display_width (>= 2.4.0, < 3.0)
|
135
|
-
rubocop-ast (1.31.
|
136
|
-
parser (>= 3.3.0
|
136
|
+
rubocop-ast (1.31.3)
|
137
|
+
parser (>= 3.3.1.0)
|
137
138
|
rubocop-capybara (2.20.0)
|
138
139
|
rubocop (~> 1.41)
|
139
140
|
rubocop-factory_bot (2.25.1)
|
140
141
|
rubocop (~> 1.41)
|
141
142
|
rubocop-rake (0.6.0)
|
142
143
|
rubocop (~> 1.0)
|
143
|
-
rubocop-rspec (2.
|
144
|
+
rubocop-rspec (2.29.2)
|
144
145
|
rubocop (~> 1.40)
|
145
146
|
rubocop-capybara (~> 2.17)
|
146
147
|
rubocop-factory_bot (~> 2.22)
|
148
|
+
rubocop-rspec_rails (~> 2.28)
|
149
|
+
rubocop-rspec_rails (2.28.3)
|
150
|
+
rubocop (~> 1.40)
|
147
151
|
ruby-progressbar (1.13.0)
|
148
152
|
sawyer (0.9.2)
|
149
153
|
addressable (>= 2.3.5)
|
150
154
|
faraday (>= 0.17.3, < 3)
|
151
155
|
shellany (0.0.1)
|
156
|
+
strscan (3.1.0)
|
152
157
|
terminal-table (3.0.2)
|
153
158
|
unicode-display_width (>= 1.1.1, < 3)
|
154
159
|
thor (1.3.1)
|
data/danger-dangermattic.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_runtime_dependency 'danger-plugin-api', '~> 1.0'
|
26
26
|
|
27
27
|
# Danger plugins
|
28
|
-
spec.add_dependency 'danger-rubocop', '~> 0.
|
28
|
+
spec.add_dependency 'danger-rubocop', '~> 0.13'
|
29
29
|
|
30
30
|
# General ruby development
|
31
31
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
|
|
35
35
|
spec.add_development_dependency 'rspec', '~> 3.4'
|
36
36
|
|
37
37
|
# Linting code and docs
|
38
|
-
spec.add_dependency 'rubocop', '~> 1.
|
38
|
+
spec.add_dependency 'rubocop', '~> 1.63'
|
39
39
|
spec.add_development_dependency 'rubocop-rake'
|
40
40
|
spec.add_development_dependency 'rubocop-rspec'
|
41
41
|
spec.add_development_dependency 'yard'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: danger-dangermattic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Automattic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: danger
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
47
|
+
version: '0.13'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0.
|
54
|
+
version: '0.13'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '1.
|
103
|
+
version: '1.63'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '1.
|
110
|
+
version: '1.63'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rubocop-rake
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -202,6 +202,7 @@ files:
|
|
202
202
|
- ".buildkite/pipeline.yml"
|
203
203
|
- ".bundle/config"
|
204
204
|
- ".github/workflows/reusable-check-labels-on-issues.yml"
|
205
|
+
- ".github/workflows/reusable-retry-buildkite-step-on-events.yml"
|
205
206
|
- ".github/workflows/reusable-run-danger.yml"
|
206
207
|
- ".gitignore"
|
207
208
|
- ".rubocop.yml"
|