factor-connector-heroku 0.0.5 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/factor/connector/heroku.rb +22 -83
- metadata +16 -86
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fa5851cbe41f45aaeb29902318205322e125af3f
|
4
|
+
data.tar.gz: 65f193a417647d229ead15366361f3e91a7d3358
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 62c0b2367fdc90f03c60f252816597585ec6373a95ca65f22d3d51b69c6cc9761443490be5e2b7718a0f2e5d8ff0c67ec720dac3e0942c04f455c0c1555b4c31
|
7
|
+
data.tar.gz: b00fa9a375854731e3a000bd39929dfc33ada13331c913a6368b15688f48af60957a8daa5bb04adf37e534a29b0a09fb272f64961f8bcd7c694011ba264cdd8f
|
@@ -1,14 +1,5 @@
|
|
1
1
|
require 'factor-connector-api'
|
2
|
-
require '
|
3
|
-
require 'rest-client'
|
4
|
-
require 'heroku-api'
|
5
|
-
require 'anvil'
|
6
|
-
require 'anvil/engine'
|
7
|
-
require 'uri'
|
8
|
-
require 'zip'
|
9
|
-
require 'tmpdir'
|
10
|
-
require 'open-uri'
|
11
|
-
require 'tempfile'
|
2
|
+
require 'platform-api'
|
12
3
|
|
13
4
|
Factor::Connector.service 'heroku' do
|
14
5
|
action 'deploy' do |params|
|
@@ -21,92 +12,40 @@ Factor::Connector.service 'heroku' do
|
|
21
12
|
fail 'No app specified. Where am I supposed to deploy it?' unless app
|
22
13
|
fail 'You need to activate Heroku on the services page' unless api_key
|
23
14
|
|
24
|
-
|
25
|
-
payload = {
|
26
|
-
description: description,
|
27
|
-
slug_url: slug_url
|
28
|
-
}
|
15
|
+
heroku = PlatformAPI.connect_oauth(api_key)
|
29
16
|
|
30
|
-
|
31
|
-
'User-Agent' => 'heroku-push-cli/0.7-ALPHA',
|
32
|
-
'X-Ruby-Version' => RUBY_VERSION,
|
33
|
-
'X-Ruby-Platform' => RUBY_PLATFORM,
|
34
|
-
:content_type => :json,
|
35
|
-
:accept => :json
|
36
|
-
}
|
37
|
-
|
38
|
-
release_uri = "https://:#{api_key}@cisaurus.heroku.com/v1/apps/#{app}/release"
|
39
|
-
|
40
|
-
response = RestClient.post release_uri, JSON.generate(payload), options
|
41
|
-
while response.code == 202
|
42
|
-
release_status_uri = "https://:#{api_key}@cisaurus.heroku.com/#{response.headers[:location]}"
|
43
|
-
response = RestClient.get release_status_uri, options
|
44
|
-
sleep(1)
|
45
|
-
end
|
46
|
-
JSON.parse response
|
47
|
-
end
|
48
|
-
|
49
|
-
info 'Getting the resource files from previous step'
|
17
|
+
info "Creating a build"
|
50
18
|
begin
|
51
|
-
|
52
|
-
source.write open(content).read
|
53
|
-
source.rewind
|
19
|
+
build = heroku.build.create(app, {source_blob:{url:content}})
|
54
20
|
rescue => ex
|
55
|
-
fail
|
21
|
+
fail "Build failed: #{ex.message}"
|
56
22
|
end
|
57
23
|
|
58
|
-
|
59
|
-
|
60
|
-
temp_dir = Dir.mktmpdir
|
61
|
-
Zip::ZipFile.open(source) do |zip_file|
|
62
|
-
zip_file.each do |f|
|
63
|
-
f_path = File.join(temp_dir, f.name)
|
64
|
-
FileUtils.mkdir_p(File.dirname(f_path))
|
65
|
-
zip_file.extract(f, f_path) unless File.exist?(f_path)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
if File.directory?(temp_dir)
|
70
|
-
dir_list = Dir.glob("#{temp_dir}/*")
|
71
|
-
temp_dir = dir_list[0] if dir_list.length == 1
|
72
|
-
end
|
73
|
-
rescue => ex
|
74
|
-
fail 'Unzip failed', exception: ex
|
75
|
-
end
|
24
|
+
build_id = build['id']
|
25
|
+
fail "Build failed: no build_id found" unless build_id
|
76
26
|
|
77
|
-
info "
|
27
|
+
info "Waiting on build to complete"
|
78
28
|
begin
|
79
|
-
Anvil.append_agent '(heroku-push)'
|
80
|
-
Anvil.headers['X-Heroku-App'] = app
|
81
|
-
|
82
29
|
begin
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
slug_url = Anvil::Engine.build(temp_dir)
|
88
|
-
begin
|
89
|
-
$stdout.string.split("\n").each do |line|
|
90
|
-
info line
|
91
|
-
end
|
92
|
-
rescue
|
93
|
-
warn "Build completed but couldn't pull up results of build."
|
94
|
-
end
|
95
|
-
ensure
|
96
|
-
$stdout = old_std
|
97
|
-
end
|
30
|
+
build_info = heroku.build.info(app,build_id)
|
31
|
+
sleep 1
|
32
|
+
end while build_info['status']=='pending'
|
98
33
|
rescue => ex
|
99
|
-
fail
|
34
|
+
fail "Failed to get info while waiting: #{ex.message}"
|
100
35
|
end
|
101
36
|
|
102
|
-
|
103
|
-
|
104
|
-
release = release(api_key, app, "Pushed by #{user}", slug_url)
|
105
|
-
info "Release `#{release['release']}` complete"
|
37
|
+
fail "Build completed with status '#{build_info['status']}'" unless build_info['status']=='succeeded'
|
38
|
+
slug_id = build_info['slug']['id'] if build_info['slug'] && build_info['slug']['id']
|
106
39
|
|
107
|
-
|
40
|
+
fail "Build completed, but couldn't identify slug_id" unless slug_id
|
41
|
+
|
42
|
+
info "Releasing code..."
|
43
|
+
begin
|
44
|
+
release = heroku.release.create(app, slug:slug_id)
|
108
45
|
rescue => ex
|
109
|
-
fail "
|
46
|
+
fail "Failed to release the code: #{ex.message}"
|
110
47
|
end
|
48
|
+
|
49
|
+
action_callback release
|
111
50
|
end
|
112
51
|
end
|
metadata
CHANGED
@@ -1,112 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: factor-connector-heroku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.8
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Maciej Skierkowski
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-11-25 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
14
|
+
name: platform-api
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
19
|
+
version: 0.2.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: heroku-api
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - '='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: 0.3.19
|
38
|
-
type: :runtime
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - '='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 0.3.19
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: rest-client
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 1.7.2
|
54
|
-
type: :runtime
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.7.2
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: rubyzip
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: 1.1.6
|
70
|
-
type: :runtime
|
71
|
-
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: 1.1.6
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: json
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - '='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: 1.8.1
|
86
|
-
type: :runtime
|
87
|
-
prerelease: false
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - '='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: 1.8.1
|
26
|
+
version: 0.2.0
|
94
27
|
- !ruby/object:Gem::Dependency
|
95
28
|
name: factor-connector-api
|
96
29
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
30
|
requirements:
|
99
|
-
- - ~>
|
31
|
+
- - "~>"
|
100
32
|
- !ruby/object:Gem::Version
|
101
|
-
version: 0.0.
|
33
|
+
version: 0.0.13
|
102
34
|
type: :runtime
|
103
35
|
prerelease: false
|
104
36
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
37
|
requirements:
|
107
|
-
- - ~>
|
38
|
+
- - "~>"
|
108
39
|
- !ruby/object:Gem::Version
|
109
|
-
version: 0.0.
|
40
|
+
version: 0.0.13
|
110
41
|
description:
|
111
42
|
email:
|
112
43
|
- maciej@factor.io
|
@@ -117,26 +48,25 @@ files:
|
|
117
48
|
- lib/factor/connector/heroku.rb
|
118
49
|
homepage: https://factor.io
|
119
50
|
licenses: []
|
51
|
+
metadata: {}
|
120
52
|
post_install_message:
|
121
53
|
rdoc_options: []
|
122
54
|
require_paths:
|
123
55
|
- lib
|
124
56
|
required_ruby_version: !ruby/object:Gem::Requirement
|
125
|
-
none: false
|
126
57
|
requirements:
|
127
|
-
- -
|
58
|
+
- - ">="
|
128
59
|
- !ruby/object:Gem::Version
|
129
60
|
version: '0'
|
130
61
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
|
-
none: false
|
132
62
|
requirements:
|
133
|
-
- -
|
63
|
+
- - ">="
|
134
64
|
- !ruby/object:Gem::Version
|
135
65
|
version: '0'
|
136
66
|
requirements: []
|
137
67
|
rubyforge_project:
|
138
|
-
rubygems_version:
|
68
|
+
rubygems_version: 2.2.2
|
139
69
|
signing_key:
|
140
|
-
specification_version:
|
70
|
+
specification_version: 4
|
141
71
|
summary: Heroku Factor.io Connector
|
142
72
|
test_files: []
|