ndr_dev_support 5.6.0 → 5.8.2
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/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 [](https://travis-ci.org/PublicHealthEngland/ndr_dev_support) [](https://badge.fury.io/rb/ndr_dev_support)
|
|
1
|
+
## NdrDevSupport [](https://codeclimate.com/github/PublicHealthEngland/ndr_dev_support/maintainability) [](https://travis-ci.org/PublicHealthEngland/ndr_dev_support) [](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: []
|