ndr_dev_support 5.0.1 → 5.1.0
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 +10 -0
- data/code_safety.yml +7 -7
- data/lib/minitest/rake_ci_plugin.rb +7 -3
- data/lib/ndr_dev_support/daemon/ci_server.rb +2 -1
- data/lib/ndr_dev_support/rake_ci/concerns/commit_metadata_persistable.rb +15 -16
- data/lib/ndr_dev_support/version.rb +1 -1
- data/lib/tasks/ci/prometheus.rake +7 -5
- data/lib/tasks/ci/redmine.rake +16 -5
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b33b208c31e16b68d55cbbc40f482d5e1d6146ef2190999b9481670706851535
|
4
|
+
data.tar.gz: 3cdc280a9023b1e326680f86e753d67e1124ce185046cc9fefb590b0cd5a9a34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f453af8d2db1f63f3cf9fe95141ba4943b80394a4769f76f194864168d1d20c7499d22f8ee5a5e74ada6cd2261bb95f1cde31b9e99dd1c47046d29fd48b6a06f
|
7
|
+
data.tar.gz: 2470eac3017806dd8ad4707044ffb67e133df973414d729a374525ca3b6e36226ced375335ac4f1c0e1ccf0d74a247f692130c7c532607b526ad31884bf9f46a
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
*no unreleased changes*
|
3
3
|
|
4
|
+
## 5.1.0 / 2019-01-31
|
5
|
+
### Added
|
6
|
+
* CI: send a slack message whenever tests pass
|
7
|
+
* CI: send a slack message if Redmine update fails
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
* prevent `commit_metadata_persistable` from wiping prior result immediately
|
11
|
+
* fix issue with multiple prometheus clients erasing each others' pushes
|
12
|
+
* CI: improve git cleanup to aid auto-recovery after failure
|
13
|
+
|
4
14
|
## 5.0.1 / 2019-01-31
|
5
15
|
### Fixed
|
6
16
|
* fix CI issue when Rails isn't fully loaded.
|
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: 21bcc26b9d466ccd9283dcb170fbee9138b7bfee
|
23
23
|
CODE_OF_CONDUCT.md:
|
24
24
|
comments:
|
25
25
|
reviewed_by: timgentry
|
@@ -55,7 +55,7 @@ file safety:
|
|
55
55
|
lib/minitest/rake_ci_plugin.rb:
|
56
56
|
comments:
|
57
57
|
reviewed_by: josh.pencheon
|
58
|
-
safe_revision:
|
58
|
+
safe_revision: 9023b4def89e618d3f22333e9fbabd6a816873bf
|
59
59
|
lib/ndr_dev_support.rb:
|
60
60
|
comments:
|
61
61
|
reviewed_by: timgentry
|
@@ -95,7 +95,7 @@ file safety:
|
|
95
95
|
lib/ndr_dev_support/daemon/ci_server.rb:
|
96
96
|
comments:
|
97
97
|
reviewed_by: josh.pencheon
|
98
|
-
safe_revision:
|
98
|
+
safe_revision: 5075331fb3f33cd214c2ca76b199f27ddd743170
|
99
99
|
lib/ndr_dev_support/daemon/stoppable.rb:
|
100
100
|
comments:
|
101
101
|
reviewed_by: josh.pencheon
|
@@ -159,7 +159,7 @@ file safety:
|
|
159
159
|
lib/ndr_dev_support/rake_ci/concerns/commit_metadata_persistable.rb:
|
160
160
|
comments:
|
161
161
|
reviewed_by: josh.pencheon
|
162
|
-
safe_revision:
|
162
|
+
safe_revision: d3347202d1efafc419c1d79d2643f3fdfcbfdd65
|
163
163
|
lib/ndr_dev_support/rake_ci/redmine/ticket_resolver.rb:
|
164
164
|
comments:
|
165
165
|
reviewed_by: josh.pencheon
|
@@ -195,7 +195,7 @@ file safety:
|
|
195
195
|
lib/ndr_dev_support/version.rb:
|
196
196
|
comments:
|
197
197
|
reviewed_by: josh.pencheon
|
198
|
-
safe_revision:
|
198
|
+
safe_revision: 21bcc26b9d466ccd9283dcb170fbee9138b7bfee
|
199
199
|
lib/tasks/audit_code.rake:
|
200
200
|
comments: Identical to the version reviewed by josh.pencheon when contained within
|
201
201
|
ndr_support
|
@@ -236,11 +236,11 @@ file safety:
|
|
236
236
|
lib/tasks/ci/prometheus.rake:
|
237
237
|
comments:
|
238
238
|
reviewed_by: josh.pencheon
|
239
|
-
safe_revision:
|
239
|
+
safe_revision: 2d1b9d19acafebe6ca5f995bf15243abe2847eec
|
240
240
|
lib/tasks/ci/redmine.rake:
|
241
241
|
comments:
|
242
242
|
reviewed_by: josh.pencheon
|
243
|
-
safe_revision:
|
243
|
+
safe_revision: 2d1b9d19acafebe6ca5f995bf15243abe2847eec
|
244
244
|
lib/tasks/ci/rugged.rake:
|
245
245
|
comments:
|
246
246
|
reviewed_by: timgentry
|
@@ -76,7 +76,7 @@ module Minitest
|
|
76
76
|
@current_attachments = []
|
77
77
|
@current_attachments << failures_attachment if failures.positive?
|
78
78
|
@current_attachments << errors_attachment if errors.positive?
|
79
|
-
@current_attachments << pass_attachment if
|
79
|
+
@current_attachments << pass_attachment if passing?
|
80
80
|
@current_attachments
|
81
81
|
end
|
82
82
|
|
@@ -99,13 +99,17 @@ module Minitest
|
|
99
99
|
def pass_attachment
|
100
100
|
{
|
101
101
|
color: 'good',
|
102
|
-
text: 'Tests now pass',
|
102
|
+
text: newly_passing? ? 'Tests now pass! :tada:' : 'Tests passed',
|
103
103
|
footer: 'bundle exec rake ci:minitest'
|
104
104
|
}
|
105
105
|
end
|
106
106
|
|
107
|
+
def passing?
|
108
|
+
!(failures.positive? || errors.positive?)
|
109
|
+
end
|
110
|
+
|
107
111
|
def newly_passing?
|
108
|
-
return false
|
112
|
+
return false unless passing?
|
109
113
|
|
110
114
|
last_commit_hash = load_last_commit_data
|
111
115
|
return false if last_commit_hash.nil?
|
@@ -47,17 +47,18 @@ module NdrDevSupport
|
|
47
47
|
log('running once...')
|
48
48
|
|
49
49
|
git_fetch
|
50
|
+
git_discard_changes
|
50
51
|
git_checkout(MASTER_BRANCH_NAME)
|
51
52
|
|
52
53
|
objectids_between_master_and_remote.each do |oid|
|
53
54
|
log("testing #{oid}...")
|
55
|
+
git_discard_changes
|
54
56
|
git_rebase(oid)
|
55
57
|
|
56
58
|
WithCleanRbenv.with_clean_rbenv do
|
57
59
|
# TODO: rbenv_install
|
58
60
|
bundle_install
|
59
61
|
system('rbenv exec bundle exec rake ci:all --trace')
|
60
|
-
git_discard_changes
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
@@ -13,30 +13,29 @@ module CommitMetadataPersistable
|
|
13
13
|
private
|
14
14
|
|
15
15
|
def load_last_commit_data
|
16
|
-
|
17
|
-
|
18
|
-
if commit.parents.map(&:oid).include?(hash[:commit])
|
19
|
-
# payload from parent commit
|
20
|
-
hash[:payload]
|
21
|
-
end
|
22
|
-
rescue Errno::ENOENT
|
23
|
-
nil
|
16
|
+
load_hash_matching(*commit.parents.map(&:oid))[:payload]
|
24
17
|
end
|
25
18
|
|
26
19
|
def load_current_commit_data
|
27
|
-
|
20
|
+
load_hash_matching(commit.oid)[:payload]
|
21
|
+
end
|
28
22
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
23
|
+
def load_hash_matching(*commits)
|
24
|
+
match = Array.wrap(YAML.load_file(filename)).
|
25
|
+
detect { |h| commits.include? h[:commit] }
|
26
|
+
|
27
|
+
match || {}
|
33
28
|
rescue Errno::ENOENT
|
34
|
-
|
29
|
+
{}
|
35
30
|
end
|
36
31
|
|
37
32
|
def save_current_commit_data(data)
|
38
|
-
|
39
|
-
|
33
|
+
hashes = [
|
34
|
+
load_hash_matching(*commit.parents.map(&:oid)),
|
35
|
+
{ commit: commit.oid, payload: data }
|
36
|
+
].reject(&:blank?)
|
37
|
+
|
38
|
+
File.write(filename, YAML.dump(hashes))
|
40
39
|
end
|
41
40
|
|
42
41
|
def filename
|
@@ -14,7 +14,10 @@ namespace :ci do
|
|
14
14
|
|
15
15
|
desc 'Push Prometheus stats'
|
16
16
|
task publish: :setup do
|
17
|
-
|
17
|
+
gateway = ENV['PROMETHEUS_PUSHGATEWAY']
|
18
|
+
project = ENV['PROMETHEUS_PROJECTNAME']
|
19
|
+
|
20
|
+
next if @metrics.empty? || gateway.nil?
|
18
21
|
|
19
22
|
require 'prometheus/client'
|
20
23
|
require 'prometheus/client/push'
|
@@ -35,7 +38,7 @@ namespace :ci do
|
|
35
38
|
if prometheus.exist?(name)
|
36
39
|
prometheus.get(name)
|
37
40
|
else
|
38
|
-
prometheus.gauge(name, docstring, project:
|
41
|
+
prometheus.gauge(name, docstring, project: project)
|
39
42
|
end
|
40
43
|
gauge.set(label_set, value)
|
41
44
|
else
|
@@ -43,7 +46,7 @@ namespace :ci do
|
|
43
46
|
end
|
44
47
|
end
|
45
48
|
|
46
|
-
client = Prometheus::Client::Push.new(
|
49
|
+
client = Prometheus::Client::Push.new("rake-ci-#{project}", nil, gateway)
|
47
50
|
|
48
51
|
begin
|
49
52
|
client.add(prometheus)
|
@@ -55,8 +58,7 @@ namespace :ci do
|
|
55
58
|
color: 'danger',
|
56
59
|
title: 'Publishing Error',
|
57
60
|
text: 'Build metrics could not be pushed - the Prometheus gateway was uncontactable',
|
58
|
-
footer: 'bundle exec rake ci:prometheus:publish'
|
59
|
-
mrkdwn_in: ['text']
|
61
|
+
footer: 'bundle exec rake ci:prometheus:publish'
|
60
62
|
}
|
61
63
|
end
|
62
64
|
end
|
data/lib/tasks/ci/redmine.rake
CHANGED
@@ -17,12 +17,24 @@ namespace :ci do
|
|
17
17
|
hostname = ENV['REDMINE_HOSTNAME']
|
18
18
|
next if api_key.nil? || hostname.nil?
|
19
19
|
|
20
|
+
resolved_tickets = []
|
21
|
+
@attachments ||= []
|
22
|
+
|
20
23
|
require 'ndr_dev_support/rake_ci/redmine/ticket_resolver'
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
25
|
+
begin
|
26
|
+
ticket_resolver = NdrDevSupport::RakeCI::Redmine::TicketResolver.new(api_key, hostname)
|
27
|
+
resolved_tickets = ticket_resolver.process_commit(@commit.author[:name],
|
28
|
+
@friendly_revision_name,
|
29
|
+
@commit.message)
|
30
|
+
rescue
|
31
|
+
@attachments << {
|
32
|
+
color: 'danger',
|
33
|
+
title: 'Redmine Update Error',
|
34
|
+
text: 'Ticket(s) could not be resolved on Redmine!',
|
35
|
+
footer: 'bundle exec rake ci:redmine:update_tickets'
|
36
|
+
}
|
37
|
+
end
|
26
38
|
|
27
39
|
next if resolved_tickets.empty?
|
28
40
|
resolved_tickets.map! { |ticket_id| "https://#{hostname}/issues/#{ticket_id}" }
|
@@ -36,7 +48,6 @@ namespace :ci do
|
|
36
48
|
footer: 'bundle exec rake ci:minitest',
|
37
49
|
mrkdwn_in: ['text']
|
38
50
|
}
|
39
|
-
@attachments ||= []
|
40
51
|
@attachments << attachment
|
41
52
|
end
|
42
53
|
end
|