nutkins 0.10.1 → 0.10.2
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 +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
|