dockly 1.1.0 → 1.1.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.
@@ -44,6 +44,8 @@ class Dockly::BuildCache
44
44
 
45
45
  def run_build
46
46
  container = image.run(build_command)
47
+ status = container.wait(3600)['StatusCode'] # 1 hour max timeout
48
+ raise "Build Cache `#{build_command}` failed to run." unless status.zero?
47
49
  cache = copy_output_dir(container)
48
50
  debug "pushing #{output_dir} to s3"
49
51
  push_to_s3(cache)
@@ -55,7 +57,9 @@ class Dockly::BuildCache
55
57
  ensure_present! :output_dir
56
58
  if cache = pull_from_s3(version)
57
59
  debug "inserting to #{output_dir}"
58
- self.image = image.insert_local(
60
+ container = image.run("mkdir #{File.dirname(output_dir)}")
61
+ image_with_dir = container.tap { |c| c.wait }.commit
62
+ self.image = image_with_dir.insert_local(
59
63
  'localPath' => cache.path,
60
64
  'outputPath' => File.dirname(output_dir)
61
65
  )
@@ -113,7 +117,10 @@ class Dockly::BuildCache
113
117
  ensure_present! :image, :hash_command
114
118
  @hash_output ||= begin
115
119
  resp = ""
116
- image.run(hash_command).attach { |chunk| resp += chunk }
120
+ container = image.run(hash_command)
121
+ container.attach { |chunk| resp += chunk }
122
+ status = container.wait['StatusCode']
123
+ raise "Hash Command `#{hash_command} failed to run" unless status.zero?
117
124
  resp.strip
118
125
  end
119
126
  end
@@ -1,3 +1,3 @@
1
1
  module Dockly
2
- VERSION = '1.1.0'
2
+ VERSION = '1.1.1'
3
3
  end
@@ -8,7 +8,7 @@ describe Dockly::BuildCache, :docker do
8
8
  subject.s3_bucket 'lol'
9
9
  subject.s3_object_prefix 'swag'
10
10
  subject.image = image
11
- subject.hash_command 'md6' # haters come at me
11
+ subject.hash_command 'md5sum /etc/vim/vimrc'
12
12
  subject.build_command 'touch lol'
13
13
  subject.output_dir '/'
14
14
  end
@@ -26,8 +26,7 @@ describe Dockly::BuildCache, :docker do
26
26
  it "does not have the file lol" do
27
27
  i = subject.execute!
28
28
  output = ""
29
- puts i
30
- i.run('ls').start.attach { |chunk| output += chunk }
29
+ i.run('ls').attach { |chunk| output += chunk }
31
30
  output.should_not include('lol')
32
31
  end
33
32
  end
@@ -49,17 +48,36 @@ describe Dockly::BuildCache, :docker do
49
48
  subject.stub(:push_to_s3)
50
49
  end
51
50
 
52
- it "does have the file lol" do
53
- i = subject.execute!
54
- output = ""
55
- i.run('ls').attach { |chunk| output += chunk }
56
- output.should include('lol')
51
+ context "when the build succeeds" do
52
+ it "does have the file lol" do
53
+ i = subject.run_build
54
+ output = ""
55
+ i.run('ls').attach { |chunk| output += chunk }
56
+ output.should include('lol')
57
+ end
58
+ end
59
+
60
+ context "when the build fails" do
61
+ let!(:image) { subject.image }
62
+ before do
63
+ subject.image = double(:image).stub(:run) {
64
+ stub(:container, { :wait => { 'StatusCode' => 1 } })
65
+ }
66
+ end
67
+
68
+ after do
69
+ subject.image = image
70
+ end
71
+
72
+ it "raises an error" do
73
+ expect { subject.run_build }.to raise_error
74
+ end
57
75
  end
58
76
  end
59
77
 
60
78
  describe '#pull_from_s3' do
61
- let (:file) { subject.pull_from_s3('hey') }
62
- let (:object) { double(:object) }
79
+ let(:file) { subject.pull_from_s3('hey') }
80
+ let(:object) { double(:object) }
63
81
 
64
82
  before do
65
83
  subject.connection.stub(:get_object).and_return object
@@ -99,13 +117,26 @@ describe Dockly::BuildCache, :docker do
99
117
  "682aa2a07693cc27756eee9751db3903 /etc/vim/vimrc"
100
118
  }
101
119
 
102
- before do
103
- subject.image = image
104
- subject.hash_command 'md5sum /etc/vim/vimrc'
120
+ context "when hash command returns successfully" do
121
+ before do
122
+ subject.image = image
123
+ end
124
+
125
+ it 'returns the output of the hash_command in the container' do
126
+ subject.hash_output.should == output
127
+ end
105
128
  end
106
129
 
107
- it 'returns the output of the hash_command in the container' do
108
- subject.hash_output.should == output
130
+ context "when hash command returns failure" do
131
+ before do
132
+ subject.image = double(:image).stub(:run, {
133
+ :wait => { 'StatusCode' => 1 }
134
+ })
135
+ end
136
+
137
+ it 'raises an error' do
138
+ expect { subject.hash_output }.to raise_error
139
+ end
109
140
  end
110
141
  end
111
142
 
@@ -3,6 +3,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
 
4
4
  require 'rspec'
5
5
  require 'dockly'
6
+ require 'pry'
6
7
 
7
8
  Fog.mock!
8
9
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dockly
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-14 00:00:00.000000000 Z
12
+ date: 2013-11-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: clamp