escobar 0.3.4 → 0.3.6

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: d510a52fd6a330d51dcdd7868cf6ea151a04248a
4
- data.tar.gz: 85dadfb5890e87875c9ce572ee61ef9d9c7e0f78
3
+ metadata.gz: 057a7451fec509ee272972a0f81078d0dac7e41f
4
+ data.tar.gz: fc19310666d77b537f139e99581e133fb8b2a3ce
5
5
  SHA512:
6
- metadata.gz: 0adce59eb6c5920aaf8056fb5884b807cc4e92f1f0f9001dd525984ec8ae32978347eb4be58dae992db17afacf9901e9d73502b79195f22b8399e9b5fe18ef70
7
- data.tar.gz: f68558eeaf871b358542ff50202fadc3dd2a4505a0889a8e70bc8a96ebcd8b40fbdc68982074d599c38f366dde9e55884343007b9af6ac13497921a40cf96e42
6
+ metadata.gz: 11917124e4d40f75eeaf5a98b196df275d18f77961ea32228d8356f814f32294c57fbbbb75eb83d320b8140f375cca09d52be3cc297eedc3c86bc4d37a6db7de
7
+ data.tar.gz: d08521ed38d5f06fee160b1c10cec67ad5251f1026520af313b4e0f456d205ef758913d5fbd6f9ebe6bdf8ada6f3b0a7720d6ca8b5c8b90e0cc519a4cf561a73
data/.rubocop.yml CHANGED
@@ -113,3 +113,6 @@ Rails:
113
113
  Enabled: true
114
114
  Rails/Delegate:
115
115
  Enabled: false # delegate isn't available outside of rails?
116
+ BlockLength:
117
+ Exclude:
118
+ - 'spec/**/*'
data/lib/escobar.rb CHANGED
@@ -54,3 +54,4 @@ require_relative "./escobar/heroku/build_request"
54
54
  require_relative "./escobar/heroku/client"
55
55
  require_relative "./escobar/heroku/coupling"
56
56
  require_relative "./escobar/heroku/pipeline"
57
+ require_relative "./escobar/heroku/release"
@@ -20,6 +20,10 @@ module Escobar
20
20
  "https://dashboard.heroku.com/apps/#{name}"
21
21
  end
22
22
 
23
+ def cache_key
24
+ "escobar-app-#{id}"
25
+ end
26
+
23
27
  # Accepts either google authenticator or yubikey second_factor formatting
24
28
  def preauth(second_factor)
25
29
  !client.heroku.put("/apps/#{id}/pre-authorizations", second_factor).any?
@@ -31,7 +35,7 @@ module Escobar
31
35
  end
32
36
 
33
37
  def build_request_for(pipeline)
34
- Escobar::Heroku::BuildRequest.new(pipeline, self)
38
+ Escobar::Heroku::BuildRequest.new(pipeline, id)
35
39
  end
36
40
  end
37
41
  end
@@ -2,17 +2,16 @@ module Escobar
2
2
  module Heroku
3
3
  # Class representing a heroku build
4
4
  class Build
5
- attr_reader :app_id, :app_name, :client, :id
5
+ attr_reader :app_id, :client, :id
6
6
 
7
7
  attr_accessor :command_id
8
8
  attr_accessor :github_url
9
9
  attr_accessor :pipeline_name
10
10
  attr_accessor :sha
11
11
 
12
- def initialize(client, app, id)
12
+ def initialize(client, app_id, id)
13
13
  @id = id
14
- @app_id = app.id
15
- @app_name = app.name
14
+ @app_id = app_id
16
15
  @client = client
17
16
  end
18
17
 
@@ -20,8 +19,24 @@ module Escobar
20
19
  @info ||= client.heroku.get("/apps/#{app_id}/builds/#{id}")
21
20
  end
22
21
 
22
+ def status
23
+ info["status"]
24
+ end
25
+
26
+ def releasing?
27
+ status == "succeeded" && !release_id.nil?
28
+ end
29
+
30
+ def release_id
31
+ info["release"]["id"]
32
+ end
33
+
34
+ def app
35
+ @app ||= Escobar::Heroku::App.new(client, app_id)
36
+ end
37
+
23
38
  def dashboard_build_output_url
24
- "https://dashboard.heroku.com/apps/#{app_name}/activity/builds/#{id}"
39
+ "https://dashboard.heroku.com/apps/#{app.name}/activity/builds/#{id}"
25
40
  end
26
41
 
27
42
  def repository_regex
@@ -29,16 +44,16 @@ module Escobar
29
44
  end
30
45
 
31
46
  def repository
32
- github_url.match(repository_regex)[1]
47
+ github_url && github_url.match(repository_regex)[1]
33
48
  end
34
49
 
35
50
  def to_job_json
