blubber 0.1.8 → 0.1.9

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 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