dpl 1.6.7.travis.549.1 → 1.6.7.travis.552.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 +8 -8
- data/lib/dpl/provider/heroku.rb +4 -3
- data/lib/dpl/provider/heroku/api.rb +84 -0
- data/spec/provider/heroku_api_spec.rb +30 -0
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
MmE1MzRjYjdjOWVmZmZkZDVkNTM1NGU0Mzk2NDBjZjM3YWZkZDRlMw==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
OTNmNmY2ZGZkNWE0ZTZjYzMwZWY0YjcyZDkyYzRjZGQ4NGM4ODU4NA==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
MDI0Y2ZmYzM3ODg5OGRjYjg3YWIyY2ZhNjQ4NGMxYzU4MTAxMzQxZDQ2OTAy
|
|
10
|
+
MjUyYzg1YWI4Njk0OWJkYWRjZGE0ZGJiOTU2N2IwOGJmNDhmNjI1NjFkNWM2
|
|
11
|
+
NzQxYTU4NzVhZDI2Yzc2OTdmYzU5YWUwYWUwMWQ3ZjYxNjMxZDY=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
N2JkNTM2Zjk3ZWE1M2ZiNzQwM2FkMDFmZmNiNjdhMTI2MGE5YTU1YmM4MjFi
|
|
14
|
+
MjZkMWVhZDNhNDc0Y2MwM2QzOGExMGIyMzVlYWI5MDA0ZGU3MjAyZDFkMjc3
|
|
15
|
+
ZTdjZjM1ZDJkOTdiZmQ1NGQwNTU3YzdhOWVhN2I2MzFmZDlkY2E=
|
data/lib/dpl/provider/heroku.rb
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
module DPL
|
|
2
2
|
class Provider
|
|
3
3
|
module Heroku
|
|
4
|
-
autoload :Anvil,
|
|
5
|
-
autoload :
|
|
6
|
-
autoload :
|
|
4
|
+
autoload :Anvil, 'dpl/provider/heroku/anvil'
|
|
5
|
+
autoload :API, 'dpl/provider/heroku/api'
|
|
6
|
+
autoload :Git, 'dpl/provider/heroku/git'
|
|
7
|
+
autoload :GitDeployKey, 'dpl/provider/heroku/git_deploy_key'
|
|
7
8
|
|
|
8
9
|
extend self
|
|
9
10
|
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
require 'shellwords'
|
|
3
|
+
|
|
4
|
+
module DPL
|
|
5
|
+
class Provider
|
|
6
|
+
module Heroku
|
|
7
|
+
class API < Git
|
|
8
|
+
def needs_key?
|
|
9
|
+
false
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def user
|
|
13
|
+
@user ||= api.get_user.body["email"]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def push_app
|
|
17
|
+
pack_archive
|
|
18
|
+
upload_archive
|
|
19
|
+
trigger_build
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def archive_file
|
|
23
|
+
Shellwords.escape("#{ENV['HOME']}/.dpl.#{option(:app)}.tgz")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def pack_archive
|
|
27
|
+
log "creating application archive"
|
|
28
|
+
context.shell "tar -zcf #{archive_file} ."
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def upload_archive
|
|
32
|
+
log "uploading application archive"
|
|
33
|
+
context.shell "curl #{Shellwords.escape(put_url)} -X PUT -H 'Content-Type:' --data-binary @#{archive_file}"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def trigger_build
|
|
37
|
+
log "triggering new deployment"
|
|
38
|
+
response = post(:builds, source_blob: { url: get_url, version: version })
|
|
39
|
+
stream_url = response.fetch('stream_url')
|
|
40
|
+
context.shell "curl #{Shellwords.escape(stream_url)}"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def get_url
|
|
44
|
+
source_blob.fetch("get_url")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def put_url
|
|
48
|
+
source_blob.fetch("put_url")
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def source_blob
|
|
52
|
+
@source_blog ||= post(:sources).fetch("source_blob")
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def version
|
|
56
|
+
@version ||= begin
|
|
57
|
+
sha = ENV['TRAVIS_COMMIT'] || `git rev-parse HEAD`.strip
|
|
58
|
+
if ENV['TRAVIS_JOB_NUMBER']
|
|
59
|
+
"Travis Build ##{ENV['TRAVIS_JOB_NUMBER']} (#{sha})"
|
|
60
|
+
else
|
|
61
|
+
sha
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def post(subpath, body = nil, options = {})
|
|
67
|
+
options = {
|
|
68
|
+
method: :post,
|
|
69
|
+
path: "/apps/#{option(:app)}/#{subpath}",
|
|
70
|
+
headers: { "Accept" => "application/vnd.heroku+json; version=edge" },
|
|
71
|
+
expects: [200, 201]
|
|
72
|
+
}.merge(options)
|
|
73
|
+
|
|
74
|
+
if body
|
|
75
|
+
options[:body] = JSON.dump(body)
|
|
76
|
+
options[:headers]['Content-Type'] = 'application/json'
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
api.request(options).body
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'heroku-api'
|
|
3
|
+
require 'dpl/provider/heroku'
|
|
4
|
+
|
|
5
|
+
describe DPL::Provider::Heroku do
|
|
6
|
+
subject(:provider) do
|
|
7
|
+
described_class.new(DummyContext.new, :app => 'example', :key_name => 'key', :api_key => "foo", :strategy => "api")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe "#ssh" do
|
|
11
|
+
it "doesn't require an ssh key" do
|
|
12
|
+
expect(provider.needs_key?).to eq(false)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "#api" do
|
|
17
|
+
it 'accepts an api key' do
|
|
18
|
+
api = double(:api)
|
|
19
|
+
expect(::Heroku::API).to receive(:new).with(:api_key => "foo").and_return(api)
|
|
20
|
+
expect(provider.api).to eq(api)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'accepts a user and a password' do
|
|
24
|
+
api = double(:api)
|
|
25
|
+
provider.options.update(:user => "foo", :password => "bar")
|
|
26
|
+
expect(::Heroku::API).to receive(:new).with(:user => "foo", :password => "bar").and_return(api)
|
|
27
|
+
expect(provider.api).to eq(api)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dpl
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.6.7.travis.
|
|
4
|
+
version: 1.6.7.travis.552.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Konstantin Haase
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-10-
|
|
11
|
+
date: 2014-10-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rspec
|
|
@@ -115,6 +115,7 @@ files:
|
|
|
115
115
|
- lib/dpl/provider/hackage.rb
|
|
116
116
|
- lib/dpl/provider/heroku.rb
|
|
117
117
|
- lib/dpl/provider/heroku/anvil.rb
|
|
118
|
+
- lib/dpl/provider/heroku/api.rb
|
|
118
119
|
- lib/dpl/provider/heroku/git.rb
|
|
119
120
|
- lib/dpl/provider/heroku/git_deploy_key.rb
|
|
120
121
|
- lib/dpl/provider/modulus.rb
|
|
@@ -146,6 +147,7 @@ files:
|
|
|
146
147
|
- spec/provider/gcs_spec.rb
|
|
147
148
|
- spec/provider/hackage_spec.rb
|
|
148
149
|
- spec/provider/heroku_anvil_spec.rb
|
|
150
|
+
- spec/provider/heroku_api_spec.rb
|
|
149
151
|
- spec/provider/heroku_git_deploy_key_spec.rb
|
|
150
152
|
- spec/provider/heroku_git_spec.rb
|
|
151
153
|
- spec/provider/modulus_spec.rb
|