fpm-fry 0.7.1 → 0.7.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/fpm/fry/client.rb +37 -4
- data/lib/fpm/fry/command/cook.rb +11 -1
- data/lib/fpm/fry/docker_file.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ca47ad3fd38c121f59b67bbf3e90f598824306731f2a81cd01d7cb0bf051d37
|
4
|
+
data.tar.gz: 0af9052af2ee47c734bd96a5b110e7039f7e1b1703a9c8a3cca9da592c22dab9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b3a4415764e58773095b4c72c0708e3cb4e72e157b3a379380c2a171996eb70cc63f7d81398b6af11542154adaddb892c19bbf4714d09cd993cf3aec5bc0b5b1
|
7
|
+
data.tar.gz: 4bbd41fef90429ca8fdcf360ad66c60859d83afdbb58835fa86442cd5e294b4ff51b4f9804f24add0ba3991f3aaa2f083c4305945b519b53ca84c170ecf5531a
|
data/lib/fpm/fry/client.rb
CHANGED
@@ -18,6 +18,10 @@ class FPM::Fry::Client
|
|
18
18
|
include FPM::Fry::WithData
|
19
19
|
end
|
20
20
|
|
21
|
+
class ContainerCreationFailed < StandardError
|
22
|
+
include FPM::Fry::WithData
|
23
|
+
end
|
24
|
+
|
21
25
|
# Raised when trying to read file that can't be read e.g. because it's a
|
22
26
|
# directory.
|
23
27
|
class NotAFile < StandardError
|
@@ -183,7 +187,28 @@ class FPM::Fry::Client
|
|
183
187
|
end
|
184
188
|
|
185
189
|
def pull(image)
|
186
|
-
|
190
|
+
last_status = ""
|
191
|
+
streamer = lambda do |chunk, remaining_bytes, total_bytes|
|
192
|
+
chunk.each_line do |line|
|
193
|
+
begin
|
194
|
+
msg = JSON.parse(line)
|
195
|
+
status, progress, id = *msg.values_at("status", "progress", "id")
|
196
|
+
id += ": " if id
|
197
|
+
status += " " if progress
|
198
|
+
move_up_one_line = $stdout.tty? && status =~ /Downloading|Extracting/ && last_status =~ /Downloading|Extracting/
|
199
|
+
last_status = status
|
200
|
+
cursor_move = move_up_one_line ? "\e[1A" : ""
|
201
|
+
puts [cursor_move, id, status, progress].join("")
|
202
|
+
rescue JSON::ParserError => e
|
203
|
+
$stderr.puts "Could not parse JSON response from docker: #{e}"
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
agent.post(path: url('images','create'), query: {'fromImage' => image}, :response_block => streamer)
|
208
|
+
end
|
209
|
+
|
210
|
+
def delete(image)
|
211
|
+
agent.delete(path: url('images',image), expects: [200, 404])
|
187
212
|
end
|
188
213
|
|
189
214
|
def create(image)
|
@@ -191,11 +216,19 @@ class FPM::Fry::Client
|
|
191
216
|
res = agent.post(
|
192
217
|
headers: { 'Content-Type' => 'application/json' },
|
193
218
|
path: url,
|
194
|
-
body: JSON.generate('Image' => image)
|
219
|
+
body: JSON.generate('Image' => image),
|
195
220
|
)
|
196
|
-
|
221
|
+
data = JSON.parse(res.body)
|
222
|
+
if res.status != 201
|
223
|
+
@logger.error(data["message"])
|
224
|
+
if res.status == 404
|
225
|
+
@logger.info("execute docker pull #{image} first or specify --pull argument for fpm-fry")
|
226
|
+
end
|
227
|
+
raise ContainerCreationFailed.new("could not create container from #{image}", message: data["message"])
|
228
|
+
end
|
229
|
+
data['Id']
|
197
230
|
rescue Excon::Error => e
|
198
|
-
@logger.error("could not create
|
231
|
+
@logger.error("could not create container from #{image}, url: #{url}, error: #{e}")
|
199
232
|
raise
|
200
233
|
end
|
201
234
|
|
data/lib/fpm/fry/command/cook.rb
CHANGED
@@ -4,8 +4,9 @@ module FPM; module Fry
|
|
4
4
|
|
5
5
|
option '--keep', :flag, 'Keep the container after build'
|
6
6
|
option '--overwrite', :flag, 'Overwrite package', default: true
|
7
|
-
option '--verbose', :
|
7
|
+
option '--verbose', :flag, 'Verbose output', default: false
|
8
8
|
option '--platform', 'PLATFORM', default: nil
|
9
|
+
option '--pull', :flag, 'Pull base image', default: false
|
9
10
|
|
10
11
|
UPDATE_VALUES = ['auto','never','always']
|
11
12
|
option '--update',"<#{UPDATE_VALUES.join('|')}>", 'Update image before installing packages ( only apt currently )', attribute_name: 'update', default: 'auto' do |value|
|
@@ -203,6 +204,13 @@ module FPM; module Fry
|
|
203
204
|
end
|
204
205
|
end
|
205
206
|
|
207
|
+
def pull_base_image!
|
208
|
+
client.pull(image)
|
209
|
+
rescue Excon::Error
|
210
|
+
logger.error "could not pull base image #{image}"
|
211
|
+
raise
|
212
|
+
end
|
213
|
+
|
206
214
|
def build!
|
207
215
|
body = begin
|
208
216
|
url = client.url('containers','create')
|
@@ -407,6 +415,8 @@ module FPM; module Fry
|
|
407
415
|
public
|
408
416
|
|
409
417
|
def execute
|
418
|
+
pull_base_image! if pull?
|
419
|
+
|
410
420
|
# force some eager loading
|
411
421
|
lint_recipe_file!
|
412
422
|
builder
|
data/lib/fpm/fry/docker_file.rb
CHANGED
@@ -140,7 +140,7 @@ module FPM; module Fry
|
|
140
140
|
if options[:update]
|
141
141
|
update = 'apt-get update && '
|
142
142
|
end
|
143
|
-
df[:dependencies] << "
|
143
|
+
df[:dependencies] << "ARG DEBIAN_FRONTEND=noninteractive"
|
144
144
|
df[:dependencies] << "RUN #{update}apt-get install --yes #{Shellwords.join(build_dependencies)}"
|
145
145
|
when 'redhat'
|
146
146
|
df[:dependencies] << "RUN yum -y install #{Shellwords.join(build_dependencies)}"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fpm-fry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maxime Lagresle
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date:
|
16
|
+
date: 2024-02-09 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: excon
|
@@ -197,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
197
|
- !ruby/object:Gem::Version
|
198
198
|
version: '0'
|
199
199
|
requirements: []
|
200
|
-
rubygems_version: 3.4.
|
200
|
+
rubygems_version: 3.4.19
|
201
201
|
signing_key:
|
202
202
|
specification_version: 4
|
203
203
|
summary: FPM Fry
|