dpl 1.8.15.travis.1349.4 → 1.8.15.travis.1358.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +19 -0
- data/lib/dpl/provider.rb +1 -0
- data/lib/dpl/provider/launchpad.rb +48 -0
- data/spec/provider/launchpad_spec.rb +33 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NTNhOTliNmJkMTkyNjA0MzJjNDQ0ZTZkNjVkM2YzOWVlYTUxMjY0MA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZTUyNWI2ZjVmNmMzODE4OTgyZWJlNzk0ZjFmMWEzODAzMDQxNDY2OQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YWM2MDA5MWYyMjhiODZhZjI2MWYwYjljNTc4NTRkZjc3YWIwYjhjNzRmZDMz
|
10
|
+
YzcyMmE0NDVmMjNlMzExMWE4YTk1ZDkzZGFmMjZhYjRlZmY2MzkzMDlmOTcw
|
11
|
+
YjkwZjJhY2IxNDk5YmNjMmI1OGFmMjU2ODJjODMwOTBkZmI3NTQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZDEwY2VmZTA3ZWFlMDc2MGM0MWFiZWY1MDBhM2MyOGZiMzI5ZWY3YTJlZTk5
|
14
|
+
Mjg0YWZiZGEwZDM2NjZiODVkN2I1ZDFjYTJmM2QyYTg1MGZkMmY0YmVmYWJm
|
15
|
+
ZmRlODU3YzZkYjFiNDEyNjUxNGUxN2MxZmM5MWJhYjg4YjljNDI=
|
data/README.md
CHANGED
@@ -34,6 +34,7 @@ Dpl supports the following providers:
|
|
34
34
|
* [Hackage](#hackage)
|
35
35
|
* [Heroku](#heroku)
|
36
36
|
* [Lambda](#lambda)
|
37
|
+
* [Launchpad](#launchpad)
|
37
38
|
* [Modulus](#modulus)
|
38
39
|
* [Nodejitsu](#nodejitsu)
|
39
40
|
* [NPM](#npm)
|
@@ -710,6 +711,24 @@ Deploy contents of a specific directory using specific module name:
|
|
710
711
|
--handler_name="handler";
|
711
712
|
```
|
712
713
|
|
714
|
+
### Launchpad:
|
715
|
+
|
716
|
+
#### Options:
|
717
|
+
|
718
|
+
* **slug**: Required. `~user-name/project-name/branch-name`
|
719
|
+
* **oauth_token**: Required. Your OAUTH token for Launchpad
|
720
|
+
* **oauth_token_secret**: Required. Your OAUTH token secret for Launchpad
|
721
|
+
|
722
|
+
#### Example:
|
723
|
+
|
724
|
+
Deploy contents of current working directory using default module:
|
725
|
+
```
|
726
|
+
dpl --provider="launchpad" \
|
727
|
+
--slug="~user-name/project-name/branch-name" \
|
728
|
+
--oauth_token="${LAUNCHPAD_OAUTH_TOKEN}" \
|
729
|
+
--oauth_token_secret="${LAUNCHPAD_OAUTH_TOKEN_SECRET}";
|
730
|
+
```
|
731
|
+
|
713
732
|
### TestFairy:
|
714
733
|
|
715
734
|
Your Android(apk)/iOS(ipa) file will be uploaded to TestFairy,
|
data/lib/dpl/provider.rb
CHANGED
@@ -32,6 +32,7 @@ module DPL
|
|
32
32
|
autoload :Hackage, 'dpl/provider/hackage'
|
33
33
|
autoload :Heroku, 'dpl/provider/heroku'
|
34
34
|
autoload :Lambda, 'dpl/provider/lambda'
|
35
|
+
autoload :Launchpad, 'dpl/provider/launchpad'
|
35
36
|
autoload :Modulus, 'dpl/provider/modulus'
|
36
37
|
autoload :Nodejitsu, 'dpl/provider/nodejitsu'
|
37
38
|
autoload :NPM, 'dpl/provider/npm'
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'net/https'
|
3
|
+
|
4
|
+
module DPL
|
5
|
+
class Provider
|
6
|
+
class Launchpad < Provider
|
7
|
+
|
8
|
+
def initialize(context, options)
|
9
|
+
super
|
10
|
+
@http = Net::HTTP.new('api.launchpad.net', 443)
|
11
|
+
@http.use_ssl = true
|
12
|
+
end
|
13
|
+
|
14
|
+
def check_auth
|
15
|
+
end
|
16
|
+
|
17
|
+
def needs_key?
|
18
|
+
false
|
19
|
+
end
|
20
|
+
|
21
|
+
def push_app
|
22
|
+
response = api_call('/1.0/' + options[:slug] + '/+code-import', {'ws.op' => 'requestImport'})
|
23
|
+
error('Deploy failed! Launchpad credentials invalid. ' + response.code.to_s) if response.code == '401'
|
24
|
+
error('Error: ' + response.code.to_s + ' ' + response.body) unless response.kind_of? Net::HTTPSuccess
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def api_call(path, data)
|
30
|
+
req = Net::HTTP::Post.new(path)
|
31
|
+
req.set_form_data(data)
|
32
|
+
req['Authorization'] = authorization
|
33
|
+
return @http.request(req)
|
34
|
+
end
|
35
|
+
|
36
|
+
def authorization
|
37
|
+
return 'OAuth oauth_consumer_key="Travis%20Deploy", ' +
|
38
|
+
'oauth_nonce="' + rand(36**32).to_s(36) + '",' +
|
39
|
+
'oauth_signature="%26' + options[:oauth_token_secret] + '",' +
|
40
|
+
'oauth_signature_method="PLAINTEXT",' +
|
41
|
+
'oauth_timestamp="' + Time::now().to_i.to_s + '",' +
|
42
|
+
'oauth_token="' + options[:oauth_token] + '",' +
|
43
|
+
'oauth_version="1.0"'
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'dpl/provider/cloudcontrol'
|
3
|
+
|
4
|
+
describe DPL::Provider::Launchpad do
|
5
|
+
subject :provider do
|
6
|
+
described_class.new(DummyContext.new, :slug => '~user/repo/branch', :oauth_token => 'uezinoosinmxkewhochq', :oauth_token_secret => 'dinb6fao4jh0kfdn5mich31cbikdkpjplkmadhi80h93kbbaableeeg41mm0jab9jif8ch7i2k9a80n5')
|
7
|
+
end
|
8
|
+
|
9
|
+
its(:needs_key?) { should be false }
|
10
|
+
|
11
|
+
describe '#push_app' do
|
12
|
+
it 'on api success' do
|
13
|
+
expect(provider).to receive(:api_call).with('/1.0/~user/repo/branch/+code-import', {'ws.op' => 'requestImport'}).and_return Net::HTTPSuccess.new("HTTP/1.1", 200, "Ok")
|
14
|
+
provider.push_app
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'on api failure' do
|
18
|
+
expect(provider).to receive(:api_call).with('/1.0/~user/repo/branch/+code-import', {'ws.op' => 'requestImport'}).and_return double("Net::HTTPUnauthorized", code: 401, body: "", class: Net::HTTPUnauthorized)
|
19
|
+
expect { provider.push_app }.to raise_error(DPL::Error)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'private method' do
|
24
|
+
describe '#authorization' do
|
25
|
+
it 'should return correct oauth' do
|
26
|
+
result = provider.instance_eval { authorization }
|
27
|
+
expect(result).to include('oauth_token="uezinoosinmxkewhochq",')
|
28
|
+
expect(result).to include('oauth_signature="%26dinb6fao4jh0kfdn5mich31cbikdkpjplkmadhi80h93kbbaableeeg41mm0jab9jif8ch7i2k9a80n5",')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
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.8.15.travis.
|
4
|
+
version: 1.8.15.travis.1358.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konstantin Haase
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -147,6 +147,7 @@ files:
|
|
147
147
|
- lib/dpl/provider/heroku/git_deploy_key.rb
|
148
148
|
- lib/dpl/provider/heroku/git_ssh.rb
|
149
149
|
- lib/dpl/provider/lambda.rb
|
150
|
+
- lib/dpl/provider/launchpad.rb
|
150
151
|
- lib/dpl/provider/modulus.rb
|
151
152
|
- lib/dpl/provider/nodejitsu.rb
|
152
153
|
- lib/dpl/provider/npm.rb
|
@@ -193,6 +194,7 @@ files:
|
|
193
194
|
- spec/provider/heroku_git_deploy_key_spec.rb
|
194
195
|
- spec/provider/heroku_git_spec.rb
|
195
196
|
- spec/provider/lambda_spec.rb
|
197
|
+
- spec/provider/launchpad_spec.rb
|
196
198
|
- spec/provider/modulus_spec.rb
|
197
199
|
- spec/provider/npm_spec.rb
|
198
200
|
- spec/provider/openshift_spec.rb
|