factor-connector-heroku 0.0.5 → 0.0.8
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 +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: []
|