ndr_dev_support 5.0.1 → 5.1.0

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: 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