rbld 1.3.4 → 1.3.5
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/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: []
|