jmgarnier_travis_dedup 0.5.0 → 0.5.1

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
  SHA1:
3
- metadata.gz: 464ee010aaf415a819f821dce1ec7b2ab3345f3d
4
- data.tar.gz: 6d7d7458af673bbcd3cd3986f2688aa632569dee
3
+ metadata.gz: 9c615ef2de3ea346497e411ff57903b5b0960973
4
+ data.tar.gz: 27d61db7286592d82c6fb47264c080e27c934263
5
5
  SHA512:
6
- metadata.gz: 6b2197268038ab24b6a83fcf63ce02db45e39e4c077b970816719d6e617980dde323c932eecf95087ea9652099ca0cc35f46cdb20f8601a002d3c1ce54e4a0bd
7
- data.tar.gz: eca992c5a94ee3207fe3df8d263973f3d39fbd0f7d8f8c2e149d8274d325132a2d47e003b997553a0605199c65cff7f0cbd2ac691d71cc88221c6b2045b245eb
6
+ metadata.gz: 1b5a2452db279fe756f4e6a6741cd3250bdd541754b2664ad6bcba51fe737bde155005934be0f77eee637bcee79777cf4351cb6759b25daf3c1e48e5354fd655
7
+ data.tar.gz: 1b826f0c074351d4e39c11dccc97f8f3903d198316189f40f0d8a260101519b53ad431bb3c1d9861c14d2e20bc4831b7417a4f8faa5b374f70533ee3023f3585
@@ -5,10 +5,11 @@ require 'optparse'
5
5
  module TravisDedup
6
6
  ACTIVE = %w[created started queued]
7
7
 
8
- DEFAULT_MAX_ATTEMPTS_WHEN_TRAVIS_DOES_NOT_RESPOND = 3
8
+ RETRY = 3
9
+ class RetryWhen500 < StandardError; end
9
10
 
10
11
  class << self
11
- attr_accessor :pro, :verbose, :branches
12
+ attr_accessor :pro, :verbose, :branches, :retry_option, :force
12
13
 
13
14
  def cli(argv)
14
15
  parser = OptionParser.new do |opts|
@@ -22,6 +23,8 @@ module TravisDedup
22
23
  BANNER
23
24
  opts.on("--pro", "travis pro") { self.pro = true }
24
25
  opts.on("--branches", "dedup builds on branches too") { self.branches = true }
26
+ opts.on("--retry", "number of times to retry when Travis returns a 500. #{RETRY} times by default") { |value| self.retry_option = value }
27
+ opts.on("--force", "give up cancelling duplicate builds when Travis keeps returning 500") { self.force = true }
25
28
  opts.on("-h", "--help","Show this") { puts opts; exit }
26
29
  opts.on('-v', '--version','Show Version'){ require 'travis_dedup/version'; puts TravisDedup::VERSION; exit}
27
30
  end
@@ -32,7 +35,11 @@ module TravisDedup
32
35
  return 1
33
36
  end
34
37
 
35
- puts dedup_message(*argv)
38
+ begin
39
+ puts dedup_message(*argv)
40
+ rescue TravisDedup::RetryWhen500 => error
41
+ raise error unless force
42
+ end
36
43
  0
37
44
  end
38
45
 
@@ -100,37 +107,34 @@ module TravisDedup
100
107
  end
101
108
 
102
109
  def request(method, path, params, headers={})
103
- attempts = 0
110
+ attempts = 1
104
111
  begin
105
112
  faraday_send(method, path, params, headers)
106
- rescue TravisError500 => error
113
+ rescue TravisDedup::RetryWhen500 => error
107
114
  raise error if (attempts += 1) > max_attempts
115
+ puts "Travis returned an error 500. Retrying ..."
108
116
  retry
109
117
  end
110
118
  end
111
119
 
112
120
  def max_attempts
113
- DEFAULT_MAX_ATTEMPTS_WHEN_TRAVIS_DOES_NOT_RESPOND
121
+ retry_option || RETRY
114
122
  end
115
123
 
116
- class TravisError500 < Faraday::Error; end
117
-
118
124
  def faraday_send(method, path, params, headers={})
119
125
  response = Faraday.send(method, "#{host}/#{path}", params, headers)
120
126
  case response.status
121
127
  when 200 then JSON.parse(response.body)
122
128
  when 204 then nil
123
129
  when 500
124
- 256.times { puts "500 on Travis, retrying! ⏰" }
125
- raise(TravisError500, error_message(method, path, response))
130
+ raise TravisDedup::RetryWhen500
126
131
  else
127
- raise(Faraday::Error, error_message(method, path, response))
132
+ raise(Faraday::Error,
133
+ "Communication with travis failed when trying to #{method} #{path}\n" \
134
+ "Response: #{response.status} - #{response.body}"
135
+ )
128
136
  end
129
137
  end
130
138
 
131
- def error_message(method, path, response)
132
- "Communication with travis failed when trying to #{method} #{path}\n" \
133
- "Response: #{response.status} - #{response.body}"
134
- end
135
139
  end
136
140
  end
@@ -1,3 +1,3 @@
1
1
  module TravisDedup
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jmgarnier_travis_dedup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-18 00:00:00.000000000 Z
11
+ date: 2016-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday