dockly 1.5.9 → 1.5.10

Sign up to get free protection for your applications and to get access to all the features.
data/.cane CHANGED
@@ -1,3 +1,3 @@
1
1
  --no-doc
2
- --abc-max 30
2
+ --abc-max 33
3
3
  --style-measure 120
@@ -20,6 +20,7 @@ module Dockly
20
20
  generate_snippet_for :install_package, [:path]
21
21
  generate_snippet_for :get_and_install_deb, [:s3_url, :deb_path]
22
22
  generate_snippet_for :docker_import, [:repo, :tag], { :tag => "latest" }
23
+ generate_snippet_for :docker_tag_latest, [:repo, :tag]
23
24
  generate_snippet_for :file_docker_import, [:path, :repo, :tag]
24
25
  generate_snippet_for :file_diff_docker_import, [:base_image, :diff_image, :repo, :tag]
25
26
  generate_snippet_for :s3_docker_import, [:s3_url, :repo, :tag]
@@ -25,25 +25,31 @@ class Dockly::BuildCache::Docker < Dockly::BuildCache::Base
25
25
  ensure_present! :output_dir
26
26
  if cache = pull_from_s3(version)
27
27
  debug "inserting to #{output_directory}"
28
- path = File.expand_path(cache.path)
29
- path_parent = File.dirname(path)
30
- tar_flags = keep_old_files ? '-xkf' : 'xf'
31
- container = ::Docker::Container.create(
32
- 'Image' => image.id,
33
- 'Cmd' => ['/bin/bash', '-lc', [
34
- "mkdir -p #{File.dirname(output_directory)}",
35
- '&&',
36
- "tar #{tar_flags} #{File.join('/', 'host', path)} -C #{File.dirname(output_directory)}"
37
- ].join(' ')
38
- ],
39
- 'Volumes' => {
40
- File.join('/', 'host', path_parent) => { path_parent => 'rw' }
41
- }
28
+ container = image.run("mkdir -p #{File.dirname(output_directory)}")
29
+ image_with_dir = container.tap(&:wait).commit
30
+ self.image = image_with_dir.insert_local(
31
+ 'localPath' => cache.path,
32
+ 'outputPath' => File.dirname(output_directory)
42
33
  )
43
- container.start('Binds' => ["#{path_parent}:#{File.join('/', 'host', path_parent)}"])
44
- result = container.wait['StatusCode']
45
- raise "Got bad status code when copying build cache: #{result}" unless result.zero?
46
- self.image = container.commit
34
+ #path = File.expand_path(cache.path)
35
+ #path_parent = File.dirname(path)
36
+ #tar_flags = keep_old_files ? '-xkf' : 'xf'
37
+ #container = ::Docker::Container.create(
38
+ # 'Image' => image.id,
39
+ # 'Cmd' => ['/bin/bash', '-lc', [
40
+ # "mkdir -p #{File.dirname(output_directory)}",
41
+ # '&&',
42
+ # "tar #{tar_flags} #{File.join('/', 'host', path)} -C #{File.dirname(output_directory)}"
43
+ # ].join(' ')
44
+ # ],
45
+ # 'Volumes' => {
46
+ # File.join('/', 'host', path_parent) => { path_parent => 'rw' }
47
+ # }
48
+ #)
49
+ #container.start('Binds' => ["#{path_parent}:#{File.join('/', 'host', path_parent)}"])
50
+ #result = container.wait['StatusCode']
51
+ #raise "Got bad status code when copying build cache: #{result}" unless result.zero?
52
+ #self.image = container.commit
47
53
  debug "inserted cache into #{output_directory}"
48
54
  cache.close
49
55
  else
data/lib/dockly/cli.rb CHANGED
@@ -81,15 +81,18 @@ class Dockly::BuildCacheCommand < Dockly::AbstractCommand
81
81
  def execute
82
82
  Dockly::BuildCache.model = Dockly::BuildCache::Local
83
83
  super
84
- build_caches = Dockly.docker(docker_name.to_sym).build_cache || []
85
- raise "No build cache for #{docker_name}" if build_caches.empty?
84
+ docker = Dockly.docker(docker_name.to_sym)
85
+ build_caches = (docker && docker.build_cache) || []
86
+
87
+ puts "No build cache for #{docker_name}" if build_caches.empty?
88
+
86
89
  if list?
87
90
  build_caches.each_with_index do |build_cache, index|
88
91
  puts "#{index + 1}. Hash: #{build_cache.hash_command} Build: #{build_cache.build_command}"
89
92
  end
90
93
  else
91
94
  bcs = if local?
92
- convert_bc_to_local_bc(docker_name)
95
+ convert_bc_to_local_bc(docker)
93
96
  else
94
97
  build_caches
95
98
  end
@@ -107,9 +110,10 @@ class Dockly::Cli < Dockly::AbstractCommand
107
110
  subcommand ['build_cache', 'bc'], 'Build Cache commands', Dockly::BuildCacheCommand
108
111
  end
109
112
 
110
- def convert_bc_to_local_bc(docker_name)
113
+ def convert_bc_to_local_bc(docker)
114
+ return [] unless docker
111
115
  lbcs = []
112
- Dockly.docker(docker_name.to_sym).build_cache.each do |bc|
116
+ docker.build_cache.each do |bc|
113
117
  lbc = Dockly::BuildCache::Local.new! { name bc.name }
114
118
  bc.instance_variables.each do |variable|
115
119
  lbc.instance_variable_set(variable, bc.instance_variable_get(variable))
data/lib/dockly/deb.rb CHANGED
@@ -193,6 +193,7 @@ private
193
193
  scripts << bb.s3_docker_import(docker.s3_url, docker.name, docker.tag)
194
194
  end
195
195
  end
196
+ scripts << bb.docker_tag_latest(docker.repo, docker.tag)
196
197
  end
197
198
  scripts.join("\n")
198
199
  end
@@ -1,3 +1,3 @@
1
1
  module Dockly
2
- VERSION = '1.5.9'
2
+ VERSION = '1.5.10'
3
3
  end
@@ -0,0 +1,3 @@
1
+ <% if data[:tag] %>
2
+ docker tag <%= data[:repo] %>:<%= data[:tag] %> <%= data[:repo] %>:latest
3
+ <% end %>
@@ -74,6 +74,22 @@ describe Dockly::BashBuilder do
74
74
  end
75
75
  end
76
76
 
77
+ describe "#docker_tag_latest" do
78
+ context "when there is no tag" do
79
+ it "does not mark a tag" do
80
+ output = subject.docker_tag_latest("test_repo")
81
+ expect(output).to_not include("docker tag")
82
+ end
83
+ end
84
+
85
+ context "when there is a tag" do
86
+ it "tags the repo:tag as repo:latest" do
87
+ output = subject.docker_tag_latest("test_repo", "a_tag")
88
+ expect(output).to include("docker tag test_repo:a_tag test_repo:latest")
89
+ end
90
+ end
91
+ end
92
+
77
93
  describe "#file_docker_import" do
78
94
  let(:path) { "/opt/dockly/file.tar.gz" }
79
95
  it "cats, gunzips and passes to docker import" do
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.5.9
4
+ version: 1.5.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -278,6 +278,7 @@ files:
278
278
  - lib/foreman/cli_fix.rb
279
279
  - lib/foreman/export/base_fix.rb
280
280
  - snippets/docker_import.erb
281
+ - snippets/docker_tag_latest.erb
281
282
  - snippets/file_diff_docker_import.erb
282
283
  - snippets/file_docker_import.erb
283
284
  - snippets/get_and_install_deb.erb