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 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