36
51
  {
37
52
  sha: sha,
38
- name: pipeline_name,
53
+ pipeline_name: pipeline_name,
39
54
  repo: repository,
40
55
  app_id: app_id,
41
- app_name: app_name,
56
+ app_name: app.name,
42
57
  build_id: id,
43
58
  command_id: command_id,
44
59
  target_url: dashboard_build_output_url,
@@ -17,21 +17,25 @@ module Escobar
17
17
  end
18
18
  end
19
19
 
20
- attr_reader :app, :github_deployment_url, :pipeline, :sha
20
+ attr_reader :app_id, :github_deployment_url, :pipeline, :sha
21
21
 
22
22
  attr_accessor :environment, :ref, :forced, :custom_payload
23
23
 
24
- def initialize(pipeline, app)
25
- @app = app
24
+ def initialize(pipeline, app_id)
25
+ @app_id = app_id
26
26
  @pipeline = pipeline
27
27
  end
28
28
 
29
+ def app
30
+ @app ||= Escobar::Heroku::App.new(pipeline.client, app_id)
31
+ end
32
+
29
33
  def error_for(message)
30
34
  Error.new_from_build_request(self, message)
31
35
  end
32
36
 
33
37
  def cache_key
34
- "escobar-build-request-#{app.name}"
38
+ app.cache_key
35
39
  end
36
40
 
37
41
  def create(task, environment, ref, forced, custom_payload)
@@ -62,7 +66,7 @@ module Escobar
62
66
 
63
67
  def process_heroku_build(build)
64
68
  heroku_build = Escobar::Heroku::Build.new(
65
- app.client, app, build["id"]
69
+ pipeline.client, app_id, build["id"]
66
70
  )
67
71
 
68
72
  create_github_pending_deployment_status(heroku_build)
@@ -84,15 +84,25 @@ module Escobar
84
84
  end
85
85
 
86
86
  def reap_build(app_id, build_id)
87
- info = client.heroku.get("/apps/#{app_id}/builds/#{build_id}")
88
- case info["status"]
87
+ build = Escobar::Heroku::Build.new(client, app_id, build_id)
88
+ case build.status
89
89
  when "succeeded", "failed"
90
- info
90
+ build
91
+ end
92
+ end
93
+
94
+ def reap_release(app_id, build_id, release_id)
95
+ release = Escobar::Heroku::Release.new(
96
+ client, app_id, build_id, release_id
97
+ )
98
+ case release.status
99
+ when "succeeded", "failed"
100
+ release
91
101
  end
92
102
  end
93
103
 
94
104
  def default_heroku_application(environment)
95
- app = environments[environment] && environments[environment].last
105
+ app = environments[environment] && environments[environment].first
96
106
  unless app
97
107
  raise ArgumentError, "No '#{environment}' environment for #{name}."
98
108
  end
@@ -0,0 +1,63 @@
1
+ module Escobar
2
+ module Heroku
3
+ # Class representing a heroku release
4
+ class Release
5
+ attr_reader :app_id, :app_name, :build_id, :client, :id
6
+
7
+ attr_accessor :command_id
8
+ attr_accessor :github_url
9
+ attr_accessor :pipeline_name
10
+ attr_accessor :sha
11
+
12
+ def initialize(client, app_id, build_id, id)
13
+ @id = id
14
+ @app_id = app_id
15
+ @build_id = build_id
16
+ @client = client
17
+ end
18
+
19
+ def info
20
+ @info ||= client.heroku.get("/apps/#{app_id}/releases/#{id}")
21
+ end
22
+
23
+ def app
24
+ @app ||= Escobar::Heroku::App.new(client, app_id)
25
+ end
26
+
27
+ def build
28
+ @build ||= Escobar::Heroku::Build.new(client, app.id, build_id)
29
+ end
30
+
31
+ def dashboard_build_output_url
32
+ "https://dashboard.heroku.com/apps/#{app.name}/activity/builds/#{id}"
33
+ end
34
+
35
+ def repository
36
+ github_url && github_url.match(repository_regex)[1]
37
+ end
38
+
39
+ def repository_regex
40
+ %r{https:\/\/api\.github\.com\/repos\/([-_\.0-9a-z]+\/[-_\.0-9a-z]+)}
41
+ end
42
+
43
+ def status
44
+ info["status"]
45
+ end
46
+
47
+ def to_job_json
48
+ {
49
+ sha: sha,
50
+ name: pipeline_name,
51
+ repo: repository,
52
+ app_id: app_id,
53
+ app_name: app_name,
54
+ build_id: build_id,
55
+ release_id: id,
56
+ command_id: command_id,
57
+ target_url: dashboard_build_output_url,
58
+ deployment_url: github_url
59
+ }
60
+ end
61
+ end
62
+ end
63
+ end
@@ -1,3 +1,3 @@
1
1
  module Escobar
2
- VERSION = "0.3.4".freeze
2
+ VERSION = "0.3.6".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.4
4
+ version: 0.3.6
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-01-13 00:00:00.000000000 Z
11
+ date: 2017-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -182,6 +182,7 @@ files:
182
182
  - lib/escobar/heroku/client.rb
183
183
  - lib/escobar/heroku/coupling.rb
184
184
  - lib/escobar/heroku/pipeline.rb
185
+ - lib/escobar/heroku/release.rb
185
186
  - lib/escobar/version.rb
186
187
  homepage: https://github.com/atmos/escobar
187
188
  licenses: