fpm-fry 0.7.1 → 0.7.2.1
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 +12 -2
- data/lib/fpm/fry/docker_file.rb +1 -1
- metadata +3 -79
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4775633d070116e35a3bdfb7bdb0359d8af49b29b08f9b68e862b5dfd6a0a91d
|
4
|
+
data.tar.gz: b6b317af4559f1deeca752e42a96c9973885e1014caa0fd5fac22d6653644617
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c05ab42fc6a12903c1987313a07cdb27b7fcbd46bf3b995f20745a7da7c358b1e00ffde004eeebdcf99a4ebe05069fb6f45e9c77b7d0a2de9c19874e9f70a86d
|
7
|
+
data.tar.gz: af93127bbfc24a0bf3de4250523e86004ec49548b4517e2f55b2ddb3bb30639f669889e2ee8b83bd58a8b21d2ff314b290c60c380be3962ef69882b6752c69c0
|
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')
|
@@ -284,7 +292,7 @@ module FPM; module Fry
|
|
284
292
|
logger: logger,
|
285
293
|
client: client,
|
286
294
|
keep_modified_files: builder.keep_modified_files,
|
287
|
-
verbose: verbose
|
295
|
+
verbose: verbose?,
|
288
296
|
)
|
289
297
|
builder.recipe.apply_input(input)
|
290
298
|
begin
|
@@ -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.1
|
4
|
+
version: 0.7.2.1
|
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
|
@@ -43,82 +43,6 @@ dependencies:
|
|
43
43
|
- - "~>"
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '1.13'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: rake
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
requirements:
|
50
|
-
- - "~>"
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '12.0'
|
53
|
-
type: :development
|
54
|
-
prerelease: false
|
55
|
-
version_requirements: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - "~>"
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '12.0'
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: rspec
|
62
|
-
requirement: !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - "~>"
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '3.0'
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: 3.0.0
|
70
|
-
type: :development
|
71
|
-
prerelease: false
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - "~>"
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '3.0'
|
77
|
-
- - ">="
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
version: 3.0.0
|
80
|
-
- !ruby/object:Gem::Dependency
|
81
|
-
name: webmock
|
82
|
-
requirement: !ruby/object:Gem::Requirement
|
83
|
-
requirements:
|
84
|
-
- - "~>"
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: '3.0'
|
87
|
-
type: :development
|
88
|
-
prerelease: false
|
89
|
-
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
requirements:
|
91
|
-
- - "~>"
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '3.0'
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: coveralls
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
requirements:
|
98
|
-
- - ">="
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
version: 0.8.23
|
101
|
-
type: :development
|
102
|
-
prerelease: false
|
103
|
-
version_requirements: !ruby/object:Gem::Requirement
|
104
|
-
requirements:
|
105
|
-
- - ">="
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
version: 0.8.23
|
108
|
-
- !ruby/object:Gem::Dependency
|
109
|
-
name: simplecov
|
110
|
-
requirement: !ruby/object:Gem::Requirement
|
111
|
-
requirements:
|
112
|
-
- - ">="
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
version: '0'
|
115
|
-
type: :development
|
116
|
-
prerelease: false
|
117
|
-
version_requirements: !ruby/object:Gem::Requirement
|
118
|
-
requirements:
|
119
|
-
- - ">="
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
version: '0'
|
122
46
|
description: deep-fried package builder
|
123
47
|
email: dennis.konert@new-work.se
|
124
48
|
executables:
|
@@ -197,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
197
121
|
- !ruby/object:Gem::Version
|
198
122
|
version: '0'
|
199
123
|
requirements: []
|
200
|
-
rubygems_version: 3.4.
|
124
|
+
rubygems_version: 3.4.19
|
201
125
|
signing_key:
|
202
126
|
specification_version: 4
|
203
127
|
summary: FPM Fry
|