dpl 1.8.15.travis.1349.4 → 1.8.15.travis.1358.4
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/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
|