dpl 1.5.8.travis.336.1 → 1.5.8.travis.356.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/Gemfile +4 -0
- data/README.md +19 -0
- data/lib/dpl/provider.rb +1 -0
- data/lib/dpl/provider/releases.rb +68 -0
- data/setuptools-3.3.zip +0 -0
- data/spec/provider/releases_spec.rb +74 -0
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
Yzk2YTk3YzcxZmUzNDQ5ODNlOGQxZGU0YTQ0MjQ3YzZiNjVjZjU5ZA==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
NmQ4NzMwNjc2N2ExZWI3YzE0YTE0ZGFkMGU0NjM0N2E0OTRkOGE4Mw==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
MjU0OTU3MDliNzBkNDJlMGI3OWIxYmIzZjgwODM4NjgwMDQ2YTg3YmFmZGEx
|
|
10
|
+
MDcxZjVjZGEwZmYzMTY4OWM4NDdhOGUyMmY2ZWM3ZmRlZmU1YTFiMTBkZjli
|
|
11
|
+
ZTlkMDZhMTEwMWJkYTgwMTRiYTBhNjA5OWM2N2I0MjI0YzY0YjQ=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
MTc0MGZkOGI1ZDE3OGY2ZWVlNmI1YjMwMWZkMGRmMjYzOTgxZjg4YzdmZTNi
|
|
14
|
+
YTQwOGY0ODMxZWMxYzg4M2EwYmIyMzg4Y2NlMjJiMDAwMWE4NzIxZjBkZjhj
|
|
15
|
+
OTFmMzEwYzQ0NDg3NTNmZTAwMDQ4ODY4Nzk4NDJiMTdmNTkwYjY=
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -20,6 +20,7 @@ Dpl supports the following providers:
|
|
|
20
20
|
* [Rackspace Cloud Files](#rackspace-cloud-files)
|
|
21
21
|
* [AWS OpsWorks](#opsworks)
|
|
22
22
|
* [Modulus](#modulus)
|
|
23
|
+
* [Github Releases](#github-releases)
|
|
23
24
|
|
|
24
25
|
## Installation:
|
|
25
26
|
|
|
@@ -258,3 +259,21 @@ As a rule of thumb, you should switch to the Git strategy if you run into issues
|
|
|
258
259
|
#### Examples:
|
|
259
260
|
|
|
260
261
|
dpl --provider=cloudfiles --username=<username> --api-key=<api-key> --region=<region> --container=<container>
|
|
262
|
+
|
|
263
|
+
### GitHub Releases:
|
|
264
|
+
|
|
265
|
+
#### Options:
|
|
266
|
+
|
|
267
|
+
* **api-key**: GitHub oauth token with `public_repo` or`repo` permission.
|
|
268
|
+
* **user**: GitHub username. Not necessary if `api-key` is used.
|
|
269
|
+
* **password**: GitHub Password. Not necessary if `api-key` is used.
|
|
270
|
+
* **repo**: GitHub Repo. Defaults to git repo's name.
|
|
271
|
+
* **file**: File to upload to GitHub Release.
|
|
272
|
+
|
|
273
|
+
#### GitHub Two Factor Authentication
|
|
274
|
+
|
|
275
|
+
For accounts using two factor authentication, you have to use an oauth token as a username and password will not work.
|
|
276
|
+
|
|
277
|
+
#### Examples:
|
|
278
|
+
|
|
279
|
+
dpl --provider=releases --api-key=<api-key> --file=build.tar.gz
|
data/lib/dpl/provider.rb
CHANGED
|
@@ -21,6 +21,7 @@ module DPL
|
|
|
21
21
|
autoload :CloudFiles, 'dpl/provider/cloud_files'
|
|
22
22
|
autoload :OpsWorks, 'dpl/provider/ops_works'
|
|
23
23
|
autoload :Modulus, 'dpl/provider/modulus'
|
|
24
|
+
autoload :Releases, 'dpl/provider/releases'
|
|
24
25
|
|
|
25
26
|
def self.new(context, options)
|
|
26
27
|
return super if self < Provider
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
module DPL
|
|
2
|
+
class Provider
|
|
3
|
+
class Releases < Provider
|
|
4
|
+
requires 'octokit'
|
|
5
|
+
requires 'mime-types'
|
|
6
|
+
|
|
7
|
+
def get_tag
|
|
8
|
+
`git describe --tags --exact-match 2>/dev/null`.chomp
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def api
|
|
12
|
+
if options[:user] and options[:password]
|
|
13
|
+
@api ||= Octokit::Client.new(:login => options[:user], :password => options[:password])
|
|
14
|
+
else
|
|
15
|
+
@api ||= Octokit::Client.new(:access_token => option(:api_key))
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def slug
|
|
20
|
+
options.fetch(:repo) { ENV['TRAVIS_REPO_SLUG'] }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def releases
|
|
24
|
+
@releases ||= api.releases(slug)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def user
|
|
28
|
+
user ||= api.user
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def needs_key?
|
|
32
|
+
false
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def check_app
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def setup_auth
|
|
39
|
+
user.login
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def check_auth
|
|
43
|
+
setup_auth
|
|
44
|
+
log "Logged in as #{user.name}"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def push_app
|
|
48
|
+
tag_matched = false
|
|
49
|
+
|
|
50
|
+
releases.each do |release|
|
|
51
|
+
if release.tag_name == get_tag
|
|
52
|
+
api.upload_asset(release.rels[:self].href, option(:file), {:content_type => MIME::Types.type_for(option(:file)).first.to_s})
|
|
53
|
+
tag_matched = true
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
unless tag_matched
|
|
57
|
+
log <<-EOS
|
|
58
|
+
This isn't a GitHub release, so nothing has been deployed. If you haven't already, please add the following to the 'deploy' section of your .travis.yml:
|
|
59
|
+
|
|
60
|
+
on:
|
|
61
|
+
tags: true
|
|
62
|
+
all_branches: true
|
|
63
|
+
EOS
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
data/setuptools-3.3.zip
ADDED
|
Binary file
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'dpl/provider/releases'
|
|
3
|
+
require 'octokit'
|
|
4
|
+
|
|
5
|
+
describe DPL::Provider::Releases do
|
|
6
|
+
subject :provider do
|
|
7
|
+
described_class.new(DummyContext.new, :api_key => '0123445789qwertyuiop0123445789qwertyuiop', :file => 'blah.txt')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe :api do
|
|
11
|
+
example "With API key" do
|
|
12
|
+
api = double(:api)
|
|
13
|
+
::Octokit::Client.should_receive(:new).with(:access_token => '0123445789qwertyuiop0123445789qwertyuiop').and_return(api)
|
|
14
|
+
provider.api.should be == api
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
example "With username and password" do
|
|
18
|
+
api = double(:api)
|
|
19
|
+
provider.options.update(:user => 'foo')
|
|
20
|
+
provider.options.update(:password => 'bar')
|
|
21
|
+
|
|
22
|
+
::Octokit::Client.should_receive(:new).with(:login => 'foo', :password => 'bar').and_return(api)
|
|
23
|
+
provider.api.should be == api
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe :releases do
|
|
28
|
+
example "With ENV Slug" do
|
|
29
|
+
provider.stub(:slug).and_return("foo/bar")
|
|
30
|
+
|
|
31
|
+
provider.api.should_receive(:releases).with("foo/bar")
|
|
32
|
+
provider.releases
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
example "With repo option" do
|
|
36
|
+
provider.options.update(:repo => 'bar/foo')
|
|
37
|
+
|
|
38
|
+
provider.api.should_receive(:releases).with('bar/foo')
|
|
39
|
+
provider.releases
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe :needs_key? do
|
|
44
|
+
example do
|
|
45
|
+
provider.needs_key?.should == false
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe :check_auth do
|
|
50
|
+
example do
|
|
51
|
+
allow_message_expectations_on_nil
|
|
52
|
+
provider.stub(:user)
|
|
53
|
+
provider.stub(:setup_auth)
|
|
54
|
+
provider.user.should_receive(:name).and_return("foo")
|
|
55
|
+
provider.should_receive(:log).with("Logged in as foo")
|
|
56
|
+
provider.check_auth
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe :push_app do
|
|
61
|
+
example do
|
|
62
|
+
allow_message_expectations_on_nil
|
|
63
|
+
provider.stub(:releases).and_return([""])
|
|
64
|
+
provider.releases.map do |release|
|
|
65
|
+
release.stub(:tag_name).and_return("v0.0.0")
|
|
66
|
+
release.stub(:rels).and_return({:self => nil})
|
|
67
|
+
release.rels[:self].stub(:href)
|
|
68
|
+
end
|
|
69
|
+
provider.stub(:get_tag).and_return("v0.0.0")
|
|
70
|
+
provider.api.should_receive(:upload_asset)
|
|
71
|
+
provider.push_app
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
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.5.8.travis.
|
|
4
|
+
version: 1.5.8.travis.356.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-
|
|
11
|
+
date: 2014-03-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rspec
|
|
@@ -102,12 +102,14 @@ files:
|
|
|
102
102
|
- lib/dpl/provider/openshift.rb
|
|
103
103
|
- lib/dpl/provider/ops_works.rb
|
|
104
104
|
- lib/dpl/provider/pypi.rb
|
|
105
|
+
- lib/dpl/provider/releases.rb
|
|
105
106
|
- lib/dpl/provider/rubygems.rb
|
|
106
107
|
- lib/dpl/provider/s3.rb
|
|
107
108
|
- lib/dpl/version.rb
|
|
108
109
|
- notes/dotcloud.md
|
|
109
110
|
- notes/engine_yard.md
|
|
110
111
|
- notes/heroku.md
|
|
112
|
+
- setuptools-3.3.zip
|
|
111
113
|
- spec/cli_spec.rb
|
|
112
114
|
- spec/provider/appfog_spec.rb
|
|
113
115
|
- spec/provider/cloud_files_spec.rb
|
|
@@ -122,6 +124,7 @@ files:
|
|
|
122
124
|
- spec/provider/openshift_spec.rb
|
|
123
125
|
- spec/provider/ops_works_spec.rb
|
|
124
126
|
- spec/provider/pypi_spec.rb
|
|
127
|
+
- spec/provider/releases_spec.rb
|
|
125
128
|
- spec/provider/rubygems_spec.rb
|
|
126
129
|
- spec/provider/s3_spec.rb
|
|
127
130
|
- spec/provider_spec.rb
|