danger-dangermattic 1.0.1 → 1.1.1

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: 615ffb488aacbecf44a30b87c7c782d97bbf4a5104ada852ea6565d20d092ed4
4
- data.tar.gz: f7d16f0afcd180ea5271865f091d0c33866900f3102745cb31b886b59cb8348f
3
+ metadata.gz: b15ae97cc1a24568ecab35470fabcf26fcb858e586abf81f1c9cba4e8f28a095
4
+ data.tar.gz: 5a5441a1ffd66d05a136e3db188b3f20cb963ef8c376ea70af86b6194cf6a79c
5
5
  SHA512:
6
- metadata.gz: fbbd4c83b4c026dec016433abc3fbb2c8275c28aceab5863e4c39160031484550b1bc41092c74ba6786738863b43431089d2b5e02e239e95eca2ee5045c01a6f
7
- data.tar.gz: df4b5edf15a414ead103abc8b0c0bc182baac45425170be3aea0df1186f6a233f2f401b894da1cbd3c204668be97cc43c527bd6e969fabc7ce5e1f30fb8b26d6
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,11 +2,29 @@
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
+
17
+ ## 1.0.2
18
+
19
+ ### Bug Fixes
20
+
21
+ - Clean up and update dependencies. (#62)
22
+
5
23
  ## 1.0.1
6
24
 
7
25
  ### Bug Fixes
8
26
 
9
- - Fix `tracks_checker` plugin so that only additions / removals in a diff are considered in the check, therefore not including the context parts of the diff.
27
+ - Fix `tracks_checker` plugin so that only additions / removals in a diff are considered in the check, therefore not including the context parts of the diff. (#58)
10
28
 
11
29
  ## 1.0.0
12
30
 
data/Gemfile.lock CHANGED
@@ -1,14 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-dangermattic (1.0.1)
4
+ danger-dangermattic (1.1.1)
5
5
  danger (~> 9.4)
6
- danger-junit (~> 1.0)
7
6
  danger-plugin-api (~> 1.0)
8
- danger-rubocop (~> 0.12)
9
- danger-swiftlint (~> 0.35)
10
- danger-xcode_summary (~> 1.0)
11
- rubocop (~> 1.60)
7
+ danger-rubocop (~> 0.13)
8
+ rubocop (~> 1.63)
12
9
 
13
10
  GEM
14
11
  remote: https://rubygems.org/
@@ -39,21 +36,11 @@ GEM
39
36
  no_proxy_fix
40
37
  octokit (>= 4.0)
41
38
  terminal-table (>= 1, < 4)
42
- danger-junit (1.0.2)
43
- danger (> 2.0)
44
- ox (~> 2.0)
45
39
  danger-plugin-api (1.0.0)
46
40
  danger (> 2.0)
47
- danger-rubocop (0.12.0)
41
+ danger-rubocop (0.13.0)
48
42
  danger
49
43
  rubocop (~> 1.0)
50
- danger-swiftlint (0.35.0)
51
- danger
52
- rake (> 10)
53
- thor (~> 1.0.0)
54
- danger-xcode_summary (1.2.0)
55
- danger-plugin-api (~> 1.0)
56
- xcresult (~> 0.2)
57
44
  diff-lcs (1.5.1)
58
45
  faraday (2.9.0)
59
46
  faraday-net_http (>= 2.0, < 3.2)
@@ -80,17 +67,17 @@ GEM
80
67
  guard (~> 2.1)
81
68
  guard-compat (~> 1.1)
82
69
  rspec (>= 2.99.0, < 4.0)
83
- json (2.7.1)
70
+ json (2.7.2)
84
71
  kramdown (2.4.0)
85
72
  rexml
86
73
  kramdown-parser-gfm (1.1.0)
87
74
  kramdown (~> 2.0)
88
75
  language_server-protocol (3.17.0.3)
89
- listen (3.8.0)
76
+ listen (3.9.0)
90
77
  rb-fsevent (~> 0.10, >= 0.10.3)
91
78
  rb-inotify (~> 0.9, >= 0.9.10)
92
79
  lumberjack (1.2.10)
93
- method_source (1.0.0)
80
+ method_source (1.1.0)
94
81
  nap (1.1.0)
95
82
  nenv (0.3.0)
96
83
  net-http (0.4.1)
@@ -104,24 +91,24 @@ GEM
104
91
  faraday (>= 1, < 3)
105
92
  sawyer (~> 0.9)
106
93
  open4 (1.3.4)
107
- ox (2.14.17)
108
94
  parallel (1.24.0)
109
- parser (3.3.0.5)
95
+ parser (3.3.1.0)
110
96
  ast (~> 2.4.1)
111
97
  racc
112
98
  pry (0.14.2)
113
99
  coderay (~> 1.1)
114
100
  method_source (~> 1.0)
115
- public_suffix (5.0.4)
116
- racc (1.7.3)
101
+ public_suffix (5.0.5)
102
+ racc (1.8.0)
117
103
  rainbow (3.1.1)
118
- rake (13.1.0)
104
+ rake (13.2.1)
119
105
  rb-fsevent (0.11.2)
120
- rb-inotify (0.10.1)
106
+ rb-inotify (0.11.1)
121
107
  ffi (~> 1.0)
122
108
  rchardet (1.8.0)
123
- regexp_parser (2.9.0)
124
- rexml (3.2.6)
109
+ regexp_parser (2.9.2)
110
+ rexml (3.2.8)
111
+ strscan (>= 3.0.9)
125
112
  rspec (3.13.0)
126
113
  rspec-core (~> 3.13.0)
127
114
  rspec-expectations (~> 3.13.0)
@@ -131,11 +118,11 @@ GEM
131
118
  rspec-expectations (3.13.0)
132
119
  diff-lcs (>= 1.2.0, < 2.0)
133
120
  rspec-support (~> 3.13.0)
134
- rspec-mocks (3.13.0)
121
+ rspec-mocks (3.13.1)
135
122
  diff-lcs (>= 1.2.0, < 2.0)
136
123
  rspec-support (~> 3.13.0)
137
- rspec-support (3.13.0)
138
- rubocop (1.60.2)
124
+ rspec-support (3.13.1)
125
+ rubocop (1.63.5)
139
126
  json (~> 2.3)
140
127
  language_server-protocol (>= 3.17.0)
141
128
  parallel (~> 1.10)
@@ -143,33 +130,36 @@ GEM
143
130
  rainbow (>= 2.2.2, < 4.0)
144
131
  regexp_parser (>= 1.8, < 3.0)
145
132
  rexml (>= 3.2.5, < 4.0)
146
- rubocop-ast (>= 1.30.0, < 2.0)
133
+ rubocop-ast (>= 1.31.1, < 2.0)
147
134
  ruby-progressbar (~> 1.7)
148
135
  unicode-display_width (>= 2.4.0, < 3.0)
149
- rubocop-ast (1.30.0)
150
- parser (>= 3.2.1.0)
136
+ rubocop-ast (1.31.3)
137
+ parser (>= 3.3.1.0)
151
138
  rubocop-capybara (2.20.0)
152
139
  rubocop (~> 1.41)
153
140
  rubocop-factory_bot (2.25.1)
154
141
  rubocop (~> 1.41)
155
142
  rubocop-rake (0.6.0)
156
143
  rubocop (~> 1.0)
157
- rubocop-rspec (2.26.1)
144
+ rubocop-rspec (2.29.2)
158
145
  rubocop (~> 1.40)
159
146
  rubocop-capybara (~> 2.17)
160
147
  rubocop-factory_bot (~> 2.22)
148
+ rubocop-rspec_rails (~> 2.28)
149
+ rubocop-rspec_rails (2.28.3)
150
+ rubocop (~> 1.40)
161
151
  ruby-progressbar (1.13.0)
162
152
  sawyer (0.9.2)
163
153
  addressable (>= 2.3.5)
164
154
  faraday (>= 0.17.3, < 3)
165
155
  shellany (0.0.1)
156
+ strscan (3.1.0)
166
157
  terminal-table (3.0.2)
167
158
  unicode-display_width (>= 1.1.1, < 3)
168
- thor (1.0.1)
159
+ thor (1.3.1)
169
160
  unicode-display_width (2.5.0)
170
161
  uri (0.13.0)
171
- xcresult (0.2.1)
172
- yard (0.9.34)
162
+ yard (0.9.36)
173
163
 
174
164
  PLATFORMS
175
165
  arm64-darwin-22
@@ -25,10 +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-junit', '~> 1.0'
29
- spec.add_dependency 'danger-rubocop', '~> 0.12'
30
- spec.add_dependency 'danger-swiftlint', '~> 0.35'
31
- spec.add_dependency 'danger-xcode_summary', '~> 1.0'
28
+ spec.add_dependency 'danger-rubocop', '~> 0.13'
32
29
 
33
30
  # General ruby development
34
31
  spec.add_development_dependency 'bundler', '~> 2.0'
@@ -38,7 +35,7 @@ Gem::Specification.new do |spec|
38
35
  spec.add_development_dependency 'rspec', '~> 3.4'
39
36
 
40
37
  # Linting code and docs
41
- spec.add_dependency 'rubocop', '~> 1.60'
38
+ spec.add_dependency 'rubocop', '~> 1.63'
42
39
  spec.add_development_dependency 'rubocop-rake'
43
40
  spec.add_development_dependency 'rubocop-rspec'
44
41
  spec.add_development_dependency 'yard'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dangermattic
4
- VERSION = '1.0.1'
4
+ VERSION = '1.1.1'
5
5
  end
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.0.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-02-22 00:00:00.000000000 Z
11
+ date: 2024-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: danger
@@ -38,62 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.0'
41
- - !ruby/object:Gem::Dependency
42
- name: danger-junit
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: danger-rubocop
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '0.12'
47
+ version: '0.13'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '0.12'
69
- - !ruby/object:Gem::Dependency
70
- name: danger-swiftlint
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '0.35'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0.35'
83
- - !ruby/object:Gem::Dependency
84
- name: danger-xcode_summary
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '1.0'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '1.0'
54
+ version: '0.13'
97
55
  - !ruby/object:Gem::Dependency
98
56
  name: bundler
99
57
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +100,14 @@ dependencies:
142
100
  requirements:
143
101
  - - "~>"
144
102
  - !ruby/object:Gem::Version
145
- version: '1.60'
103
+ version: '1.63'
146
104
  type: :runtime
147
105
  prerelease: false
148
106
  version_requirements: !ruby/object:Gem::Requirement
149
107
  requirements:
150
108
  - - "~>"
151
109
  - !ruby/object:Gem::Version
152
- version: '1.60'
110
+ version: '1.63'
153
111
  - !ruby/object:Gem::Dependency
154
112
  name: rubocop-rake
155
113
  requirement: !ruby/object:Gem::Requirement
@@ -244,6 +202,7 @@ files:
244
202
  - ".buildkite/pipeline.yml"
245
203
  - ".bundle/config"
246
204
  - ".github/workflows/reusable-check-labels-on-issues.yml"
205
+ - ".github/workflows/reusable-retry-buildkite-step-on-events.yml"
247
206
  - ".github/workflows/reusable-run-danger.yml"
248
207
  - ".gitignore"
249
208
  - ".rubocop.yml"