build-labels 0.0.82 → 0.0.84

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trivy-runner.rb +9 -4
  3. data/lib/version.rb +1 -1
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f07b75a01ca8a9ba33efeab300c5fe83a04cf08548191ce1a80886802e18fdeb
4
- data.tar.gz: 54a10a7de0eafb37faf74906c181c2ea9cba257e89ed4882688ba25e5794fe6b
3
+ metadata.gz: 71200ab2745bc6b72e3713bd05be3dfc01335ace3d0e69a812b0543cabb2dcb5
4
+ data.tar.gz: 114e09c1f436d4d213b1b70598677f85a2c78960f0c518a5acbb8a479135c5b3
5
5
  SHA512:
6
- metadata.gz: 92aa39e035a072c5dbbfc6fce2fd67e6852dc6d9c94828307ae98bc5e0008d70ee73ebd48f391ade26800c0c926cf9bc66ec73a82bd2a0a8e1f173ece2f3427f
7
- data.tar.gz: 5c7c36fd8dead4a7e9a1fae8f0edb4ad59e2656d7cbe0cc1487747220d370b28d870da15bd96ad04df71f016a6a532d1d254951754ba1fb7fefbf157f51aa8a9
6
+ metadata.gz: c92119e261e7d30b83efd45dd59947c5da00b5af72f7dd7ff864c98328e73c5530160e0707677382807fe07d21c4a8bf91b5f1f844adbc2b7cfb9749f08275b0
7
+ data.tar.gz: 6b335e9538786713aed349357ed2a4bb7491785454f9e6817f49377291670b128b4e326e28f52a89f475afa3a5246420a7160e8625c1f4dcd56dfc29c3d9e90a
data/lib/trivy-runner.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'json'
2
2
  require 'open3'
3
3
  require 'optparse'
4
+ require 'shellwords'
4
5
  require 'yaml'
5
6
  require_relative 'version'
6
7
 
@@ -10,12 +11,14 @@ class TrivyRunner
10
11
  def run(args)
11
12
  file = 'bake.yml'
12
13
  metadata_file = nil
14
+ tty = true
13
15
  parser = OptionParser.new do |options|
14
16
  options.banner = 'Usage: trivy-runner -f BAKE_FILE --metadata-file FILE [TARGET/GROUP ...] [-- TRIVY_OPTIONS ...]'
15
17
  options.separator 'Options after -- are forwarded to trivy image.'
16
18
  options.on('-f', '--file FILE', 'Bake or Compose file (default: bake.yml)') { file = _1 }
17
19
  options.on('--metadata-file FILE', 'Buildx metadata from the local build') { metadata_file = _1 }
18
20
  options.on('--image-src SOURCE', %w[docker], 'Image source (default: docker)')
21
+ options.on('--[no-]tty', 'Enable terminal output and Trivy table colors (default: enabled)') { tty = _1 }
19
22
  options.on('-v', '--version', 'Print version') { puts BuildLabels::Builder::VERSION; return 0 }
20
23
  options.on('-h', '--help', 'Print help') { puts options; return 0 }
21
24
  end
@@ -31,10 +34,12 @@ class TrivyRunner
31
34
  return 0 if images.empty?
32
35
 
33
36
  verify_images(images)
34
- images.values.uniq.each do |image_id|
35
- return 1 unless scan(image_id, trivy_args)
37
+ images.group_by { |_, image_id| image_id }.each do |image_id, entries|
38
+ warn "\n\e[36m=== Trivy scan: #{entries.map(&:first).join(', ')} ===\nImage ID: #{image_id}\e[0m"
39
+ return 1 unless scan(image_id, trivy_args, tty)
36
40
  end
37
41
  verify_images(images)
42
+ warn "\e[32mTrivy checks passed.#{trivy_args.empty? ? '' : " Options: #{trivy_args.shelljoin}"}\e[0m"
38
43
  0
39
44
  rescue StandardError => error
40
45
  warn error.message
@@ -43,10 +48,10 @@ class TrivyRunner
43
48
 
44
49
  private
45
50
 
46
- def scan(image_id, trivy_args)
51
+ def scan(image_id, trivy_args, tty)
47
52
  environment = ENV.keys.grep(/\ATRIVY_/) - %w[TRIVY_IMAGE]
48
53
  cache_dir = ENV.fetch('TRIVY_CACHE_DIR', '/root/.cache/trivy')
49
- system('docker', 'run', '--rm', '--pull', 'always',
54
+ system('docker', 'run', '--rm', '--pull', 'always', *(tty ? ['--tty'] : []),
50
55
  '--mount', 'type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock,readonly',
51
56
  '--mount', "type=volume,src=trivy-cache,dst=#{cache_dir}",
52
57
  *environment.flat_map { ['--env', _1] }, ENV.fetch('TRIVY_IMAGE', 'aquasec/trivy'),
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module BuildLabels
2
2
  class Builder
3
- VERSION = '0.0.82'
3
+ VERSION = '0.0.84'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: build-labels
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.82
4
+ version: 0.0.84
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom B