blubber 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2517350f75864848e423e31bb1dcd2da032a554c64965fc1b475440179e701ac
4
- data.tar.gz: 892b7d17789623ebd122a13e69616efb4c5d85b93672811971b61c9da6842960
3
+ metadata.gz: 2484c94b32da5b9915155e5e79cabbbdb1e7b13cf0d6b4be56819e97faa673d4
4
+ data.tar.gz: 76f0b0b06e6d4e72274969f4e44c468f09edda884e90b7ee31b6e5f03fc6ffa8
5
5
  SHA512:
6
- metadata.gz: 89d8f8ad7e407a23c1e3e97cb9cbb5ff87135479b574c467904f968c4222b2d43f3b2b8e2727be7224401ce62a03ea5d2be4ba246e3ad855eece45d18c08b896
7
- data.tar.gz: 96935b945fc1aad084a9617043b72abbf799416ca1e098ccdee9e446c783f8e5f85e2135cbc80c9a18d9b48c8ef8ae142425b0af78ee70f9fb59066afd81cfdd
6
+ metadata.gz: 74148c5d3fc3c3206235a162ad9501d14ff96149b2166769fa9b8d3780006c9a2dd1f7358a9b5eb100d59bb1caf6da7c78c9d8ef2e3e2a5913666f9bdc5b512e
7
+ data.tar.gz: 9d82634efd869b5457062e11277aa14b49b1df4053e5806c957e709aa1b8c8a4ba942e87cb37be0d1da2747b21b59a7661a5e14e2a564f29c4cb17e001492bd3
@@ -43,11 +43,6 @@ module Blubber
43
43
  end
44
44
 
45
45
  def build(layer)
46
- # NOTICE : Speed up build for fresh slave
47
- tagger.tags.each do |tag|
48
- runner.run("docker pull #{Tagger.docker_registry}/#{layer}:#{tag}")
49
- end
50
-
51
46
  status = nil
52
47
  Dir.chdir(layer) do
53
48
  status = runner.run('docker build .') do |stdout, _, _|
data/lib/blubber/cli.rb CHANGED
@@ -6,7 +6,7 @@ module Blubber
6
6
  class Cli < Thor
7
7
  desc 'build', 'Builds all found Docker images'
8
8
  def build
9
- Flow.build
9
+ exit(Flow.build) # Fails to build if any layer fails
10
10
  end
11
11
  end
12
12
  end
data/lib/blubber/flow.rb CHANGED
@@ -7,7 +7,9 @@ require 'blubber/tagger'
7
7
  module Blubber
8
8
  class Flow
9
9
  def self.build(layers = nil)
10
- layers ||= Dir['**/*/Dockerfile'].map { |d| File.dirname(d) }
10
+ layers ||= changed_layers
11
+
12
+ puts "Building layers: #{layers.join(', ')}"
11
13
 
12
14
  images = layers.map { |layer| Flow.new(layer: layer).run }
13
15
 
@@ -25,6 +27,25 @@ module Blubber
25
27
  images.all? { |image| image[:success] }
26
28
  end
27
29
 
30
+ def self.changed_layers
31
+ @changed_layers ||= begin
32
+ if ENV['GIT_PREVIOUS_SUCCESSFUL_COMMIT'] != '' && ENV['BUILD_ALL'] != 'true'
33
+ commit = ENV['GIT_COMMIT'] || `git rev-parse HEAD`.strip
34
+ changes = `git diff --name-only #{ENV['GIT_PREVIOUS_SUCCESSFUL_COMMIT']}..#{commit}`.split("\n")
35
+ paths = []
36
+ changes.each do |path|
37
+ dirs = File.dirname(path).split(File::SEPARATOR)
38
+ dirs.map.with_index { |_, i| dirs[0..i].join(File::SEPARATOR) }.reverse.each do |dir|
39
+ paths << dir if File.exist?(File.join(dir, 'Dockerfile'))
40
+ end
41
+ end
42
+ paths
43
+ else
44
+ Dir['**/*/Dockerfile'].map { |d| File.dirname(d) }.sort
45
+ end
46
+ end
47
+ end
48
+
28
49
  def initialize(layer:)
29
50
  @layer = layer
30
51
  end
@@ -43,6 +64,7 @@ module Blubber
43
64
  attr_reader :layer
44
65
 
45
66
  def logger
67
+ STDOUT.sync = true
46
68
  @logger ||= Logger.new(STDOUT).tap do |logger|
47
69
  logger.progname = layer
48
70
  logger.formatter = proc do |severity, datetime, progname, msg|
@@ -23,13 +23,16 @@ module Blubber
23
23
  end
24
24
 
25
25
  def project
26
- "#{Tagger.docker_registry}/#{layer}"
26
+ [
27
+ Tagger.docker_registry,
28
+ *layer.split('/').select { |p| p[/[a-z0-9]+/] }
29
+ ].join('/')
27
30
  end
28
31
 
29
32
  def tags
30
33
  @tags ||= begin
31
34
  tags = []
32
- tags << "#{commit}#{dirty? ? '-dirty' : ''}"
35
+ tags << commit
33
36
 
34
37
  unless dirty?
35
38
  tags << branch_name.gsub(/[^\w.-]/, '_') unless branch_name.empty?
@@ -38,7 +41,7 @@ module Blubber
38
41
 
39
42
  tags << File.read("#{layer}/Dockerfile").scan(/LABEL version=([\w][\w.-]*)/)
40
43
 
41
- tags.flatten
44
+ tags.flatten.map { |t| "#{t}#{dirty? ? '-dirty' : ''}" }
42
45
  end
43
46
  end
44
47
 
@@ -1,3 +1,3 @@
1
1
  module Blubber
2
- VERSION = '0.1.8'.freeze
2
+ VERSION = '0.1.9'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blubber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikko Kokkonen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-16 00:00:00.000000000 Z
11
+ date: 2018-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline