service_image_builder 0.1.3 → 0.1.4

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: 900269f5179222514b60a9801fcb2185eca190de7549de06f0c3581acfed50a9
4
- data.tar.gz: '0395906fef0ff745d19954216b22ee62afe597d52b8d6a1389cab9228f006b38'
3
+ metadata.gz: 3352dd551ce1f10d6d86399cebb70eacb98371b2f058898cbaa28b24a7fe233e
4
+ data.tar.gz: eae047d41225843eb3bdf18c0374cce6dc70cbf14c0d931e2eb1b7782eca0772
5
5
  SHA512:
6
- metadata.gz: ae08276865478e406ba0982559f8dcf8d02201b03067d54476db6360ccca516408d6f01d3b2280cf968aa3b3bcfe04bdb1663c8f58f5ab8dfb6be16f06b220cb
7
- data.tar.gz: 1e505048f31b20719cf88505c1e5d49c877dd4bbf1bd171aa979d141c35a9c392b9c09e54dd08ef21f10ac7c1c7c288945216ec39907ad835d693c98a972b416
6
+ metadata.gz: 44596d167f33a4a5abadeb51135714371d55a0fff7107d63073d59f67f5029eefc3e27afdb2d0368e1ecfbe34d244410784a6f051eb098811daf1855352f8390
7
+ data.tar.gz: 7ddc2ffe7e8860fd2ba65dea262300ae1cb6b2a60756d111e930c456952f6a4901d6070461e2eb352d2839b0951470fd16f0ec5613f5864a6e9b1f9b3b1eeee0
data/.gitlab-ci.yml CHANGED
@@ -1,14 +1,37 @@
1
- image: slushsystems/ruby:latest
1
+ variables:
2
+ DOCKER_DRIVER: overlay2
3
+ DOCKER_HOST: tcp://docker:2375/
4
+ SIB_IMAGE_REPO: slushsystems/service_image_builder
2
5
 
3
- cache:
4
- paths:
5
- - vendor/
6
-
7
- before_script:
8
- - bundle install --deployment
9
-
10
- pre-flight check:
6
+ build pr:
11
7
  stage: test
8
+ image: slushsystems/ruby:latest
9
+ services:
10
+ - name: docker:dind
11
+ command: ["dockerd-entrypoint.sh", "--experimental"]
12
+ cache:
13
+ paths:
14
+ - vendor/
15
+ variables:
16
+ SIB_PUSH: "false"
17
+ except:
18
+ - master
19
+ before_script:
20
+ - bundle install --deployment
21
+ script:
22
+ - bundle exec rake
23
+ - bundle exec rubocop
24
+ - bundle exec bin/sib
25
+
26
+ build master & push:
27
+ stage: deploy
28
+ image: slushsystems/ruby:latest
29
+ services:
30
+ - name: docker:dind
31
+ command: ["dockerd-entrypoint.sh", "--experimental"]
32
+ only:
33
+ - master
34
+ before_script:
35
+ - bundle install --deployment
12
36
  script:
13
- - bundle exec rake
14
- - bundle exec rubocop
37
+ - bundle exec bin/sib
data/.rubocop.yml CHANGED
@@ -3,7 +3,8 @@ AllCops:
3
3
  - node_modules/**/*
4
4
  - service_image_builder.gemspec
5
5
  - vendor/**/*
6
- Metrics/LineLength:
6
+ NewCops: enable
7
+ Layout/LineLength:
7
8
  Max: 96
8
9
  Metrics/MethodLength:
9
10
  Max: 11
data/Gemfile.lock CHANGED
@@ -2,85 +2,92 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  service_image_builder (0.1.3)
5
- activesupport (~> 5.2)
6
- awesome_print (~> 1.8)
7
- docker-api (~> 1.34)
5
+ activesupport (~> 6.1)
6
+ awesome_print (~> 1.9)
7
+ docker-api (~> 2.1)
8
8
  logger (~> 1.4, >= 1.4.2)
9
- oj (~> 3.10)
9
+ oj (~> 3.11)
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activesupport (5.2.4.1)
14
+ activesupport (6.1.3.1)
15
15
  concurrent-ruby (~> 1.0, >= 1.0.2)
