escobar 0.3.20 → 0.3.21

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
  SHA1:
3
- metadata.gz: bb04d677eebc0ac17e368692988dfd4f96064b7b
4
- data.tar.gz: d97b59f78e386147c660c2c1c5890554c6fe096e
3
+ metadata.gz: 080f542dae7c68a66f17f597ae5c9609d123236e
4
+ data.tar.gz: 66d42c2379938b6c93f03b991e5a57d2cedc4853
5
5
  SHA512:
6
- metadata.gz: fddf34ceb60477480a82ac4c4bec70f7cc412f144cbdf9247945a42adc133ee4eec4ddb66903e1cf3dc4e972e94dbc91ba2e98b311b72b537267058da652157f
7
- data.tar.gz: 8998e4d80bdaf17c2601bfdc40bd739ca8187b922f796a44298c6a4b78a17d0415be1ad8e0d8614cb5e50659953ae6d82fc8089fc490851cca9370b934e720f5
6
+ metadata.gz: aa08fce37d50953594f632f1f3f18045015308e0a86889c28119f9ada5597fac66d8c567e4fbe1cc7c6d20c0a407d851a9a5a330b2168f65c1f9bbf912041b46
7
+ data.tar.gz: bb47e7aa460281a7ff7109bd584061ba493253ff21ada49088354f578dae22efdb4a7e95be19aba5401ec075b6e110f77d92e7e8c5f98fb9baa55f3f67002eb8
@@ -60,6 +60,7 @@ end
60
60
 
61
61
  require_relative "./escobar/client"
62
62
  require_relative "./escobar/github/client"
63
+ require_relative "./escobar/github/deployment_error"
63
64
  require_relative "./escobar/heroku/app"
64
65
  require_relative "./escobar/heroku/build"
65
66
  require_relative "./escobar/heroku/build_request"
@@ -0,0 +1,37 @@
1
+ module Escobar
2
+ module GitHub
3
+ # Consolidate GitHub deployment api failures for easier messaging
4
+ class DeploymentError < StandardError
5
+ attr_accessor :repo, :response, :required_commit_contexts
6
+
7
+ def initialize(repo, response, required_commit_contexts)
8
+ @repo = repo
9
+ @response = response
10
+ @required_commit_contexts = required_commit_contexts
11
+ end
12
+
13
+ def missing_contexts?
14
+ missing_contexts.any?
15
+ end
16
+
17
+ def missing_contexts
18
+ error = response.fetch("errors", [])[0]
19
+ return [] unless error && error["field"] == "required_contexts"
20
+ contexts = error["contexts"]
21
+ contexts.each_with_object([]) do |context, missing|
22
+ failed = (context["state"] != "success")
23
+ required = required_commit_contexts.include?(context["context"])
24
+ missing << context["context"] if required && failed
25
+ end
26
+ end
27
+
28
+ def response_message
29
+ response["message"]
30
+ end
31
+
32
+ def default_message
33
+ "Unable to create GitHub deployments for #{repo}: #{response_message}"
34
+ end
35
+ end
36
+ end
37
+ end
@@ -17,6 +17,17 @@ module Escobar
17
17
  end
18
18
  end
19
19
 
20
+ # Class representing a rejected GitHub deployment
21
+ class MissingContextsError < Error
22
+ attr_accessor :missing_contexts
23
+ def self.new_from_build_request_and_error(build_request, error)
24
+ err = new(error.default_message)
25
+ err.build_request = build_request
26
+ err.missing_contexts = error.missing_contexts
27
+ err
28
+ end
29
+ end
30
+
20
31
  class RequiresTwoFactorError < Error
21
32
  end
22
33
 
@@ -97,10 +108,7 @@ module Escobar
97
108
 
98
109
  def handle_github_deployment_response(response)
99
110
  unless response["sha"]
100
- raise error_for(
101
- "Unable to create GitHub deployments for " \
102
- "#{pipeline.github_repository}: #{response['message']}"
103
- )
111
+ handle_github_deployment_error(response)
104
112
  end
105
113
 
106
114
  @sha = response["sha"]
@@ -108,6 +116,14 @@ module Escobar
108
116
  response
109
117
  end
110
118
 
119
+ def handle_github_deployment_error(response)
120
+ error = Escobar::GitHub::DeploymentError.new(
121
+ pipeline.github_repository, response, required_commit_contexts
122
+ )
123
+ raise error_for(error.default_message) unless error.missing_contexts?
124
+ raise MissingContextsError.new_from_build_request_and_error(self, error)
125
+ end
126
+
111
127
  def create_github_deployment(task)
112
128
  options = {
113
129
  ref: ref,
@@ -1,3 +1,3 @@
1
1
  module Escobar
2
- VERSION = "0.3.20".freeze
2
+ VERSION = "0.3.21".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: escobar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.20
4
+ version: 0.3.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Corey Donohoe
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-09 00:00:00.000000000 Z
11
+ date: 2017-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -190,6 +190,7 @@ files:
190
190
  - lib/escobar.rb
191
191
  - lib/escobar/client.rb
192
192
  - lib/escobar/github/client.rb
193
+ - lib/escobar/github/deployment_error.rb
193
194
  - lib/escobar/heroku/app.rb
194
195
  - lib/escobar/heroku/build.rb
195
196
  - lib/escobar/heroku/build_request.rb