dockly 2.6.0 → 2.7.0

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.
data/lib/dockly/docker.rb CHANGED
@@ -168,10 +168,19 @@ class Dockly::Docker
168
168
  end
169
169
 
170
170
  def import_base(docker_tar)
171
- info "importing the docker image from #{docker_tar}"
172
- image = ::Docker::Image.import(docker_tar)
173
- info "imported initial docker image: #{image.id}"
174
- image
171
+ repo = "#{name}-base"
172
+ tag = "dockly-#{Dockly::VERSION}-#{File.basename(docker_tar).split('.').first}"
173
+ info "looking for imported base image with tag: #{tag}"
174
+ image = Docker::Image.all.find { |img| img.info['RepoTags'].include?("#{repo}:#{tag}") }
175
+ if image
176
+ info "found imported base image: #{image.id}"
177
+ image
178
+ else
179
+ info "could not find image with tag #{tag}, importing the docker image from #{docker_tar}"
180
+ image = ::Docker::Image.import(docker_tar, 'repo' => repo, 'tag' => tag)
181
+ info "imported initial docker image: #{image.id}"
182
+ image
183
+ end
175
184
  end
176
185
 
177
186
  def add_build_env(image)
@@ -8,7 +8,7 @@ module Dockly::History
8
8
  TAG_PREFIX = 'dockly-'
9
9
 
10
10
  def push_content_tag!
11
- fail 'An SSH agent must be running to push the tag' if ENV['SSH_AGENT_PID'].nil?
11
+ fail 'An SSH agent must be running to push the tag' if ENV['SSH_AUTH_SOCK'].nil?
12
12
  refs = ["refs/tags/#{content_tag}"]
13
13
  repo.remotes.each do |remote|
14
14
  username = remote.url.split('@').first
@@ -78,11 +78,10 @@ namespace :dockly do
78
78
  end
79
79
  end
80
80
 
81
- deb inst.name => [
82
- 'dockly:load',
83
- "dockly:deb:prepare:#{inst.name}",
84
- "dockly:deb:upload:#{inst.name}"
85
- ]
81
+ deb inst.name => 'dockly:load' do |name|
82
+ inst.build
83
+ end
84
+
86
85
  prepare_targets << "dockly:deb:prepare:#{inst.name}"
87
86
  upload_targets << "dockly:deb:upload:#{inst.name}"
88
87
  copy_targets << "dockly:deb:copy:#{inst.name}"
@@ -110,11 +109,10 @@ namespace :dockly do
110
109
  end
111
110
  end
112
111
 
113
- rpm inst.name => [
114
- 'dockly:load',
115
- "dockly:rpm:prepare:#{inst.name}",
116
- "dockly:rpm:upload:#{inst.name}"
117
- ]
112
+ rpm inst.name => 'dockly:load' do |name|
113
+ inst.build
114
+ end
115
+
118
116
  prepare_targets << "dockly:rpm:prepare:#{inst.name}"
119
117
  upload_targets << "dockly:rpm:upload:#{inst.name}"
120
118
  copy_targets << "dockly:rpm:copy:#{inst.name}"
@@ -137,7 +135,7 @@ namespace :dockly do
137
135
  end
138
136
 
139
137
  namespace :upload do
140
- task inst.name => 'dockly:load' do
138
+ docker inst.name => 'dockly:load' do
141
139
  Thread.current[:rake_task] = inst.name
142
140
  inst.export_only
143
141
  end
@@ -150,11 +148,10 @@ namespace :dockly do
150
148
  end
151
149
  end
152
150
 
153
- docker inst.name => [
154
- 'dockly:load',
155
- "dockly:docker:prepare:#{inst.name}",
156
- "dockly:docker:upload:#{inst.name}"
157
- ]
151
+ docker inst.name => 'dockly:load' do
152
+ Thread.current[:rake_task] = inst.name
153
+ inst.generate!
154
+ end
158
155
 
159
156
  # Docker image will be generated by 'dockly:deb:package'
160
157
  unless inst.s3_bucket.nil?
@@ -1,3 +1,3 @@
1
1
  module Dockly
2
- VERSION = '2.6.0'
2
+ VERSION = '2.7.0'
3
3
  end
@@ -85,6 +85,10 @@ describe Dockly::Docker do
85
85
  end
86
86
  end
87
87
  images << subject.import_base(subject.ensure_tar(docker_file))
88
+ expect(Docker::Image.all).to be_any do |image|
89
+ image.info['RepoTags']
90
+ .include?("my-app-base:dockly-#{Dockly::VERSION}-docker-export-ubuntu-latest")
91
+ end
88
92
  expect(images.last).to_not be_nil
89
93
  expect(images.last.id).to_not be_nil
90
94
 
@@ -97,6 +101,15 @@ describe Dockly::Docker do
97
101
  subject.export_image(images.last)
98
102
  expect(File.exist?('build/docker/test_docker-image.tgz')).to be_true
99
103
  end
104
+
105
+ context 'when the image has already been imported' do
106
+ before { images << subject.import_base(docker_file) }
107
+
108
+ it 'does not reimport the image' do
109
+ expect(Docker::Image).to_not receive(:import)
110
+ subject.import_base(docker_file)
111
+ end
112
+ end
100
113
  end
101
114
 
102
115
  describe '#fetch_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: 2.6.0
4
+ version: 2.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-06-22 00:00:00.000000000 Z
12
+ date: 2015-07-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: clamp