16
- i18n (>= 0.7, < 2)
17
- minitest (~> 5.1)
18
- tzinfo (~> 1.1)
19
- ast (2.4.0)
20
- awesome_print (1.8.0)
21
- byebug (11.0.1)
22
- coderay (1.1.2)
23
- concurrent-ruby (1.1.5)
24
- diff-lcs (1.3)
25
- docker-api (1.34.2)
16
+ i18n (>= 1.6, < 2)
17
+ minitest (>= 5.1)
18
+ tzinfo (~> 2.0)
19
+ zeitwerk (~> 2.3)
20
+ ast (2.4.2)
21
+ awesome_print (1.9.2)
22
+ byebug (11.1.3)
23
+ coderay (1.1.3)
24
+ concurrent-ruby (1.1.8)
25
+ diff-lcs (1.4.4)
26
+ docker-api (2.1.0)
26
27
  excon (>= 0.47.0)
27
28
  multi_json
28
- excon (0.71.1)
29
- i18n (1.7.0)
29
+ excon (0.80.1)
30
+ i18n (1.8.10)
30
31
  concurrent-ruby (~> 1.0)
31
- jaro_winkler (1.5.2)
32
- logger (1.4.2)
33
- method_source (0.9.2)
34
- minitest (5.13.0)
35
- multi_json (1.14.1)
36
- oj (3.10.0)
37
- parallel (1.17.0)
38
- parser (2.6.3.0)
39
- ast (~> 2.4.0)
40
- pry (0.12.2)
41
- coderay (~> 1.1.0)
42
- method_source (~> 0.9.0)
43
- pry-byebug (3.7.0)
32
+ logger (1.4.3)
33
+ method_source (1.0.0)
34
+ minitest (5.14.4)
35
+ multi_json (1.15.0)
36
+ oj (3.11.5)
37
+ parallel (1.20.1)
38
+ parser (3.0.1.0)
39
+ ast (~> 2.4.1)
40
+ pry (0.13.1)
41
+ coderay (~> 1.1)
42
+ method_source (~> 1.0)
43
+ pry-byebug (3.9.0)
44
44
  byebug (~> 11.0)
45
- pry (~> 0.10)
45
+ pry (~> 0.13.0)
46
46
  rainbow (3.0.0)
47
- rake (10.5.0)
48
- rspec (3.8.0)
49
- rspec-core (~> 3.8.0)
50
- rspec-expectations (~> 3.8.0)
51
- rspec-mocks (~> 3.8.0)
52
- rspec-core (3.8.0)
53
- rspec-support (~> 3.8.0)
54
- rspec-expectations (3.8.3)
47
+ rake (13.0.3)
48
+ regexp_parser (2.1.1)
49
+ rexml (3.2.5)
50
+ rspec (3.10.0)
51
+ rspec-core (~> 3.10.0)
52
+ rspec-expectations (~> 3.10.0)
53
+ rspec-mocks (~> 3.10.0)
54
+ rspec-core (3.10.1)
55
+ rspec-support (~> 3.10.0)
56
+ rspec-expectations (3.10.1)
55
57
  diff-lcs (>= 1.2.0, < 2.0)
56
- rspec-support (~> 3.8.0)
57
- rspec-mocks (3.8.0)
58
+ rspec-support (~> 3.10.0)
59
+ rspec-mocks (3.10.2)
58
60
  diff-lcs (>= 1.2.0, < 2.0)
59
- rspec-support (~> 3.8.0)
60
- rspec-support (3.8.0)
61
- rubocop (0.71.0)
62
- jaro_winkler (~> 1.5.1)
61
+ rspec-support (~> 3.10.0)
62
+ rspec-support (3.10.2)
63
+ rubocop (1.13.0)
63
64
  parallel (~> 1.10)
64
- parser (>= 2.6)
65
+ parser (>= 3.0.0.0)
65
66
  rainbow (>= 2.2.2, < 4.0)
67
+ regexp_parser (>= 1.8, < 3.0)
68
+ rexml
69
+ rubocop-ast (>= 1.2.0, < 2.0)
66
70
  ruby-progressbar (~> 1.7)
67
- unicode-display_width (>= 1.4.0, < 1.7)
68
- ruby-progressbar (1.10.1)
69
- thread_safe (0.3.6)
70
- tzinfo (1.2.6)
71
- thread_safe (~> 0.1)
72
- unicode-display_width (1.6.0)
71
+ unicode-display_width (>= 1.4.0, < 3.0)
72
+ rubocop-ast (1.4.1)
73
+ parser (>= 2.7.1.5)
74
+ ruby-progressbar (1.11.0)
75
+ tzinfo (2.0.4)
76
+ concurrent-ruby (~> 1.0)
77
+ unicode-display_width (2.0.0)
78
+ zeitwerk (2.4.2)
73
79
 
