nutkins 0.10.1 → 0.10.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/nutkins/docker_builder.rb +13 -5
- data/lib/nutkins/version.rb +1 -1
- data/lib/nutkins.rb +6 -5
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13286e4b9d44c4a6f6a1c79d0b2073065db3556f
|
4
|
+
data.tar.gz: fe66e353f7d07e804d484dae0cb23e7dfe9c200d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be3e0c9f9d0f1ada791f94419bd6d9a421100f250b0efa8747250706b7f76be60232b32ae4285da1b686bb2231e3ea641a0bfed850edc8f5b9d9df43840b5c7d
|
7
|
+
data.tar.gz: 92d9fc54b1d4f38b5984abbc622a4ae550d53c2a3f673b1461544edc9eccda11b36e8b38bb623ee0250271f9b228997ec8ca94434ce0aa1fc4e1560307beed13
|
@@ -5,16 +5,15 @@ require "digest"
|
|
5
5
|
module Nutkins::Docker::Builder
|
6
6
|
Docker = Nutkins::Docker
|
7
7
|
|
8
|
-
def self.build cfg
|
9
|
-
base = cfg["base"]
|
8
|
+
def self.build cfg, base_tag = nil
|
9
|
+
base = base_tag || cfg["base"]
|
10
10
|
raise "to use build commands you must specify the base image" unless base
|
11
11
|
|
12
12
|
# TODO: build cache from this and use to determine restore point
|
13
13
|
# Docker.run 'inspect', tag, stderr: false
|
14
|
-
|
15
14
|
unless Docker.run 'inspect', base, stderr: false
|
16
15
|
puts "getting base image"
|
17
|
-
Docker.run 'pull', base, stdout: true
|
16
|
+
raise "could not find base image #{base}" unless Docker.run 'pull', base, stdout: true
|
18
17
|
end
|
19
18
|
|
20
19
|
# the base image to start rebuilding from
|
@@ -53,7 +52,16 @@ module Nutkins::Docker::Builder
|
|
53
52
|
# ensure checksum of each file is embedded into run command
|
54
53
|
# if any file changes the cache is dirtied
|
55
54
|
run_args = '#(nop) add ' + add_files.map do |src|
|
56
|
-
|
55
|
+
if File.directory? src
|
56
|
+
md5 = Digest::MD5.new
|
57
|
+
Dir.glob("#{src}/**/*").each do |file|
|
58
|
+
md5.update(File.read file)
|
59
|
+
end
|
60
|
+
hash = md5.hexdigest
|
61
|
+
else
|
62
|
+
hash = Digest::MD5.file(src).to_s
|
63
|
+
end
|
64
|
+
src + ':' + hash
|
57
65
|
end.push(add_files_dest).join(' ')
|
58
66
|
when "cmd", "entrypoint", "env", "expose", "label", "onbuild", "user", "volume", "workdir"
|
59
67
|
env_args = cmd + ' ' + (cmd_args.kind_of?(String) ? cmd_args : JSON.dump(cmd_args))
|
data/lib/nutkins/version.rb
CHANGED
data/lib/nutkins.rb
CHANGED
@@ -69,7 +69,8 @@ module Nutkins
|
|
69
69
|
|
70
70
|
if cfg.dig "build", "commands"
|
71
71
|
# if build commands are available use nutkins built-in builder
|
72
|
-
|
72
|
+
base_cfg ||= config_for_image base
|
73
|
+
Docker::Builder::build cfg, base_cfg && base_cfg['tag']
|
73
74
|
else
|
74
75
|
# fallback to `docker build` which is less good
|
75
76
|
if not Docker.run 'build', '-t', cfg['latest_tag'], '-t', tag, img_dir, stdout: true
|
@@ -83,7 +84,7 @@ module Nutkins
|
|
83
84
|
puts "deleting previous image #{prev_image_id}"
|
84
85
|
Docker.run "rmi", prev_image_id
|
85
86
|
else
|
86
|
-
puts "image
|
87
|
+
puts "unchanged image: #{tag}"
|
87
88
|
end
|
88
89
|
elsif image_id
|
89
90
|
puts "created new image #{image_id}"
|
@@ -317,7 +318,7 @@ module Nutkins
|
|
317
318
|
end
|
318
319
|
end
|
319
320
|
|
320
|
-
|
321
|
+
private
|
321
322
|
def get_etcd_container_name
|
322
323
|
repository = @config.repository
|
323
324
|
repository && "nutkins-etcd-#{repository}"
|
@@ -344,8 +345,9 @@ module Nutkins
|
|
344
345
|
img_cfg['latest_tag'] = get_tag img_cfg
|
345
346
|
img_cfg['tag'] = img_cfg['latest_tag'] + ':' + img_cfg['version']
|
346
347
|
|
348
|
+
# base isn't the full tag name in the case of local references!!
|
347
349
|
base = img_cfg['base']
|
348
|
-
raise "#{img_cfg_path} must include `base' field" unless
|
350
|
+
raise "#{img_cfg_path} must include `base' field" unless base
|
349
351
|
@img_configs[path] = img_cfg
|
350
352
|
end
|
351
353
|
|
@@ -377,7 +379,6 @@ module Nutkins
|
|
377
379
|
Dir.glob("#{path}/{volumes,secrets}/*.gpg")
|
378
380
|
end
|
379
381
|
|
380
|
-
private
|
381
382
|
def rm_etcd_docker_container existing
|
382
383
|
raise 'could not delete existing container' unless Docker.run 'rm', existing if existing
|
383
384
|
end
|