dockly 1.9.0 → 1.10.0
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 +15 -0
- data/lib/dockly/deb.rb +2 -2
- data/lib/dockly/docker.rb +17 -1
- data/lib/dockly/rake_task.rb +59 -10
- data/lib/dockly/version.rb +1 -1
- data/spec/dockly/build_cache/docker_spec.rb +5 -5
- data/spec/dockly/deb_spec.rb +17 -3
- data/spec/dockly/docker_spec.rb +68 -52
- data/spec/dockly/rpm_spec.rb +17 -3
- metadata +4 -37
- data/spec/support/vcr.rb +0 -11
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NGZiYjBlZWZjMzMxOWFhZDMzYzFjZTFiMGQxMWQyZDU5MzI0ZTEzMA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MzVmODE2ZjhlMTkxMzhiNzNkMGIxZTk2OWI0MDNmYzVlZGFiMDYyOQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YjVmZjBlNGYzNDNlOGE2ZTNkYjNkM2M4NjYxYTUxMzU2MjQ5MWM5ZWQ3MTFi
|
10
|
+
OGU5MzU5OTYzOTNhZWJjM2ZkYTQ2YmM2ZmY2ZDViY2M4OWNiMWIyYTM4OTUy
|
11
|
+
OTc0OWZiZjI5NDcxNDc5NjI2ZmIzMmI1ZTM4MDM2ZWEwZmRiNGE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZmE2ZmUyMDVhOTcwNGY2NGY4YTMyNmI2MzI4ZTMxYzU5NjJmMThjM2ViYTYw
|
14
|
+
NTBhMjhkZGY1YmYzY2IyMTllYWI5ODk4MzA0NjdlM2U5NGJmODdjYzBmNTg4
|
15
|
+
OTUxYzRiMzdhN2NmMmNmM2E2NzZkYWFmNWI1ODI2N2MwODUzYmQ=
|
data/lib/dockly/deb.rb
CHANGED
@@ -26,6 +26,7 @@ class Dockly::Deb
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def create_package!
|
29
|
+
info "creating package"
|
29
30
|
ensure_present! :build_dir, :deb_build_dir
|
30
31
|
FileUtils.mkdir_p(File.join(build_dir, deb_build_dir))
|
31
32
|
FileUtils.rm(build_path) if File.exist?(build_path)
|
@@ -41,9 +42,7 @@ class Dockly::Deb
|
|
41
42
|
end
|
42
43
|
|
43
44
|
def build
|
44
|
-
info "creating package"
|
45
45
|
create_package!
|
46
|
-
info "uploading to s3"
|
47
46
|
upload_to_s3
|
48
47
|
end
|
49
48
|
|
@@ -64,6 +63,7 @@ class Dockly::Deb
|
|
64
63
|
end
|
65
64
|
|
66
65
|
def upload_to_s3
|
66
|
+
info "uploading to s3"
|
67
67
|
return if s3_bucket.nil?
|
68
68
|
raise "Package wasn't created!" unless File.exist?(build_path)
|
69
69
|
info "uploading package to s3"
|
data/lib/dockly/docker.rb
CHANGED
@@ -39,6 +39,21 @@ class Dockly::Docker
|
|
39
39
|
cleanup([image]) if cleanup_images
|
40
40
|
end
|
41
41
|
|
42
|
+
def export_only
|
43
|
+
if image = find_image_by_repotag
|
44
|
+
info "Found image by repo:tag: #{repo}:#{tag} - #{image.inspect}"
|
45
|
+
export_image(image)
|
46
|
+
else
|
47
|
+
raise "Could not find image"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def find_image_by_repotag
|
52
|
+
Docker::Image.all.find do |image|
|
53
|
+
image.info["RepoTags"].include?("#{repo}:#{tag}")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
42
57
|
def generate_build
|
43
58
|
Docker.options = { :read_timeout => timeout, :write_timeout => timeout }
|
44
59
|
images = {}
|
@@ -179,7 +194,7 @@ class Dockly::Docker
|
|
179
194
|
info "running custom build steps, starting with id: #{image.id}"
|
180
195
|
out_image = ::Docker::Image.build("from #{image.id}\n#{build}")
|
181
196
|
info "finished running custom build steps, result id: #{out_image.id}"
|
182
|
-
out_image.tap { |img| img.tag(:
|
197
|
+
out_image.tap { |img| img.tag(repo: repo, tag: tag, force: true) }
|
183
198
|
end
|
184
199
|
|
185
200
|
def repo
|
@@ -227,6 +242,7 @@ class Dockly::Docker
|
|
227
242
|
end
|
228
243
|
raise
|
229
244
|
ensure
|
245
|
+
container.tap(&:wait).remove if container
|
230
246
|
gzip_output.close if gzip_output
|
231
247
|
end
|
232
248
|
|
data/lib/dockly/rake_task.rb
CHANGED
@@ -53,48 +53,97 @@ namespace :dockly do
|
|
53
53
|
raise "No dockly.rb found!" unless File.exist?('dockly.rb')
|
54
54
|
end
|
55
55
|
|
56
|
+
prepare_targets = []
|
57
|
+
upload_targets = []
|
56
58
|
build_targets = []
|
57
59
|
|
58
60
|
namespace :deb do
|
59
61
|
Dockly.debs.values.each do |inst|
|
60
|
-
|
61
|
-
|
62
|
-
|
62
|
+
namespace :prepare do
|
63
|
+
task inst.name => 'dockly:load' do |name|
|
64
|
+
inst.create_package!
|
65
|
+
end
|
63
66
|
end
|
67
|
+
|
68
|
+
namespace :upload do
|
69
|
+
deb inst.name => 'dockly:load' do |name|
|
70
|
+
inst.upload_to_s3
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
deb inst.name => [
|
75
|
+
'dockly:load',
|
76
|
+
"dockly:deb:prepare:#{inst.name}",
|
77
|
+
"dockly:deb:upload:#{inst.name}"
|
78
|
+
]
|
79
|
+
prepare_targets << "dockly:deb:prepare:#{inst.name}"
|
80
|
+
upload_targets << "dockly:deb:upload:#{inst.name}"
|
64
81
|
build_targets << "dockly:deb:#{inst.name}"
|
65
82
|
end
|
66
83
|
end
|
67
84
|
|
68
85
|
namespace :rpm do
|
69
86
|
Dockly.rpms.values.each do |inst|
|
70
|
-
|
71
|
-
|
72
|
-
|
87
|
+
namespace :prepare do
|
88
|
+
task inst.name => 'dockly:load' do |name|
|
89
|
+
inst.create_package!
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
namespace :upload do
|
94
|
+
rpm inst.name => 'dockly:load' do |name|
|
95
|
+
inst.upload_to_s3
|
96
|
+
end
|
73
97
|
end
|
98
|
+
|
99
|
+
rpm inst.name => [
|
100
|
+
'dockly:load',
|
101
|
+
"dockly:rpm:prepare:#{inst.name}",
|
102
|
+
"dockly:rpm:upload:#{inst.name}"
|
103
|
+
]
|
104
|
+
prepare_targets << "dockly:rpm:prepare:#{inst.name}"
|
105
|
+
upload_targets << "dockly:rpm:upload:#{inst.name}"
|
74
106
|
build_targets << "dockly:rpm:#{inst.name}"
|
75
107
|
end
|
76
108
|
end
|
77
109
|
|
78
110
|
namespace :docker do
|
79
111
|
Dockly.dockers.values.each do |inst|
|
80
|
-
|
81
|
-
|
82
|
-
inst.
|
112
|
+
# For backwards compatibility
|
113
|
+
namespace :noexport do
|
114
|
+
task inst.name => "dockly:docker:prepare:#{inst.name}"
|
83
115
|
end
|
84
116
|
|
85
|
-
namespace :
|
117
|
+
namespace :prepare do
|
86
118
|
task inst.name => 'dockly:load' do
|
87
119
|
Thread.current[:rake_task] = inst.name
|
88
120
|
inst.generate_build
|
89
121
|
end
|
90
122
|
end
|
91
123
|
|
124
|
+
namespace :upload do
|
125
|
+
task inst.name => 'dockly:load' do
|
126
|
+
Thread.current[:rake_task] = inst.name
|
127
|
+
inst.export_only
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
docker inst.name => [
|
132
|
+
'dockly:load',
|
133
|
+
"dockly:docker:prepare:#{inst.name}",
|
134
|
+
"dockly:docker:upload:#{inst.name}"
|
135
|
+
]
|
136
|
+
|
92
137
|
# Docker image will be generated by 'dockly:deb:package'
|
93
138
|
unless inst.s3_bucket.nil?
|
139
|
+
prepare_targets << "dockly:docker:prepare:#{inst.name}"
|
140
|
+
upload_targets << "dockly:docker:upload:#{inst.name}"
|
94
141
|
build_targets << "dockly:docker:#{inst.name}"
|
95
142
|
end
|
96
143
|
end
|
97
144
|
end
|
98
145
|
|
146
|
+
multitask :prepare_all => prepare_targets
|
147
|
+
multitask :upload_all => upload_targets
|
99
148
|
multitask :build_all => build_targets
|
100
149
|
end
|
data/lib/dockly/version.rb
CHANGED
@@ -46,7 +46,7 @@ describe Dockly::BuildCache::Docker, :docker do
|
|
46
46
|
it "does not have the file lol" do
|
47
47
|
i = build_cache.execute!
|
48
48
|
output = ""
|
49
|
-
i.run('ls').attach { |source,chunk| output += chunk }
|
49
|
+
i.run('ls').attach(logs: true) { |source,chunk| output += chunk }
|
50
50
|
output.should_not include('lol')
|
51
51
|
end
|
52
52
|
end
|
@@ -60,8 +60,8 @@ describe Dockly::BuildCache::Docker, :docker do
|
|
60
60
|
|
61
61
|
it "does have the file lol" do
|
62
62
|
i = build_cache.execute!
|
63
|
-
output = i.run('ls /').attach(:
|
64
|
-
output.first.
|
63
|
+
output = i.run('ls /').attach(stdout: true, logs: true)
|
64
|
+
expect(output.first.grep(/lol/)).to_not be_empty
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -75,7 +75,7 @@ describe Dockly::BuildCache::Docker, :docker do
|
|
75
75
|
it "does have the file lol" do
|
76
76
|
i = build_cache.run_build
|
77
77
|
output = ""
|
78
|
-
i.run('ls').attach { |source,chunk| output += chunk }
|
78
|
+
i.run('ls').attach(logs: true) { |source,chunk| output += chunk }
|
79
79
|
output.should include('lol')
|
80
80
|
end
|
81
81
|
end
|
@@ -156,7 +156,7 @@ describe Dockly::BuildCache::Docker, :docker do
|
|
156
156
|
context "when parameter command returns successfully" do
|
157
157
|
let(:command) { "uname -r" }
|
158
158
|
it 'returns the output of the parameter_command' do
|
159
|
-
expect(build_cache.parameter_output(command)).to match(/\A3\.\d{2}\.\d-\d{2}
|
159
|
+
expect(build_cache.parameter_output(command)).to match(/\A3\.\d{2}\.\d-\d{1,2}-\w+\Z/)
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
data/spec/dockly/deb_spec.rb
CHANGED
@@ -69,6 +69,13 @@ describe Dockly::Deb do
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
+
after do
|
73
|
+
image = ::Docker::Image.all.find do |image|
|
74
|
+
image.info['RepoTags'].include?('deb_test:latest')
|
75
|
+
end
|
76
|
+
image.remove if image
|
77
|
+
end
|
78
|
+
|
72
79
|
it 'builds the docker image and adds it to the deb' do
|
73
80
|
subject.create_package!
|
74
81
|
`dpkg --contents #{filename}`
|
@@ -87,13 +94,20 @@ describe Dockly::Deb do
|
|
87
94
|
|
88
95
|
registry :test_docker_registry do
|
89
96
|
auth_config_file '/etc/docker/.dockercfg'
|
90
|
-
username '
|
91
|
-
email '
|
92
|
-
password '
|
97
|
+
username ENV['DOCKER_USER']
|
98
|
+
email ENV['DOCKER_EMAIL']
|
99
|
+
password ENV['DOCKER_PASS']
|
93
100
|
end
|
94
101
|
end
|
95
102
|
end
|
96
103
|
|
104
|
+
after do
|
105
|
+
image = ::Docker::Image.all.find do |image|
|
106
|
+
image.info['RepoTags'].include?("#{ENV['DOCKER_USER']}/deb_test:latest")
|
107
|
+
end
|
108
|
+
image.remove if image
|
109
|
+
end
|
110
|
+
|
97
111
|
it 'builds the docker image and adds it to the deb' do
|
98
112
|
subject.create_package!
|
99
113
|
`dpkg --contents #{filename}`
|
data/spec/dockly/docker_spec.rb
CHANGED
@@ -64,7 +64,16 @@ describe Dockly::Docker do
|
|
64
64
|
end
|
65
65
|
|
66
66
|
describe '#import_base', :docker do
|
67
|
+
let(:images) { [] }
|
68
|
+
let(:docker_file_s3) { 'https://s3.amazonaws.com/swipely-pub/docker-export-ubuntu-latest.tgz' }
|
67
69
|
let(:docker_file) { 'docker-export-ubuntu-latest.tar.gz' }
|
70
|
+
let(:container) { Docker::Container.create('Image' => images.last.id, 'Cmd' => ['ls', '-1', '/']) }
|
71
|
+
let(:output) { container.tap(&:start).attach(logs: true) }
|
72
|
+
|
73
|
+
after do
|
74
|
+
container.tap(&:wait).remove
|
75
|
+
images.last.remove
|
76
|
+
end
|
68
77
|
|
69
78
|
# TODO: since we used to run this w/ Vagrant, we put it all together; break it up
|
70
79
|
it 'works' do
|
@@ -72,27 +81,21 @@ describe Dockly::Docker do
|
|
72
81
|
subject.tag 'my-app'
|
73
82
|
unless File.exist?(docker_file)
|
74
83
|
File.open(docker_file, 'wb') do |file|
|
75
|
-
Excon.get(
|
76
|
-
:response_block => lambda { |chunk, _, _| file.write(chunk) })
|
84
|
+
Excon.get(docker_file_s3, response_block: lambda { |chunk, _, _| file.write(chunk) })
|
77
85
|
end
|
78
86
|
end
|
79
|
-
|
80
|
-
|
81
|
-
|
87
|
+
images << subject.import_base(subject.ensure_tar(docker_file))
|
88
|
+
expect(images.last).to_not be_nil
|
89
|
+
expect(images.last.id).to_not be_nil
|
82
90
|
|
83
91
|
# it 'builds'
|
84
92
|
subject.build "run touch /lol"
|
85
|
-
|
86
|
-
|
87
|
-
output = container.tap(&:start).attach(logs: true)
|
88
|
-
output[0].grep(/lol/).should_not be_empty
|
89
|
-
# TODO: stop resetting the connection, once no longer necessary after attach
|
90
|
-
Docker.reset_connection!
|
91
|
-
subject.instance_variable_set(:@connection, Docker.connection)
|
93
|
+
images << subject.build_image(images.last)
|
94
|
+
expect(output[0].grep(/lol/)).to_not be_empty
|
92
95
|
|
93
96
|
# it 'exports'
|
94
|
-
subject.export_image(
|
95
|
-
File.exist?('build/docker/test_docker-image.tgz').
|
97
|
+
subject.export_image(images.last)
|
98
|
+
expect(File.exist?('build/docker/test_docker-image.tgz')).to be_true
|
96
99
|
end
|
97
100
|
end
|
98
101
|
|
@@ -225,7 +228,10 @@ describe Dockly::Docker do
|
|
225
228
|
end
|
226
229
|
|
227
230
|
describe '#export_image_diff', :docker do
|
231
|
+
let(:images) { [] }
|
228
232
|
let(:output) { StringIO.new }
|
233
|
+
let(:container) { images.last.run('true').tap { |c| c.wait(10) } }
|
234
|
+
|
229
235
|
before do
|
230
236
|
subject.instance_eval do
|
231
237
|
import 'https://s3.amazonaws.com/swipely-pub/docker-export-ubuntu-test.tgz'
|
@@ -234,11 +240,16 @@ describe Dockly::Docker do
|
|
234
240
|
end
|
235
241
|
end
|
236
242
|
|
243
|
+
after do
|
244
|
+
container.remove
|
245
|
+
images.last.remove
|
246
|
+
end
|
247
|
+
|
237
248
|
it "should export only the tar with the new file" do
|
238
249
|
docker_tar = File.absolute_path(subject.ensure_tar(subject.fetch_import))
|
239
|
-
|
240
|
-
|
241
|
-
|
250
|
+
|
251
|
+
images << subject.import_base(docker_tar)
|
252
|
+
images << subject.build_image(images.last)
|
242
253
|
subject.export_image_diff(container, output)
|
243
254
|
|
244
255
|
expect(output.string).to include('it_worked')
|
@@ -263,20 +274,18 @@ describe Dockly::Docker do
|
|
263
274
|
end
|
264
275
|
|
265
276
|
it 'builds a docker image' do
|
266
|
-
expect {
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
paths.should include('it_worked')
|
279
|
-
}.to_not change { ::Docker::Image.all(:all => true).length }
|
277
|
+
expect { subject.generate! }.to_not change { ::Docker::Image.all(:all => true).length }
|
278
|
+
expect(File.exist?(docker_file)).to be_true
|
279
|
+
expect(Dockly::Util::Tar.is_gzip?(docker_file)).to be_true
|
280
|
+
expect(File.size(docker_file)).to be > (1024 * 1024)
|
281
|
+
paths = []
|
282
|
+
Gem::Package::TarReader.new(Zlib::GzipReader.new(File.new(docker_file))).each do |entry|
|
283
|
+
paths << entry.header.name
|
284
|
+
end
|
285
|
+
expect(paths.size).to be > 1000
|
286
|
+
expect(paths).to include('sbin/init')
|
287
|
+
expect(paths).to include('lib/dockly.rb')
|
288
|
+
expect(paths).to include('it_worked')
|
280
289
|
end
|
281
290
|
end
|
282
291
|
|
@@ -293,44 +302,51 @@ describe Dockly::Docker do
|
|
293
302
|
end
|
294
303
|
end
|
295
304
|
|
305
|
+
after do
|
306
|
+
image = ::Docker::Image.all.find do |image|
|
307
|
+
image.info['RepoTags'].include?('dockly_test:latest')
|
308
|
+
end
|
309
|
+
image.remove if image
|
310
|
+
end
|
311
|
+
|
296
312
|
it 'builds a docker image' do
|
297
|
-
expect {
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
}.to change { ::Docker::Image.all(:all => true).length }.by(4)
|
313
|
+
expect { subject.generate! }.to change { ::Docker::Image.all(:all => true).length }.by(4)
|
314
|
+
|
315
|
+
expect(File.exist?(docker_file)).to be_true
|
316
|
+
expect(Dockly::Util::Tar.is_gzip?(docker_file)).to be_true
|
317
|
+
expect(File.size(docker_file)).to be > (1024 * 1024)
|
318
|
+
paths = []
|
319
|
+
Gem::Package::TarReader.new(Zlib::GzipReader.new(File.new(docker_file))).each do |entry|
|
320
|
+
paths << entry.header.name
|
321
|
+
end
|
322
|
+
expect(paths.size).to be > 1000
|
323
|
+
expect(paths).to include('sbin/init')
|
324
|
+
expect(paths).to include('lib/dockly.rb')
|
325
|
+
expect(paths).to include('it_worked')
|
311
326
|
end
|
312
327
|
end
|
313
328
|
|
314
329
|
context 'when there is a registry' do
|
315
330
|
subject {
|
316
331
|
Dockly::Docker.new do
|
317
|
-
registry_import '
|
332
|
+
registry_import 'tianon/true', :tag => 'latest'
|
318
333
|
git_archive '.'
|
319
|
-
build "
|
334
|
+
build 'RUN ["/true", ""]'
|
320
335
|
repository 'dockly_test'
|
321
336
|
build_dir 'build/docker'
|
322
337
|
|
323
338
|
registry do
|
324
|
-
username '
|
325
|
-
email '
|
326
|
-
password '
|
339
|
+
username ENV['DOCKER_USER']
|
340
|
+
email ENV['DOCKER_EMAIL']
|
341
|
+
password ENV['DOCKER_PASS']
|
327
342
|
end
|
328
343
|
end
|
329
344
|
}
|
330
345
|
|
331
346
|
it 'pushes the image to the registry instead of exporting it' do
|
332
|
-
subject.
|
333
|
-
expect { ::Docker::Image.build(
|
347
|
+
image = subject.generate_build
|
348
|
+
expect { ::Docker::Image.build("from #{ENV['DOCKER_USER']}/dockly_test") }.to_not raise_error
|
349
|
+
image.remove unless image.nil?
|
334
350
|
end
|
335
351
|
end
|
336
352
|
end
|
data/spec/dockly/rpm_spec.rb
CHANGED
@@ -56,6 +56,13 @@ describe Dockly::Rpm do
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
+
after do
|
60
|
+
image = ::Docker::Image.all.find do |image|
|
61
|
+
image.info['RepoTags'].include?('rpm_test:latest')
|
62
|
+
end
|
63
|
+
image.remove if image
|
64
|
+
end
|
65
|
+
|
59
66
|
it 'builds the docker image and adds it to the rpm' do
|
60
67
|
subject.create_package!
|
61
68
|
`rpm -qpl #{filename}`
|
@@ -74,13 +81,20 @@ describe Dockly::Rpm do
|
|
74
81
|
|
75
82
|
registry :test_docker_registry do
|
76
83
|
auth_config_file '/etc/docker/.dockercfg'
|
77
|
-
username '
|
78
|
-
email '
|
79
|
-
password '
|
84
|
+
username ENV['DOCKER_USER']
|
85
|
+
email ENV['DOCKER_EMAIL']
|
86
|
+
password ENV['DOCKER_PASS']
|
80
87
|
end
|
81
88
|
end
|
82
89
|
end
|
83
90
|
|
91
|
+
after do
|
92
|
+
image = ::Docker::Image.all.find do |image|
|
93
|
+
image.info['RepoTags'].include?("#{ENV['DOCKER_USER']}/rpm_test:latest")
|
94
|
+
end
|
95
|
+
image.remove if image
|
96
|
+
end
|
97
|
+
|
84
98
|
it 'builds the docker image and adds it to the rpm' do
|
85
99
|
subject.create_package!
|
86
100
|
`rpm -qpl #{filename}`
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dockly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.10.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Swipely, Inc.
|
@@ -14,7 +13,6 @@ dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: clamp
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
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
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: docker-api
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ! '>='
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ! '>='
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: dockly-util
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ~>
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ~>
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,7 +55,6 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: excon
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ! '>='
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ! '>='
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -78,7 +69,6 @@ dependencies:
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: fog
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - ~>
|
84
74
|
- !ruby/object:Gem::Version
|
@@ -86,7 +76,6 @@ dependencies:
|
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - ~>
|
92
81
|
- !ruby/object:Gem::Version
|
@@ -94,7 +83,6 @@ dependencies:
|
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: foreman
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
87
|
- - ! '>='
|
100
88
|
- !ruby/object:Gem::Version
|
@@ -102,7 +90,6 @@ dependencies:
|
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
94
|
- - ! '>='
|
108
95
|
- !ruby/object:Gem::Version
|
@@ -110,7 +97,6 @@ dependencies:
|
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: fpm
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
101
|
- - ~>
|
116
102
|
- !ruby/object:Gem::Version
|
@@ -118,7 +104,6 @@ dependencies:
|
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
108
|
- - ~>
|
124
109
|
- !ruby/object:Gem::Version
|
@@ -126,7 +111,6 @@ dependencies:
|
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: grit
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
115
|
- - ! '>='
|
132
116
|
- !ruby/object:Gem::Version
|
@@ -134,7 +118,6 @@ dependencies:
|
|
134
118
|
type: :runtime
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
122
|
- - ! '>='
|
140
123
|
- !ruby/object:Gem::Version
|
@@ -142,7 +125,6 @@ dependencies:
|
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: cane
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
129
|
- - ! '>='
|
148
130
|
- !ruby/object:Gem::Version
|
@@ -150,7 +132,6 @@ dependencies:
|
|
150
132
|
type: :development
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
136
|
- - ! '>='
|
156
137
|
- !ruby/object:Gem::Version
|
@@ -158,7 +139,6 @@ dependencies:
|
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
140
|
name: pry
|
160
141
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
142
|
requirements:
|
163
143
|
- - ! '>='
|
164
144
|
- !ruby/object:Gem::Version
|
@@ -166,7 +146,6 @@ dependencies:
|
|
166
146
|
type: :development
|
167
147
|
prerelease: false
|
168
148
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
149
|
requirements:
|
171
150
|
- - ! '>='
|
172
151
|
- !ruby/object:Gem::Version
|
@@ -174,7 +153,6 @@ dependencies:
|
|
174
153
|
- !ruby/object:Gem::Dependency
|
175
154
|
name: rake
|
176
155
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
156
|
requirements:
|
179
157
|
- - ! '>='
|
180
158
|
- !ruby/object:Gem::Version
|
@@ -182,7 +160,6 @@ dependencies:
|
|
182
160
|
type: :development
|
183
161
|
prerelease: false
|
184
162
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
163
|
requirements:
|
187
164
|
- - ! '>='
|
188
165
|
- !ruby/object:Gem::Version
|
@@ -190,7 +167,6 @@ dependencies:
|
|
190
167
|
- !ruby/object:Gem::Dependency
|
191
168
|
name: rspec
|
192
169
|
requirement: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
170
|
requirements:
|
195
171
|
- - ~>
|
196
172
|
- !ruby/object:Gem::Version
|
@@ -198,7 +174,6 @@ dependencies:
|
|
198
174
|
type: :development
|
199
175
|
prerelease: false
|
200
176
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
177
|
requirements:
|
203
178
|
- - ~>
|
204
179
|
- !ruby/object:Gem::Version
|
@@ -206,7 +181,6 @@ dependencies:
|
|
206
181
|
- !ruby/object:Gem::Dependency
|
207
182
|
name: vcr
|
208
183
|
requirement: !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
184
|
requirements:
|
211
185
|
- - ! '>='
|
212
186
|
- !ruby/object:Gem::Version
|
@@ -214,7 +188,6 @@ dependencies:
|
|
214
188
|
type: :development
|
215
189
|
prerelease: false
|
216
190
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
191
|
requirements:
|
219
192
|
- - ! '>='
|
220
193
|
- !ruby/object:Gem::Version
|
@@ -222,7 +195,6 @@ dependencies:
|
|
222
195
|
- !ruby/object:Gem::Dependency
|
223
196
|
name: webmock
|
224
197
|
requirement: !ruby/object:Gem::Requirement
|
225
|
-
none: false
|
226
198
|
requirements:
|
227
199
|
- - ! '>='
|
228
200
|
- !ruby/object:Gem::Version
|
@@ -230,7 +202,6 @@ dependencies:
|
|
230
202
|
type: :development
|
231
203
|
prerelease: false
|
232
204
|
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
none: false
|
234
205
|
requirements:
|
235
206
|
- - ! '>='
|
236
207
|
- !ruby/object:Gem::Version
|
@@ -311,31 +282,29 @@ files:
|
|
311
282
|
- spec/fixtures/test-2.tar.gz
|
312
283
|
- spec/fixtures/test-3.tar
|
313
284
|
- spec/spec_helper.rb
|
314
|
-
- spec/support/vcr.rb
|
315
285
|
homepage: https://github.com/swipely/dockly
|
316
286
|
licenses:
|
317
287
|
- MIT
|
288
|
+
metadata: {}
|
318
289
|
post_install_message:
|
319
290
|
rdoc_options: []
|
320
291
|
require_paths:
|
321
292
|
- lib
|
322
293
|
required_ruby_version: !ruby/object:Gem::Requirement
|
323
|
-
none: false
|
324
294
|
requirements:
|
325
295
|
- - ! '>='
|
326
296
|
- !ruby/object:Gem::Version
|
327
297
|
version: '0'
|
328
298
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
329
|
-
none: false
|
330
299
|
requirements:
|
331
300
|
- - ! '>='
|
332
301
|
- !ruby/object:Gem::Version
|
333
302
|
version: '0'
|
334
303
|
requirements: []
|
335
304
|
rubyforge_project:
|
336
|
-
rubygems_version:
|
305
|
+
rubygems_version: 2.4.6
|
337
306
|
signing_key:
|
338
|
-
specification_version:
|
307
|
+
specification_version: 4
|
339
308
|
summary: Packaging made easy
|
340
309
|
test_files:
|
341
310
|
- spec/dockly/aws/s3_writer_spec.rb
|
@@ -361,5 +330,3 @@ test_files:
|
|
361
330
|
- spec/fixtures/test-2.tar.gz
|
362
331
|
- spec/fixtures/test-3.tar
|
363
332
|
- spec/spec_helper.rb
|
364
|
-
- spec/support/vcr.rb
|
365
|
-
has_rdoc:
|
data/spec/support/vcr.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'webmock'
|
2
|
-
require 'vcr'
|
3
|
-
|
4
|
-
WebMock.disable_net_connect!
|
5
|
-
|
6
|
-
VCR.configure do |c|
|
7
|
-
c.allow_http_connections_when_no_cassette = true
|
8
|
-
c.hook_into :webmock
|
9
|
-
c.cassette_library_dir = File.join(File.dirname(File.dirname(__FILE__)), 'vcr')
|
10
|
-
c.configure_rspec_metadata!
|
11
|
-
end
|