74
80
  PLATFORMS
75
81
  ruby
82
+ x86_64-darwin-20
76
83
 
77
84
  DEPENDENCIES
78
85
  bundler (~> 2)
79
- pry-byebug (~> 3.7)
80
- rake (~> 10.0)
81
- rspec (~> 3.0)
82
- rubocop (~> 0.70)
86
+ pry-byebug (~> 3.9)
87
+ rake (~> 13.0)
88
+ rspec (~> 3.10)
89
+ rubocop (~> 1.13)
83
90
  service_image_builder!
84
91
 
85
92
  BUNDLED WITH
86
- 2.0.2
93
+ 2.2.0
data/bin/sib CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require_relative '../lib/service_image_builder.rb'
4
+ require_relative '../lib/service_image_builder'
5
5
 
6
6
  # This is a sha256 sum of the ouput of `dnf list installed` which contains a
7
7
  # list of installed packages and their associated versions. A change in this
@@ -21,8 +21,22 @@ image_repo = ENV.fetch('SIB_IMAGE_REPO')
21
21
  image_upstream_tag = ENV.fetch('SIB_UPSTREAM_TAG', 'latest')
22
22
  registry_pass = ENV.fetch('SIB_REGISTRY_PASS')
23
23
  registry_user = ENV.fetch('SIB_REGISTRY_USER')
24
+ push = ENV.fetch('SIB_PUSH', true)
24
25
  squash = ENV.fetch('SIB_SQUASH', false)
25
26
 
27
+ # Convert boolean vars
28
+ # TODO put this in a configuration class
29
+ def bool!(input)
30
+ return input if input.is_a?(TrueClass) || input.is_a?(FalseClass)
31
+ return true if input == 'true'
32
+ return false if input == 'false'
33
+
34
+ raise 'Invalid boolean input'
35
+ end
36
+
37
+ push = bool!(push)
38
+ squash = bool!(squash)
39
+
26
40
  Docker.authenticate!('username' => registry_user, 'password' => registry_pass)
27
41
 
28
42
  upstream = SIB::Image.import(repo: image_repo, tag: image_upstream_tag)
