rbld 1.3.4 → 1.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cli/lib/data/version +1 -1
- data/cli/lib/rbld_dockerops.rb +3 -7
- data/cli/lib/rbld_engine.rb +31 -10
- data/cli/lib/rbld_fileops.rb +22 -1
- data/cli/lib/rbld_reg_docker.rb +2 -5
- data/cli/lib/rbld_utils.rb +30 -0
- metadata +42 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc3bf06f427b26d18323c5f232e31579479b0907
|
4
|
+
data.tar.gz: fdc5b95543ea855690230682759a139175a26aed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 969921f5c1152e067706ff5d75e002164d7e65546cd33339c5596b5ec8c3018bee3944966ef490306603840b8284e39e113884dcc9e541dcf5f648b5e98487ec
|
7
|
+
data.tar.gz: ed3610e8ffe3e6b98effd0589047db91121bd2bbe365bbb1f2ca9e9b16ff368cdec1df0928d4c9e5f90fe34af0e9f94293538629eb72e0b2690f12cf413ad3d5
|
data/cli/lib/data/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.5
|
data/cli/lib/rbld_dockerops.rb
CHANGED
@@ -100,13 +100,9 @@ module Rebuild
|
|
100
100
|
end
|
101
101
|
|
102
102
|
def process_log(log_item)
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
else
|
107
|
-
trace_progress( json['progress'] )
|
108
|
-
save_last_error( json['errorDetail'] )
|
109
|
-
end
|
103
|
+
json = Rebuild::Utils::SafeJSONParser.new( log_item )
|
104
|
+
trace_progress( json['progress'] )
|
105
|
+
save_last_error( json['errorDetail'] )
|
110
106
|
end
|
111
107
|
|
112
108
|
def trace_progress(line)
|
data/cli/lib/rbld_engine.rb
CHANGED
@@ -25,7 +25,8 @@ module Rebuild::Engine
|
|
25
25
|
@name, @api_obj = name, api_obj
|
26
26
|
end
|
27
27
|
|
28
|
-
def remove!
|
28
|
+
def remove!(with_containers = false)
|
29
|
+
remove_containers if with_containers
|
29
30
|
@api_obj.remove( name: @name.to_s )
|
30
31
|
end
|
31
32
|
|
@@ -37,6 +38,17 @@ module Rebuild::Engine
|
|
37
38
|
def identity
|
38
39
|
@name.to_s
|
39
40
|
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def remove_containers
|
45
|
+
Docker::Container.all( opts = { all:true } ).each do |c|
|
46
|
+
if c.info['ImageID'] == @api_obj.info['id']
|
47
|
+
rbld_log.info("Removing dangling container #{c.info['id']}")
|
48
|
+
c.delete( force: true )
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
40
52
|
end
|
41
53
|
|
42
54
|
class NamedDockerContainer
|
@@ -459,11 +471,17 @@ module Rebuild::Engine
|
|
459
471
|
end
|
460
472
|
|
461
473
|
def load!(filename)
|
462
|
-
EnvironmentFile.new( filename ).load!
|
474
|
+
if name = EnvironmentFile.new( filename ).load!
|
475
|
+
# In case a modified environment was overriden,
|
476
|
+
# drop modifications as well
|
477
|
+
rbld_log.info( "Loaded environment #{name}, running checkout")
|
478
|
+
checkout!( name ) if @cache.get( name )
|
479
|
+
end
|
480
|
+
|
463
481
|
# If image with the same name but another
|
464
482
|
# ID existed before load it becomes dangling
|
465
483
|
# and should be ditched
|
466
|
-
@cache.dangling.each(
|
484
|
+
@cache.dangling.each { |img| remove_docker_img_if_unused( img ) }
|
467
485
|
@cache.refresh!
|
468
486
|
end
|
469
487
|
|
@@ -557,7 +575,7 @@ module Rebuild::Engine
|
|
557
575
|
|
558
576
|
names = NameFactory.new( new_name )
|
559
577
|
env.modification_container.flatten( names.identity )
|
560
|
-
env.rerun_img.remove! if env.rerun_img
|
578
|
+
env.rerun_img.remove!( true ) if env.rerun_img
|
561
579
|
else
|
562
580
|
raise NoChangesToCommit, env_name.full
|
563
581
|
end
|
@@ -592,11 +610,8 @@ module Rebuild::Engine
|
|
592
610
|
opts = { t: NameFactory.new(env_name).identity,
|
593
611
|
rm: true }
|
594
612
|
new_img = Docker::Image.build_from_tar( tar, opts ) do |v|
|
595
|
-
|
596
|
-
|
597
|
-
rbld_print.raw_trace( log["stream"] )
|
598
|
-
end
|
599
|
-
rescue
|
613
|
+
Rebuild::Utils::SafeJSONParser.new( v ).get( 'stream' ) do |s|
|
614
|
+
rbld_print.raw_trace( s )
|
600
615
|
end
|
601
616
|
end
|
602
617
|
end
|
@@ -639,7 +654,7 @@ module Rebuild::Engine
|
|
639
654
|
rescue => msg
|
640
655
|
rbld_log.fatal( msg )
|
641
656
|
raise InaccessibleDockerService
|
642
|
-
|
657
|
+
end
|
643
658
|
|
644
659
|
def registry
|
645
660
|
return @registry if @registry
|
@@ -759,5 +774,11 @@ module Rebuild::Engine
|
|
759
774
|
def nonexisting_env(name)
|
760
775
|
raise EnvironmentAlreadyExists, name.full if @cache.get(name)
|
761
776
|
end
|
777
|
+
|
778
|
+
def remove_docker_img_if_unused(image)
|
779
|
+
image.remove
|
780
|
+
rescue Docker::Error::ConflictError => e
|
781
|
+
rbld_log.info( "Unable to delete dangling image after load: #{e}" )
|
782
|
+
end
|
762
783
|
end
|
763
784
|
end
|
data/cli/lib/rbld_fileops.rb
CHANGED
@@ -15,7 +15,28 @@ module Rebuild::Engine
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def load!
|
18
|
-
|
18
|
+
loaded_name = nil
|
19
|
+
|
20
|
+
with_gzip_reader do |gz|
|
21
|
+
Docker::Image.load(gz) do |response|
|
22
|
+
Rebuild::Utils::SafeJSONParser.new( response ).get( 'stream' ) do |s|
|
23
|
+
response = s
|
24
|
+
end
|
25
|
+
|
26
|
+
if m = response.match( /Loaded image: (.*)$/ )
|
27
|
+
loaded_name = m.captures[0]
|
28
|
+
elsif m = response.match( /The image (.*) already exists/ )
|
29
|
+
loaded_name = m.captures[0]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
if loaded_name
|
35
|
+
env = Environment.from_image( loaded_name, nil )
|
36
|
+
return Rebuild::Utils::EnvNameHolder.new( env.name, env.tag )
|
37
|
+
else
|
38
|
+
return nil
|
39
|
+
end
|
19
40
|
|
20
41
|
rescue => msg
|
21
42
|
rbld_print.trace( msg )
|
data/cli/lib/rbld_reg_docker.rb
CHANGED
@@ -69,11 +69,8 @@ module Rebuild
|
|
69
69
|
private
|
70
70
|
|
71
71
|
def trace_progress(log_item)
|
72
|
-
|
73
|
-
|
74
|
-
rbld_print.inplace_trace( line ) if line
|
75
|
-
rescue
|
76
|
-
end
|
72
|
+
line = Rebuild::Utils::SafeJSONParser.new( log_item )['progress']
|
73
|
+
rbld_print.inplace_trace( line ) if line
|
77
74
|
end
|
78
75
|
|
79
76
|
def parse_entry(internal_name)
|
data/cli/lib/rbld_utils.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'delegate'
|
2
2
|
require 'ruby-progressbar'
|
3
|
+
require 'json'
|
3
4
|
|
4
5
|
module Rebuild
|
5
6
|
module Utils
|
@@ -37,6 +38,19 @@ module Rebuild
|
|
37
38
|
alias_method :name, :repo
|
38
39
|
end
|
39
40
|
|
41
|
+
class EnvNameHolder
|
42
|
+
def initialize(name, tag)
|
43
|
+
@name, @tag = name, tag
|
44
|
+
@full = "#{name}:#{tag}"
|
45
|
+
end
|
46
|
+
|
47
|
+
def to_s
|
48
|
+
@full
|
49
|
+
end
|
50
|
+
|
51
|
+
attr_reader :name, :tag, :full
|
52
|
+
end
|
53
|
+
|
40
54
|
module Errors
|
41
55
|
def rebuild_errors(definitions)
|
42
56
|
definitions.each_pair do |name, msg_fmt|
|
@@ -108,5 +122,21 @@ module Rebuild
|
|
108
122
|
end
|
109
123
|
end
|
110
124
|
|
125
|
+
class SafeJSONParser
|
126
|
+
def initialize(string)
|
127
|
+
@json = JSON.parse( string )
|
128
|
+
rescue
|
129
|
+
end
|
130
|
+
|
131
|
+
def [](key)
|
132
|
+
get( key )
|
133
|
+
end
|
134
|
+
|
135
|
+
def get(key)
|
136
|
+
key = ( @json && @json.has_key?( key ) ) ? @json[key] : nil
|
137
|
+
yield key if key && block_given?
|
138
|
+
key
|
139
|
+
end
|
140
|
+
end
|
111
141
|
end
|
112
142
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbld
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Fleytman
|
8
8
|
autorequire:
|
9
9
|
bindir: cli/bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -207,25 +207,39 @@ dependencies:
|
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: 1.0.2
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
210
|
+
name: json
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
213
|
- - "~>"
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version: '
|
215
|
+
version: '2.1'
|
216
216
|
- - ">="
|
217
217
|
- !ruby/object:Gem::Version
|
218
|
-
version:
|
218
|
+
version: 2.1.0
|
219
219
|
type: :runtime
|
220
220
|
prerelease: false
|
221
221
|
version_requirements: !ruby/object:Gem::Requirement
|
222
222
|
requirements:
|
223
223
|
- - "~>"
|
224
224
|
- !ruby/object:Gem::Version
|
225
|
-
version: '
|
225
|
+
version: '2.1'
|
226
|
+
- - ">="
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: 2.1.0
|
229
|
+
- !ruby/object:Gem::Dependency
|
230
|
+
name: rake
|
231
|
+
requirement: !ruby/object:Gem::Requirement
|
232
|
+
requirements:
|
233
|
+
- - ">="
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
version: '0'
|
236
|
+
type: :runtime
|
237
|
+
prerelease: false
|
238
|
+
version_requirements: !ruby/object:Gem::Requirement
|
239
|
+
requirements:
|
226
240
|
- - ">="
|
227
241
|
- !ruby/object:Gem::Version
|
228
|
-
version:
|
242
|
+
version: '0'
|
229
243
|
- !ruby/object:Gem::Dependency
|
230
244
|
name: travis
|
231
245
|
requirement: !ruby/object:Gem::Requirement
|
@@ -386,6 +400,26 @@ dependencies:
|
|
386
400
|
- - ">="
|
387
401
|
- !ruby/object:Gem::Version
|
388
402
|
version: 0.1.9
|
403
|
+
- !ruby/object:Gem::Dependency
|
404
|
+
name: license_finder
|
405
|
+
requirement: !ruby/object:Gem::Requirement
|
406
|
+
requirements:
|
407
|
+
- - "~>"
|
408
|
+
- !ruby/object:Gem::Version
|
409
|
+
version: '3.0'
|
410
|
+
- - ">="
|
411
|
+
- !ruby/object:Gem::Version
|
412
|
+
version: 3.0.0
|
413
|
+
type: :development
|
414
|
+
prerelease: false
|
415
|
+
version_requirements: !ruby/object:Gem::Requirement
|
416
|
+
requirements:
|
417
|
+
- - "~>"
|
418
|
+
- !ruby/object:Gem::Version
|
419
|
+
version: '3.0'
|
420
|
+
- - ">="
|
421
|
+
- !ruby/object:Gem::Version
|
422
|
+
version: 3.0.0
|
389
423
|
description: Zero-dependency, reproducible build environments
|
390
424
|
email: rbld-devel@rbld.io
|
391
425
|
executables:
|
@@ -452,5 +486,5 @@ rubyforge_project:
|
|
452
486
|
rubygems_version: 2.6.11
|
453
487
|
signing_key:
|
454
488
|
specification_version: 4
|
455
|
-
summary: rbld-1.3.
|
489
|
+
summary: rbld-1.3.5
|
456
490
|
test_files: []
|