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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e439e4102d508d6ab419ee40e7049cb9efe2cdd27df8a2fc1a56d33df69349d
4
- data.tar.gz: 4741d243fd50eb468fd85007c8e28e07993e532121dc27f3c71d327e978c173a
3
+ metadata.gz: b33b208c31e16b68d55cbbc40f482d5e1d6146ef2190999b9481670706851535
4
+ data.tar.gz: 3cdc280a9023b1e326680f86e753d67e1124ce185046cc9fefb590b0cd5a9a34
5
5
  SHA512:
6
- metadata.gz: cd21a19c5b61e79fa5936b781aa252b4ae5ffeeb89920885f10d51d17926d7f0a2018a5f0dfdf52e6ada04cf54240630a59b1a1e73b2b5907f06d2db2e603729
7
- data.tar.gz: 35a0dead05c81a1e0710a00a3c3e6d720e4fe3e3ce7feb88050faa48a4dafeab55c91ce09ce7a4726f10e0ddb431746e2b4943909e63eb13e6ba4324d41ef91f
6
+ metadata.gz: f453af8d2db1f63f3cf9fe95141ba4943b80394a4769f76f194864168d1d20c7499d22f8ee5a5e74ada6cd2261bb95f1cde31b9e99dd1c47046d29fd48b6a06f
7
+ data.tar.gz: 2470eac3017806dd8ad4707044ffb67e133df973414d729a374525ca3b6e36226ced375335ac4f1c0e1ccf0d74a247f692130c7c532607b526ad31884bf9f46a
@@ -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.
@@ -19,7 +19,7 @@ file safety:
19
19
  CHANGELOG.md:
20
20
  comments:
21
21
  reviewed_by: josh.pencheon
22
- safe_revision: 8166958d634cc01379fd8a34278c231ad37b061b
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: 3cadf2dc33034cfe7258f6cf4b199d3101b2a7ba
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: fe8682a3300a322c5f6b9a17dce471f11fa5e307
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: 49caa4ef8ad9926843354d36f4610d40603ec632
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: 8166958d634cc01379fd8a34278c231ad37b061b
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: fe8682a3300a322c5f6b9a17dce471f11fa5e307
239
+ safe_revision: 2d1b9d19acafebe6ca5f995bf15243abe2847eec
240
240
  lib/tasks/ci/redmine.rake:
241
241
  comments:
242
242
  reviewed_by: josh.pencheon
243
- safe_revision: ba171e9460b57d2d9932f6c0c0bdc3a5b282af80
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 newly_passing?
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 if failures.positive? || errors.positive?
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
- hash = YAML.load_file(filename)
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
- hash = YAML.load_file(filename)
20
+ load_hash_matching(commit.oid)[:payload]
21
+ end
28
22
 
29
- if commit.oid == hash[:commit]
30
- # payload from parent commit
31
- hash[:payload]
32
- end
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
- nil
29
+ {}
35
30
  end
36
31
 
37
32
  def save_current_commit_data(data)
38
- hash = { commit: commit.oid, payload: data }
39
- File.write(filename, YAML.dump(hash))
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
@@ -2,5 +2,5 @@
2
2
  # This defines the NdrDevSupport version. If you change it, rebuild and commit the gem.
3
3
  # Use "rake build" to build the gem, see rake -T for all bundler rake tasks (and our own).
4
4
  module NdrDevSupport
5
- VERSION = '5.0.1'.freeze
5
+ VERSION = '5.1.0'.freeze
6
6
  end
@@ -14,7 +14,10 @@ namespace :ci do
14
14
 
15
15
  desc 'Push Prometheus stats'
16
16
  task publish: :setup do
17
- next if @metrics.empty? || ENV['PROMETHEUS_PUSHGATEWAY'].nil?
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: ENV['PROMETHEUS_PROJECTNAME'])
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('rake-ci-job', nil, ENV['PROMETHEUS_PUSHGATEWAY'])
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
@@ -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
- ticket_resolver = NdrDevSupport::RakeCI::Redmine::TicketResolver.new(api_key, hostname)
23
- resolved_tickets = ticket_resolver.process_commit(@commit.author[:name],
24
- @friendly_revision_name,
25
- @commit.message)
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ndr_dev_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.1
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - NCRS Development Team