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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9873753bcc6bffb9546adf4022433732facc78c0
4
- data.tar.gz: 15bfa779ab8115550d137f02ebb1591524ff4763
3
+ metadata.gz: 13286e4b9d44c4a6f6a1c79d0b2073065db3556f
4
+ data.tar.gz: fe66e353f7d07e804d484dae0cb23e7dfe9c200d
5
5
  SHA512:
6
- metadata.gz: 0ec0681915beb261b91a511ec5f5bcd79b46722df1f230d5cbb3caf025ba6182ea99ce236f2a4bf0f8b82fd1666a7bb0824f6a1bff79d16fdeab5f257f261527
7
- data.tar.gz: cd44f7e126e9feaf8253d0c0b6c94874b712ba168857657bcec282897761de689ba659d4ffb0a3e2d43ad3857b78f93da8636403536bf891f83b02d9e6a6130a
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
- src + ':' + Digest::MD5.file(src).to_s
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))
@@ -1,3 +1,3 @@
1
1
  module Nutkins
2
- VERSION = "0.10.1"
2
+ VERSION = "0.10.2"
3
3
  end
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
- Docker::Builder::build cfg
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 is identical to cached version"
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
- private
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 base
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nutkins
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Pike