@@ -41,7 +55,7 @@ build_args = {
41
55
 
42
56
  canary = SIB::Image.build(build_args)
43
57
 
44
- if upstream.nil? || (canary <=> upstream).positive?
58
+ if push && (upstream.nil? || (canary <=> upstream).positive?)
45
59
  canary.push_tag(tag: image_upstream_tag)
46
60
  canary.push_tag(tag: canary.factor_hash)
47
61
  end
@@ -5,6 +5,7 @@ module SIB
5
5
  class Error < StandardError
6
6
  def initialize(msg)
7
7
  SIB.log.error(msg)
8
+ super
8
9
  end
9
10
  end
10
11
  end
@@ -4,10 +4,13 @@ module SIB
4
4
  # SIB::ImageError is raised when an unrecoverable error occurs in Image
5
5
  # operations
6
6
  class ImageError < SIB::Error; end
7
+
7
8
  # SIB::Image represents a docker image
8
9
  class Image
9
10
  attr_accessor :image, :repo
10
11
 
12
+ # TODO: Fix
13
+ # rubocop:disable Metrics/MethodLength
11
14
  def self.build(repo:, build_dir:, dockerfile: 'Dockerfile', labels: {}, squash: false)
12
15
  build_dir ||= Dir.pwd
13
16
  build_args = {
@@ -27,6 +30,7 @@ module SIB
27
30
 
28
31
  new(repo: repo, image: image)
29
32
  end
33
+ # rubocop:enable Metrics/MethodLength
30
34
 
31
35
  def self.import(repo:, tag:)
32
36
  new(repo: repo, image: Docker::Image.create('fromImage' => "#{repo}:#{tag}"))
@@ -108,7 +112,8 @@ module SIB
108
112
  def parse_api_response(response)
109
113
  response.split("\r\n").map { |r| Oj.load(r) }
110
114
  rescue Oj::Error => e
111
- raise ImageError, "Couldn't parse api repsonse: #{e.message}"
115
+ SIB.log.error("Couldn't JSON parse api response: #{e.message}")
116
+ SIB.log.info("Unparseable message: #{response}")
112
117
  end
113
118
  end
114
119
  end
@@ -4,7 +4,7 @@
4
4
  module SIB
5
5
  # SIB::log serves as a module-level logging method
6
6
  def self.log
7
- @log ||= Logger.new(STDOUT).tap do |lager|
7
+ @log ||= Logger.new($stdout).tap do |lager|
8
8
  lager.formatter = proc do |severity, datetime, progname, msg|
9
9
  out = msg.is_a?(String) ? msg : msg.ai(multiline: false)
10
10
  "#{datetime} #{severity} #{progname}: #{out}\n"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SIB
4
- VERSION = '0.1.3'
4
+ VERSION = '0.1.4'
5
5
  end
@@ -1,5 +1,4 @@
1
-
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'service_image_builder/version'
5
4
 
@@ -23,22 +22,22 @@ registry.'
23
22
 
24
23
  # Specify which files should be added to the gem when it is released.
25
24
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
26
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
25
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
27
26
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
28
27
  end
29
28
  spec.bindir = 'bin'
30
29
  spec.executables = 'sib'
31
30
  spec.require_paths = ['lib']
32
31
 
33
- spec.add_dependency 'activesupport', '~> 5.2'
34
- spec.add_dependency 'awesome_print', '~> 1.8'
35
- spec.add_dependency 'docker-api', '~> 1.34'
32
+ spec.add_dependency 'activesupport', '~> 6.1'
33
+ spec.add_dependency 'awesome_print', '~> 1.9'
34
+ spec.add_dependency 'docker-api', '~> 2.1'
36
35
  spec.add_dependency 'logger', '~> 1.4', '>= 1.4.2'
37
- spec.add_dependency 'oj', '~> 3.10'
36
+ spec.add_dependency 'oj', '~> 3.11'
38
37
 
39
38
  spec.add_development_dependency 'bundler', '~> 2'
40
- spec.add_development_dependency 'pry-byebug', '~> 3.7'
41
- spec.add_development_dependency 'rake', '~> 10.0'
42
- spec.add_development_dependency 'rspec', '~> 3.0'
43
- spec.add_development_dependency 'rubocop', '~> 0.70'
39
+ spec.add_development_dependency 'pry-byebug', '~> 3.9'
40
+ spec.add_development_dependency 'rake', '~> 13.0'
41
+ spec.add_development_dependency 'rspec', '~> 3.10'
42
+ spec.add_development_dependency 'rubocop', '~> 1.13'
44
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: service_image_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Jacobs
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-31 00:00:00.000000000 Z
11
+ date: 2021-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.2'
19
+ version: '6.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '5.2'
26
+ version: '6.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: awesome_print
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.8'
33
+ version: '1.9'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.8'
40
+ version: '1.9'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: docker-api
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.34'
47
+ version: '2.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.34'
54
+ version: '2.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: logger
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -78,14 +78,14 @@ dependencies:
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '3.10'
81
+ version: '3.11'
82
82
  type: :runtime
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '3.10'
88
+ version: '3.11'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: bundler
91
91
  requirement: !ruby/object:Gem::Requirement
@@ -106,56 +106,56 @@ dependencies:
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '3.7'
109
+ version: '3.9'
110
110
  type: :development
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '3.7'
116
+ version: '3.9'
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: rake
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '10.0'
123
+ version: '13.0'
124
124
  type: :development
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '10.0'
130
+ version: '13.0'
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: rspec
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: '3.0'
137
+ version: '3.10'
138
138
  type: :development
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: '3.0'
144
+ version: '3.10'
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: rubocop
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '0.70'
151
+ version: '1.13'
152
152
  type: :development
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: '0.70'
158
+ version: '1.13'
159
159
  description: |-
160
160
  This is a Slush Systems tool for building service images. Slush Systems
161
161
  creates continuously updated and deployed infrastructure and tooling
@@ -195,7 +195,7 @@ metadata:
195
195
  homepage_uri: https://slush.systems/
196
196
  source_code_uri: https://gitlab.com/slush-systems/service_image_builder
197
197
  changelog_uri: https://gitlab.com/slush-systems/service_image_builder/commits/master
198
- post_install_message:
198
+ post_install_message:
199
199
  rdoc_options: []
200
200
  require_paths:
201
201
  - lib
@@ -210,8 +210,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
210
  - !ruby/object:Gem::Version
211
211
  version: '0'
212
212
  requirements: []
213
- rubygems_version: 3.0.3
214
- signing_key:
213
+ rubygems_version: 3.1.4
214
+ signing_key:
215
215
  specification_version: 4
216
216
  summary: A tool for building and deploying Slush Systems Service Images
217
217
  test_files: []