ndr_dev_support 5.6.0 → 5.8.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -0
- data/README.md +2 -2
- data/code_safety.yml +13 -13
- data/lib/ndr_dev_support/capistrano/svn_cache.rb +6 -0
- data/lib/ndr_dev_support/daemon/ci_server.rb +6 -2
- data/lib/ndr_dev_support/integration_testing/drivers/switchable.rb +12 -3
- data/lib/ndr_dev_support/rake_ci/brakeman_helper.rb +87 -2
- data/lib/ndr_dev_support/rake_ci/redmine/ticket_resolver.rb +11 -7
- data/lib/ndr_dev_support/version.rb +1 -1
- data/lib/tasks/ci/brakeman.rake +24 -37
- data/lib/tasks/ci/minitest.rake +3 -4
- data/lib/tasks/ci/redmine.rake +2 -2
- data/ndr_dev_support.gemspec +1 -1
- metadata +10 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9b878ad48df8dc40c659917f099ea1c3da1b500cfb691bfae12e6c96bcc99d6
|
4
|
+
data.tar.gz: 3a698ad806791e2f6396655de2bfdcd3b004154a27ca29af5bb44b887774179e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0386fd7910a6bd53ecf101a7a365f1decfab0dab3900518482755f2fb6de3f9c0a6d5a5e277eedc6974462aa9a8d6ea5fee0dfe7d301fb365dfd0dc919967a6
|
7
|
+
data.tar.gz: e2fc2e48785bee63f870f0a84c70354986974172a3b65c21f3b46db323b88423ec2975879a6f6dba5b60bd2283d37ddd9fbfccfe800b2508b39612fae6c65e84
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,32 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
*no unreleased changes*
|
3
3
|
|
4
|
+
## 5.8.2 / 2020-07-22
|
5
|
+
### Fixed
|
6
|
+
* Tweak integration testing driver config, for capybara 3.33.0 deprecations
|
7
|
+
|
8
|
+
## 5.8.1 / 2020-07-10
|
9
|
+
### Fixed
|
10
|
+
* Fix issue running `brakeman:fingerprint_details` task
|
11
|
+
|
12
|
+
## 5.8.0 / 2020-04-07
|
13
|
+
### Added
|
14
|
+
* Ability to select git CI branch by exporting `RAKE_CI_BRANCH_NAME`
|
15
|
+
|
16
|
+
## 5.7.1 / 2020-04-07
|
17
|
+
### Fixed
|
18
|
+
* Address issue updating redmine using commit message tags
|
19
|
+
|
20
|
+
## 5.7.0 / 2020-03-26
|
21
|
+
### Added
|
22
|
+
* Add `ci:brakeman:strict` alternative CI task. (#77)
|
23
|
+
* Send `brakeman_filtered_warnings` metrics. (#78)
|
24
|
+
* Allow redmine tickets to be updated (but not resolved) when the build fails (#73)
|
25
|
+
|
26
|
+
### Fixed
|
27
|
+
* Stop including asset compilation caches in the deployment archive.
|
28
|
+
* Ensure brakeman alerts aren't sent to Slack if they've been reviewed and filtered out
|
29
|
+
|
4
30
|
## 5.6.0 / 2020-02-14
|
5
31
|
### Added
|
6
32
|
* Add `flakey_test` to the minitest DSL, to allow sporadic failures to be retried
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
## NdrDevSupport [![Build Status](https://travis-ci.org/PublicHealthEngland/ndr_dev_support.svg?branch=master)](https://travis-ci.org/PublicHealthEngland/ndr_dev_support) [![Gem Version](https://badge.fury.io/rb/ndr_dev_support.svg)](https://badge.fury.io/rb/ndr_dev_support)
|
1
|
+
## NdrDevSupport [![Maintainability](https://api.codeclimate.com/v1/badges/2b2a644964f2aa930f81/maintainability)](https://codeclimate.com/github/PublicHealthEngland/ndr_dev_support/maintainability) [![Build Status](https://travis-ci.org/PublicHealthEngland/ndr_dev_support.svg?branch=master)](https://travis-ci.org/PublicHealthEngland/ndr_dev_support) [![Gem Version](https://badge.fury.io/rb/ndr_dev_support.svg)](https://badge.fury.io/rb/ndr_dev_support)
|
2
2
|
|
3
3
|
This is the Public Health England (PHE) National Disease Registers (NDR) Developer Support ruby gem,
|
4
4
|
providing:
|
@@ -28,7 +28,7 @@ Or install it yourself as:
|
|
28
28
|
To add development support tasks (see below) to your project, add this line to your application's `Rakefile`:
|
29
29
|
|
30
30
|
```ruby
|
31
|
-
require 'ndr_dev_support/tasks'
|
31
|
+
require 'ndr_dev_support/tasks' if Rails.env.development? || Rails.env.test?
|
32
32
|
```
|
33
33
|
|
34
34
|
## Usage
|
data/code_safety.yml
CHANGED
@@ -19,7 +19,7 @@ file safety:
|
|
19
19
|
CHANGELOG.md:
|
20
20
|
comments:
|
21
21
|
reviewed_by: josh.pencheon
|
22
|
-
safe_revision:
|
22
|
+
safe_revision: 49a8831328fb7d24f8f6f91c5295e8f8348a383d
|
23
23
|
CODE_OF_CONDUCT.md:
|
24
24
|
comments:
|
25
25
|
reviewed_by: timgentry
|
@@ -35,7 +35,7 @@ file safety:
|
|
35
35
|
README.md:
|
36
36
|
comments:
|
37
37
|
reviewed_by: josh.pencheon
|
38
|
-
safe_revision:
|
38
|
+
safe_revision: e389930b98976f20e3fc94c771e5c456b729f8cb
|
39
39
|
Rakefile:
|
40
40
|
comments:
|
41
41
|
reviewed_by: josh.pencheon
|
@@ -99,7 +99,7 @@ file safety:
|
|
99
99
|
lib/ndr_dev_support/capistrano/svn_cache.rb:
|
100
100
|
comments:
|
101
101
|
reviewed_by: josh.pencheon
|
102
|
-
safe_revision:
|
102
|
+
safe_revision: 2baa360b06290775a961a7573fe08edd18f8312e
|
103
103
|
lib/ndr_dev_support/capistrano/sysadmin_scripts.rb:
|
104
104
|
comments:
|
105
105
|
reviewed_by: josh.pencheon
|
@@ -107,7 +107,7 @@ file safety:
|
|
107
107
|
lib/ndr_dev_support/daemon/ci_server.rb:
|
108
108
|
comments:
|
109
109
|
reviewed_by: josh.pencheon
|
110
|
-
safe_revision:
|
110
|
+
safe_revision: 3fdf010a91bd9927ef34e3df66b8a4bbbd20315a
|
111
111
|
lib/ndr_dev_support/daemon/stoppable.rb:
|
112
112
|
comments:
|
113
113
|
reviewed_by: josh.pencheon
|
@@ -135,7 +135,7 @@ file safety:
|
|
135
135
|
lib/ndr_dev_support/integration_testing/drivers/switchable.rb:
|
136
136
|
comments:
|
137
137
|
reviewed_by: josh.pencheon
|
138
|
-
safe_revision:
|
138
|
+
safe_revision: e9b74559d28e7520c0376d1bec4a2566aae14b05
|
139
139
|
lib/ndr_dev_support/integration_testing/dsl.rb:
|
140
140
|
comments:
|
141
141
|
reviewed_by: josh.pencheon
|
@@ -147,7 +147,7 @@ file safety:
|
|
147
147
|
lib/ndr_dev_support/rake_ci/brakeman_helper.rb:
|
148
148
|
comments:
|
149
149
|
reviewed_by: josh.pencheon
|
150
|
-
safe_revision:
|
150
|
+
safe_revision: 053c9834ca5d402a1f8dc8d09257dc7075a5ec06
|
151
151
|
lib/ndr_dev_support/rake_ci/commit_cop.rb:
|
152
152
|
comments:
|
153
153
|
reviewed_by: josh.pencheon
|
@@ -179,7 +179,7 @@ file safety:
|
|
179
179
|
lib/ndr_dev_support/rake_ci/redmine/ticket_resolver.rb:
|
180
180
|
comments:
|
181
181
|
reviewed_by: josh.pencheon
|
182
|
-
safe_revision:
|
182
|
+
safe_revision: 788b8fc31952a6fb640101df96a370b21d269249
|
183
183
|
lib/ndr_dev_support/rake_ci/simple_cov_helper.rb:
|
184
184
|
comments:
|
185
185
|
reviewed_by: timgentry
|
@@ -215,7 +215,7 @@ file safety:
|
|
215
215
|
lib/ndr_dev_support/version.rb:
|
216
216
|
comments:
|
217
217
|
reviewed_by: josh.pencheon
|
218
|
-
safe_revision:
|
218
|
+
safe_revision: 49a8831328fb7d24f8f6f91c5295e8f8348a383d
|
219
219
|
lib/tasks/audit_code.rake:
|
220
220
|
comments: Identical to the version reviewed by josh.pencheon when contained within
|
221
221
|
ndr_support
|
@@ -224,7 +224,7 @@ file safety:
|
|
224
224
|
lib/tasks/ci/brakeman.rake:
|
225
225
|
comments:
|
226
226
|
reviewed_by: josh.pencheon
|
227
|
-
safe_revision:
|
227
|
+
safe_revision: fe7dfc7f1775e8b85ae6968e8f475b9e930addf7
|
228
228
|
lib/tasks/ci/bundle_audit.rake:
|
229
229
|
comments:
|
230
230
|
reviewed_by: josh.pencheon
|
@@ -248,7 +248,7 @@ file safety:
|
|
248
248
|
lib/tasks/ci/minitest.rake:
|
249
249
|
comments:
|
250
250
|
reviewed_by: josh.pencheon
|
251
|
-
safe_revision:
|
251
|
+
safe_revision: 12aad1254186ee9ce0fde263bf8dccf46cdfebe2
|
252
252
|
lib/tasks/ci/notes.rake:
|
253
253
|
comments:
|
254
254
|
reviewed_by: timgentry
|
@@ -260,7 +260,7 @@ file safety:
|
|
260
260
|
lib/tasks/ci/redmine.rake:
|
261
261
|
comments:
|
262
262
|
reviewed_by: josh.pencheon
|
263
|
-
safe_revision:
|
263
|
+
safe_revision: 12aad1254186ee9ce0fde263bf8dccf46cdfebe2
|
264
264
|
lib/tasks/ci/rugged.rake:
|
265
265
|
comments:
|
266
266
|
reviewed_by: josh.pencheon
|
@@ -288,7 +288,7 @@ file safety:
|
|
288
288
|
ndr_dev_support.gemspec:
|
289
289
|
comments:
|
290
290
|
reviewed_by: josh.pencheon
|
291
|
-
safe_revision:
|
291
|
+
safe_revision: f4c1ea57d3eb817783fdc47a16169d215f9788a6
|
292
292
|
test/daemon/ci_server_test.rb:
|
293
293
|
comments:
|
294
294
|
reviewed_by: josh.pencheon
|
@@ -316,7 +316,7 @@ file safety:
|
|
316
316
|
test/rake_ci/redmine/ticket_resolver_test.rb:
|
317
317
|
comments:
|
318
318
|
reviewed_by: josh.pencheon
|
319
|
-
safe_revision:
|
319
|
+
safe_revision: 12aad1254186ee9ce0fde263bf8dccf46cdfebe2
|
320
320
|
test/test_helper.rb:
|
321
321
|
comments:
|
322
322
|
reviewed_by: josh.pencheon
|
@@ -17,7 +17,13 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
17
17
|
system("rm -rf #{cache}")
|
18
18
|
end
|
19
19
|
end
|
20
|
+
|
21
|
+
desc 'Ensures compilation artefacts are removed from the compressed archive sent to the server'
|
22
|
+
task :augment_copy_exclude do
|
23
|
+
set :copy_exclude, (fetch(:copy_exclude) || []) + %w[node_modules tmp/*]
|
24
|
+
end
|
20
25
|
end
|
21
26
|
|
27
|
+
before 'deploy:update_code', 'ndr_dev_support:augment_copy_exclude'
|
22
28
|
before 'deploy:update_code', 'ndr_dev_support:remove_svn_cache_if_needed'
|
23
29
|
end
|
@@ -48,7 +48,7 @@ module NdrDevSupport
|
|
48
48
|
|
49
49
|
git_fetch
|
50
50
|
git_discard_changes
|
51
|
-
git_checkout(
|
51
|
+
git_checkout(git_branch_name)
|
52
52
|
|
53
53
|
objectids_between_master_and_remote.each do |oid|
|
54
54
|
log("testing #{oid}...")
|
@@ -72,6 +72,10 @@ module NdrDevSupport
|
|
72
72
|
raise exception
|
73
73
|
end
|
74
74
|
|
75
|
+
def git_branch_name
|
76
|
+
ENV.fetch('RAKE_CI_BRANCH_NAME', MASTER_BRANCH_NAME)
|
77
|
+
end
|
78
|
+
|
75
79
|
def git_fetch
|
76
80
|
system(svn_remote? ? 'git svn fetch' : 'git fetch')
|
77
81
|
end
|
@@ -117,7 +121,7 @@ module NdrDevSupport
|
|
117
121
|
def objectids_between_master_and_remote
|
118
122
|
walker = Rugged::Walker.new(@repo)
|
119
123
|
walker.push(repo.branches[remote_branch].target_id)
|
120
|
-
current_target_id = repo.branches[
|
124
|
+
current_target_id = repo.branches[git_branch_name].target_id
|
121
125
|
|
122
126
|
revisions = []
|
123
127
|
# walk backwards from the most recent commit, breaking at the current one
|
@@ -18,14 +18,23 @@ module NdrDevSupport
|
|
18
18
|
CONFIGURED = ENV.fetch('INTEGRATION_DRIVER', DEFAULT).to_sym
|
19
19
|
|
20
20
|
Capybara.register_driver(:switchable) do |app|
|
21
|
-
Capybara.drivers
|
21
|
+
configured_driver = Capybara.drivers[CONFIGURED]
|
22
|
+
raise "Driver #{CONFIGURED} not found!" unless configured_driver
|
23
|
+
|
24
|
+
configured_driver.call(app)
|
22
25
|
end
|
23
26
|
|
24
27
|
Capybara::Screenshot.register_driver(:switchable) do |driver, path|
|
25
|
-
Capybara::Screenshot.registered_drivers
|
28
|
+
configured_screenshot_driver = Capybara::Screenshot.registered_drivers[CONFIGURED]
|
29
|
+
raise "Screenshot driver #{CONFIGURED} not found!" unless configured_screenshot_driver
|
30
|
+
|
31
|
+
configured_screenshot_driver.call(driver, path)
|
26
32
|
end
|
27
33
|
|
28
|
-
|
34
|
+
cookie_driver = ShowMeTheCookies.adapters[CONFIGURED]
|
35
|
+
raise "Cookie driver #{CONFIGURED} not found!" unless cookie_driver
|
36
|
+
|
37
|
+
ShowMeTheCookies.register_adapter(:switchable, cookie_driver)
|
29
38
|
end
|
30
39
|
end
|
31
40
|
end
|
@@ -10,7 +10,9 @@ module NdrDevSupport
|
|
10
10
|
|
11
11
|
attr_reader :new_fingerprints, :old_fingerprints, :tracker
|
12
12
|
|
13
|
-
def run
|
13
|
+
def run(strict:)
|
14
|
+
@strict = strict
|
15
|
+
|
14
16
|
@tracker = ::Brakeman.run(app_path: '.')
|
15
17
|
|
16
18
|
last_commit_fingerprints = load_last_commit_data
|
@@ -22,10 +24,16 @@ module NdrDevSupport
|
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
27
|
+
# All warnings (including those we've flagged as false positives)
|
25
28
|
def warnings
|
26
29
|
@tracker.warnings
|
27
30
|
end
|
28
31
|
|
32
|
+
# Only the warnings we haven't flagged as false positives (i.e. the outstanding ones)
|
33
|
+
def filtered_warnings
|
34
|
+
@tracker.filtered_warnings
|
35
|
+
end
|
36
|
+
|
29
37
|
def warning_counts_by_confidence
|
30
38
|
return @warning_counts_by_confidence if @warning_counts_by_confidence
|
31
39
|
|
@@ -36,13 +44,90 @@ module NdrDevSupport
|
|
36
44
|
@warning_counts_by_confidence
|
37
45
|
end
|
38
46
|
|
47
|
+
def filtered_warning_counts_by_confidence
|
48
|
+
return @filtered_warning_counts_by_confidence if @filtered_warning_counts_by_confidence
|
49
|
+
|
50
|
+
@filtered_warning_counts_by_confidence = {}
|
51
|
+
filtered_warnings.group_by(&:confidence).each do |confidence, grouped_warnings|
|
52
|
+
@filtered_warning_counts_by_confidence[confidence] = grouped_warnings.count
|
53
|
+
end
|
54
|
+
@filtered_warning_counts_by_confidence
|
55
|
+
end
|
56
|
+
|
39
57
|
def current_fingerprints
|
40
|
-
@current_fingerprints ||=
|
58
|
+
@current_fingerprints ||= filtered_warnings.map(&:fingerprint).to_set
|
41
59
|
end
|
42
60
|
|
43
61
|
def save_current_fingerprints
|
44
62
|
save_current_commit_data(current_fingerprints)
|
45
63
|
end
|
64
|
+
|
65
|
+
def metrics
|
66
|
+
metrics = []
|
67
|
+
|
68
|
+
::Brakeman::Warning::TEXT_CONFIDENCE.each do |confidence, text|
|
69
|
+
overall_metric = {
|
70
|
+
name: 'brakeman_warnings',
|
71
|
+
type: :gauge,
|
72
|
+
label_set: { confidence: text },
|
73
|
+
value: warning_counts_by_confidence[confidence] || 0
|
74
|
+
}
|
75
|
+
filtered_metric = {
|
76
|
+
name: 'brakeman_filtered_warnings',
|
77
|
+
type: :gauge,
|
78
|
+
label_set: { confidence: text },
|
79
|
+
value: filtered_warning_counts_by_confidence[confidence] || 0
|
80
|
+
}
|
81
|
+
metrics << overall_metric << filtered_metric
|
82
|
+
puts overall_metric.inspect
|
83
|
+
puts filtered_metric.inspect
|
84
|
+
end
|
85
|
+
|
86
|
+
metrics
|
87
|
+
end
|
88
|
+
|
89
|
+
def attachments
|
90
|
+
attachments = []
|
91
|
+
|
92
|
+
if @strict && current_fingerprints.any?
|
93
|
+
# all warnings found
|
94
|
+
attachment = {
|
95
|
+
color: 'danger',
|
96
|
+
title: "#{current_fingerprints.size} Brakeman warning(s) :rotating_light:",
|
97
|
+
text: '_Brakeman_ warning fingerprint(s):' \
|
98
|
+
"```#{current_fingerprints.to_a.join("\n")}```",
|
99
|
+
footer: 'bundle exec rake ci:brakeman:fingerprint_details FINGERPRINTS=...',
|
100
|
+
mrkdwn_in: ['text']
|
101
|
+
}
|
102
|
+
attachments << attachment
|
103
|
+
puts attachment.inspect
|
104
|
+
elsif new_fingerprints.any?
|
105
|
+
# new warnings found
|
106
|
+
attachment = {
|
107
|
+
color: 'danger',
|
108
|
+
title: "#{new_fingerprints.size} new Brakeman warning(s) :rotating_light:",
|
109
|
+
text: '_Brakeman_ warning fingerprint(s):' \
|
110
|
+
"```#{new_fingerprints.to_a.join("\n")}```",
|
111
|
+
footer: 'bundle exec rake ci:brakeman:fingerprint_details FINGERPRINTS=...',
|
112
|
+
mrkdwn_in: ['text']
|
113
|
+
}
|
114
|
+
attachments << attachment
|
115
|
+
puts attachment.inspect
|
116
|
+
end
|
117
|
+
|
118
|
+
unless old_fingerprints.empty?
|
119
|
+
# old warnings missing
|
120
|
+
attachment = {
|
121
|
+
color: 'good',
|
122
|
+
title: "#{old_fingerprints.size} Brakeman warning(s) resolved :+1:",
|
123
|
+
footer: 'bundle exec rake ci:brakeman'
|
124
|
+
}
|
125
|
+
attachments << attachment
|
126
|
+
puts attachment.inspect
|
127
|
+
end
|
128
|
+
|
129
|
+
attachments
|
130
|
+
end
|
46
131
|
end
|
47
132
|
end
|
48
133
|
end
|
@@ -36,13 +36,13 @@ module NdrDevSupport
|
|
36
36
|
@hostname = hostname
|
37
37
|
end
|
38
38
|
|
39
|
-
def process_commit(user, revision, message)
|
39
|
+
def process_commit(user, revision, message, tests_passed)
|
40
40
|
resolved_tickets = []
|
41
41
|
|
42
42
|
each_ticket_from(message) do |ticket, resolved|
|
43
|
-
update_ticket(message, user, revision, ticket, resolved)
|
43
|
+
update_ticket(message, user, revision, ticket, resolved, tests_passed)
|
44
44
|
|
45
|
-
resolved_tickets << ticket if resolved
|
45
|
+
resolved_tickets << ticket if resolved && tests_passed
|
46
46
|
end
|
47
47
|
|
48
48
|
resolved_tickets
|
@@ -62,13 +62,17 @@ module NdrDevSupport
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
def update_payload(message, user, revision, ticket_closed, resolved)
|
65
|
+
def update_payload(message, user, revision, ticket_closed, resolved, tests_passed)
|
66
|
+
if resolved && !ticket_closed && !tests_passed
|
67
|
+
message += "\n\n*Automated tests did not pass successfully, so ticket status left unchanged.*"
|
68
|
+
end
|
69
|
+
|
66
70
|
payload = {
|
67
71
|
notes: "_#{resolved ? 'Resolved' : 'Referenced'} by #{user} in #{revision}_:" \
|
68
72
|
"#{resolved ? message.gsub(CLOSE_REGEX, '+\1+') : message}"
|
69
73
|
}
|
70
74
|
|
71
|
-
payload[:status_id] = 3 if resolved && !ticket_closed
|
75
|
+
payload[:status_id] = 3 if resolved && !ticket_closed && tests_passed
|
72
76
|
payload
|
73
77
|
end
|
74
78
|
|
@@ -82,8 +86,8 @@ module NdrDevSupport
|
|
82
86
|
@http
|
83
87
|
end
|
84
88
|
|
85
|
-
def update_ticket(message, user, revision, ticket, resolved)
|
86
|
-
payload = update_payload(message, user, revision, ticket_closed?(ticket), resolved)
|
89
|
+
def update_ticket(message, user, revision, ticket, resolved, tests_passed)
|
90
|
+
payload = update_payload(message, user, revision, ticket_closed?(ticket), resolved, tests_passed)
|
87
91
|
|
88
92
|
http.send_request('PUT',
|
89
93
|
"/issues/#{ticket.to_i}.json",
|
data/lib/tasks/ci/brakeman.rake
CHANGED
@@ -11,48 +11,35 @@ namespace :ci do
|
|
11
11
|
|
12
12
|
brakeman = NdrDevSupport::RakeCI::BrakemanHelper.new
|
13
13
|
brakeman.commit = @commit
|
14
|
-
brakeman.run
|
15
|
-
|
16
|
-
Brakeman::Warning::TEXT_CONFIDENCE.each do |confidence, text|
|
17
|
-
metric = {
|
18
|
-
name: 'brakeman_warnings',
|
19
|
-
type: :gauge,
|
20
|
-
label_set: { confidence: text },
|
21
|
-
value: brakeman.warning_counts_by_confidence[confidence] || 0
|
22
|
-
}
|
23
|
-
@metrics << metric
|
24
|
-
puts metric.inspect
|
25
|
-
end
|
26
|
-
|
27
|
-
unless brakeman.new_fingerprints.empty?
|
28
|
-
# new warnings found
|
29
|
-
attachment = {
|
30
|
-
color: 'danger',
|
31
|
-
title: "#{brakeman.new_fingerprints.size} new Brakeman warning(s) :rotating_light:",
|
32
|
-
text: '_Brakeman_ warning fingerprint(s):' \
|
33
|
-
"```#{brakeman.new_fingerprints.to_a.join("\n")}```",
|
34
|
-
footer: 'bundle exec rake ci:brakeman:fingerprint_details FINGERPRINTS=...',
|
35
|
-
mrkdwn_in: ['text']
|
36
|
-
}
|
37
|
-
@attachments << attachment
|
38
|
-
puts attachment.inspect
|
39
|
-
end
|
14
|
+
brakeman.run(strict: false)
|
40
15
|
|
41
|
-
|
42
|
-
|
43
|
-
attachment = {
|
44
|
-
color: 'good',
|
45
|
-
title: "#{brakeman.old_fingerprints.size} Brakeman warning(s) resolved :+1:",
|
46
|
-
footer: 'bundle exec rake ci:brakeman'
|
47
|
-
}
|
48
|
-
@attachments << attachment
|
49
|
-
puts attachment.inspect
|
50
|
-
end
|
16
|
+
@metrics.concat(brakeman.metrics)
|
17
|
+
@attachments.concat(brakeman.attachments)
|
51
18
|
|
52
19
|
brakeman.save_current_fingerprints
|
53
20
|
end
|
54
21
|
|
55
22
|
namespace :brakeman do
|
23
|
+
desc "Brakeman (strict mode - all issues must be reviewed by Brakeman's interactive mode)"
|
24
|
+
task strict: 'ci:rugged:setup' do
|
25
|
+
next unless defined?(Rails)
|
26
|
+
|
27
|
+
require 'ndr_dev_support/rake_ci/brakeman_helper'
|
28
|
+
# Usage: bundle exec rake ci:brakeman:strict
|
29
|
+
|
30
|
+
@metrics ||= []
|
31
|
+
@attachments ||= []
|
32
|
+
|
33
|
+
brakeman = NdrDevSupport::RakeCI::BrakemanHelper.new
|
34
|
+
brakeman.commit = @commit
|
35
|
+
brakeman.run(strict: true)
|
36
|
+
|
37
|
+
@metrics.concat(brakeman.metrics)
|
38
|
+
@attachments.concat(brakeman.attachments)
|
39
|
+
|
40
|
+
brakeman.save_current_fingerprints
|
41
|
+
end
|
42
|
+
|
56
43
|
desc 'Brakeman fingerprint details'
|
57
44
|
task fingerprint_details: 'ci:rugged:setup' do
|
58
45
|
# Usage: bundle exec rake ci:brakeman:fingerprint_details FINGERPRINTS=fp1,fp2,...
|
@@ -70,7 +57,7 @@ namespace :ci do
|
|
70
57
|
|
71
58
|
brakeman = NdrDevSupport::RakeCI::BrakemanHelper.new
|
72
59
|
brakeman.commit = @commit
|
73
|
-
brakeman.run
|
60
|
+
brakeman.run(strict: false)
|
74
61
|
|
75
62
|
text_reporter = Brakeman::Report::Text.new(brakeman.tracker)
|
76
63
|
|
data/lib/tasks/ci/minitest.rake
CHANGED
@@ -47,10 +47,9 @@ namespace :ci do
|
|
47
47
|
# Test(s) ran
|
48
48
|
Rake::Task['ci:simplecov:process'].invoke
|
49
49
|
|
50
|
-
if
|
51
|
-
|
52
|
-
|
53
|
-
Rake::Task['ci:redmine:update_tickets'].invoke
|
50
|
+
if Rake::Task.task_defined?('ci:redmine:update_tickets')
|
51
|
+
tests_passed = hash[:statistics][:failures].zero? && hash[:statistics][:errors].zero?
|
52
|
+
Rake::Task['ci:redmine:update_tickets'].invoke(tests_passed)
|
54
53
|
end
|
55
54
|
|
56
55
|
@attachments.concat(hash[:attachments])
|
data/lib/tasks/ci/redmine.rake
CHANGED
@@ -12,7 +12,7 @@ namespace :ci do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
desc 'Update Redmine tickets'
|
15
|
-
task update_tickets: ['ci:rugged:setup', 'ci:redmine:setup'] do
|
15
|
+
task :update_tickets, [:tests_passed] => ['ci:rugged:setup', 'ci:redmine:setup'] do |task, args|
|
16
16
|
api_key = ENV['REDMINE_API_KEY']
|
17
17
|
hostname = ENV['REDMINE_HOSTNAME']
|
18
18
|
next if api_key.nil? || hostname.nil?
|
@@ -27,7 +27,7 @@ namespace :ci do
|
|
27
27
|
ticket_resolver = NdrDevSupport::RakeCI::Redmine::TicketResolver.new(api_key, hostname)
|
28
28
|
resolved_tickets = ticket_resolver.process_commit(@commit.author[:name],
|
29
29
|
@friendly_revision_name,
|
30
|
-
@commit.message)
|
30
|
+
@commit.message, args.tests_passed)
|
31
31
|
rescue
|
32
32
|
@attachments << {
|
33
33
|
color: 'danger',
|
data/ndr_dev_support.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ndr_dev_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- NCRS Development Team
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -366,14 +366,20 @@ dependencies:
|
|
366
366
|
requirements:
|
367
367
|
- - "~>"
|
368
368
|
- !ruby/object:Gem::Version
|
369
|
-
version: '
|
369
|
+
version: '12.3'
|
370
|
+
- - ">="
|
371
|
+
- !ruby/object:Gem::Version
|
372
|
+
version: 12.3.3
|
370
373
|
type: :development
|
371
374
|
prerelease: false
|
372
375
|
version_requirements: !ruby/object:Gem::Requirement
|
373
376
|
requirements:
|
374
377
|
- - "~>"
|
375
378
|
- !ruby/object:Gem::Version
|
376
|
-
version: '
|
379
|
+
version: '12.3'
|
380
|
+
- - ">="
|
381
|
+
- !ruby/object:Gem::Version
|
382
|
+
version: 12.3.3
|
377
383
|
description: Provides support to developers of NDR projects
|
378
384
|
email: []
|
379
385
|
executables: []
|