Docker error when validating report schema
What does this MR do and why?
Small docker documentation and schema version change. The default instructions for docker ruby:3-slim do not work as given. I had to use the full Ruby to validate my report schema.
Screenshots or screen recordings
When running docker run -it --rm -v $(pwd):/ci ruby:3-slim ruby /ci/validate.rb /ci/container-scanning-format_15-0-6.json /ci/gl-container-scanning-report.json
an error is generated;
/usr/local/lib/ruby/3.2.0/bundler/installer/parallel_installer.rb:190:in `handle_error': Gem::Ext::BuildError: ERROR: Failed to build gem native extension. (Bundler::InstallError)
current directory: /usr/local/bundle/gems/unf_ext-0.0.8.2/ext/unf_ext
/usr/local/bin/ruby extconf.rb
checking for -lstdc++... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/bin/$(RUBY_BASE_NAME)
--with-static-libstdc++
--without-static-libstdc++
--with-stdc++-dir
--without-stdc++-dir
--with-stdc++-include
--without-stdc++-include=${stdc++-dir}/include
--with-stdc++-lib
--without-stdc++-lib=${stdc++-dir}/lib
--with-stdc++lib
--without-stdc++lib
/usr/local/lib/ruby/3.2.0/mkmf.rb:490:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /usr/local/lib/ruby/3.2.0/mkmf.rb:583:in `try_link0'
from /usr/local/lib/ruby/3.2.0/mkmf.rb:601:in `try_link'
from /usr/local/lib/ruby/3.2.0/mkmf.rb:819:in `try_func'
from /usr/local/lib/ruby/3.2.0/mkmf.rb:1062:in `block in have_library'
from /usr/local/lib/ruby/3.2.0/mkmf.rb:989:in `block in checking_for'
from /usr/local/lib/ruby/3.2.0/mkmf.rb:354:in `block (2 levels) in postpone'
from /usr/local/lib/ruby/3.2.0/mkmf.rb:324:in `open'
from /usr/local/lib/ruby/3.2.0/mkmf.rb:354:in `block in postpone'
from /usr/local/lib/ruby/3.2.0/mkmf.rb:324:in `open'
from /usr/local/lib/ruby/3.2.0/mkmf.rb:350:in `postpone'
from /usr/local/lib/ruby/3.2.0/mkmf.rb:988:in `checking_for'
from /usr/local/lib/ruby/3.2.0/mkmf.rb:1057:in `have_library'
from extconf.rb:6:in `<main>'
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/usr/local/bundle/extensions/x86_64-linux/3.2.0/unf_ext-0.0.8.2/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in /usr/local/bundle/gems/unf_ext-0.0.8.2 for inspection.
Results logged to /usr/local/bundle/extensions/x86_64-linux/3.2.0/unf_ext-0.0.8.2/gem_make.out
/usr/local/lib/ruby/3.2.0/rubygems/ext/builder.rb:119:in `run'
/usr/local/lib/ruby/3.2.0/rubygems/ext/ext_conf_builder.rb:27:in `build'
/usr/local/lib/ruby/3.2.0/rubygems/ext/builder.rb:187:in `build_extension'
/usr/local/lib/ruby/3.2.0/rubygems/ext/builder.rb:221:in `block in build_extensions'
/usr/local/lib/ruby/3.2.0/rubygems/ext/builder.rb:218:in `each'
/usr/local/lib/ruby/3.2.0/rubygems/ext/builder.rb:218:in `build_extensions'
/usr/local/lib/ruby/3.2.0/rubygems/installer.rb:843:in `build_extensions'
/usr/local/lib/ruby/3.2.0/bundler/rubygems_gem_installer.rb:72:in `build_extensions'
/usr/local/lib/ruby/3.2.0/bundler/rubygems_gem_installer.rb:28:in `install'
/usr/local/lib/ruby/3.2.0/bundler/source/rubygems.rb:200:in `install'
/usr/local/lib/ruby/3.2.0/bundler/installer/gem_installer.rb:54:in `install'
/usr/local/lib/ruby/3.2.0/bundler/installer/gem_installer.rb:16:in `install_from_spec'
/usr/local/lib/ruby/3.2.0/bundler/installer/parallel_installer.rb:156:in `do_install'
/usr/local/lib/ruby/3.2.0/bundler/installer/parallel_installer.rb:147:in `block in worker_pool'
/usr/local/lib/ruby/3.2.0/bundler/worker.rb:62:in `apply_func'
/usr/local/lib/ruby/3.2.0/bundler/worker.rb:57:in `block in process_queue'
/usr/local/lib/ruby/3.2.0/bundler/worker.rb:54:in `loop'
/usr/local/lib/ruby/3.2.0/bundler/worker.rb:54:in `process_queue'
/usr/local/lib/ruby/3.2.0/bundler/worker.rb:90:in `block (2 levels) in create_threads'
An error occurred while installing unf_ext (0.0.8.2), and Bundler cannot continue.
In Gemfile:
json_schemer was resolved to 1.0.3, which depends on
simpleidn was resolved to 0.2.1, which depends on
unf was resolved to 0.1.4, which depends on
unf_ext
from /usr/local/lib/ruby/3.2.0/bundler/installer/parallel_installer.rb:96:in `call'
from /usr/local/lib/ruby/3.2.0/bundler/installer/parallel_installer.rb:67:in `call'
from /usr/local/lib/ruby/3.2.0/bundler/installer.rb:244:in `install_in_parallel'
from /usr/local/lib/ruby/3.2.0/bundler/installer.rb:201:in `install'
from /usr/local/lib/ruby/3.2.0/bundler/installer.rb:89:in `block in run'
from /usr/local/lib/ruby/3.2.0/bundler/process_lock.rb:12:in `block in lock'
from /usr/local/lib/ruby/3.2.0/bundler/process_lock.rb:9:in `open'
from /usr/local/lib/ruby/3.2.0/bundler/process_lock.rb:9:in `lock'
from /usr/local/lib/ruby/3.2.0/bundler/installer.rb:71:in `run'
from /usr/local/lib/ruby/3.2.0/bundler/installer.rb:23:in `install'
from /usr/local/lib/ruby/3.2.0/bundler/inline.rb:58:in `block (3 levels) in gemfile'
from /usr/local/lib/ruby/3.2.0/bundler/settings.rb:131:in `temporary'
from /usr/local/lib/ruby/3.2.0/bundler/inline.rb:57:in `block (2 levels) in gemfile'
from /usr/local/lib/ruby/3.2.0/bundler/settings.rb:131:in `temporary'
from /usr/local/lib/ruby/3.2.0/bundler/inline.rb:51:in `block in gemfile'
from /usr/local/lib/ruby/3.2.0/bundler.rb:419:in `block in with_unbundled_env'
from /usr/local/lib/ruby/3.2.0/bundler.rb:665:in `with_env'
from /usr/local/lib/ruby/3.2.0/bundler.rb:419:in `with_unbundled_env'
from /usr/local/lib/ruby/3.2.0/bundler/inline.rb:42:in `gemfile'
from /ci/validate.rb:3:in `<main>'
To fix it, I updated the schema version to 15.0.6
from 14.0.6
and used a full Ruby image docker run -it --rm -v $(pwd):/ci ruby:3 ruby /ci/validate.rb /ci/container-scanning-format_15-0-6.json /ci/gl-container-scanning-report.json
Before | After |
---|---|
How to set up and validate locally
Numbered steps to set up and validate the change are strongly suggested.
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.