diff options
| author | mo khan <mo.khan@gmail.com> | 2020-07-06 11:03:35 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-07-10 08:53:37 -0600 |
| commit | 36cdb0040abda394264455a1fdf3d6782af95ceb (patch) | |
| tree | 54093c956c0f4dcf4c2ad352847017aee9a88edc /config | |
| parent | c7385965b4166fb6ab2db3387c67cd54aef1b8df (diff) | |
Isolate license_management ruby from project
* Target ruby version 2.7.1
* Add spec to fetch gems from a custom source
* Add proxy to rubygems.org config
* Specify default env vars to support offline environment
* Cleanup custom certificates after spec
* Inline docker-test script
* Do not install license_finder with each installed ruby
* Increase gem log verbosity and include backtrace
* Extract test fixtures for the different ruby scenarios
* Find *.gemspec files in gems dir
* Use RUBYLIB to hijack src path
* Run scan from project path dir
Diffstat (limited to 'config')
| -rw-r--r-- | config/.gemrc | 4 | ||||
| -rw-r--r-- | config/files/.asdfrc (renamed from config/.asdfrc) | 0 | ||||
| -rw-r--r-- | config/files/.bashrc (renamed from config/.bashrc) | 7 | ||||
| -rw-r--r-- | config/files/.config/NuGet/NuGet.Config (renamed from config/.config/NuGet/NuGet.Config) | 0 | ||||
| -rw-r--r-- | config/files/.config/virtualenv/virtualenv.ini (renamed from config/.config/virtualenv/virtualenv.ini) | 0 | ||||
| -rw-r--r-- | config/files/.curlrc (renamed from config/.curlrc) | 0 | ||||
| -rw-r--r-- | config/files/.default-gems (renamed from config/.default-gems) | 1 | ||||
| -rw-r--r-- | config/files/.default-npm-packages (renamed from config/.default-npm-packages) | 0 | ||||
| -rw-r--r-- | config/files/.default-python-packages (renamed from config/.default-python-packages) | 0 | ||||
| -rw-r--r-- | config/files/.env.12-10-stable (renamed from config/.env.12-10-stable) | 0 | ||||
| -rw-r--r-- | config/files/.env.12-2-stable (renamed from config/.env.12-2-stable) | 0 | ||||
| -rw-r--r-- | config/files/.env.12-3-stable (renamed from config/.env.12-3-stable) | 0 | ||||
| -rw-r--r-- | config/files/.env.12-4-stable (renamed from config/.env.12-4-stable) | 0 | ||||
| -rw-r--r-- | config/files/.env.12-5-stable (renamed from config/.env.12-5-stable) | 0 | ||||
| -rw-r--r-- | config/files/.env.12-6-stable (renamed from config/.env.12-6-stable) | 0 | ||||
| -rw-r--r-- | config/files/.env.12-7-stable (renamed from config/.env.12-7-stable) | 0 | ||||
| -rw-r--r-- | config/files/.env.12-8-stable (renamed from config/.env.12-8-stable) | 0 | ||||
| -rw-r--r-- | config/files/.env.12-9-stable (renamed from config/.env.12-9-stable) | 0 | ||||
| -rw-r--r-- | config/files/.env.13-0-stable (renamed from config/.env.13-0-stable) | 0 | ||||
| -rw-r--r-- | config/files/.env.legacy (renamed from config/.env.legacy) | 0 | ||||
| -rw-r--r-- | config/files/.gemrc | 4 | ||||
| -rw-r--r-- | config/files/.gradle/init.gradle (renamed from config/.gradle/init.gradle) | 0 | ||||
| -rw-r--r-- | config/files/.m2/settings.xml (renamed from config/.m2/settings.xml) | 0 | ||||
| -rw-r--r-- | config/files/.npmrc (renamed from config/.npmrc) | 0 | ||||
| -rw-r--r-- | config/files/.profile (renamed from config/.profile) | 2 | ||||
| -rw-r--r-- | config/files/.tool-versions (renamed from config/.tool-versions) | 0 | ||||
| -rw-r--r-- | config/install.sh | 24 | ||||
| -rw-r--r-- | config/projects/license_management.rb | 17 | ||||
| -rwxr-xr-x | config/scripts/license_management/postinst | 14 | ||||
| -rwxr-xr-x | config/scripts/license_management/postrm | 6 | ||||
| -rwxr-xr-x | config/scripts/license_management/preinst | 3 | ||||
| -rwxr-xr-x | config/scripts/license_management/prerm | 11 | ||||
| -rw-r--r-- | config/software/license_management.rb | 34 | ||||
| -rw-r--r-- | config/software/ruby.rb | 73 |
34 files changed, 182 insertions, 18 deletions
diff --git a/config/.gemrc b/config/.gemrc deleted file mode 100644 index ff5fcc7..0000000 --- a/config/.gemrc +++ /dev/null @@ -1,4 +0,0 @@ -:verbose: true -:sources: -- https://rubygems.org/ -gem: --no-document diff --git a/config/.asdfrc b/config/files/.asdfrc index e600bd0..e600bd0 100644 --- a/config/.asdfrc +++ b/config/files/.asdfrc diff --git a/config/.bashrc b/config/files/.bashrc index 3e45713..81afcb8 100644 --- a/config/.bashrc +++ b/config/files/.bashrc @@ -1,8 +1,13 @@ #!/bin/bash +export ASDF_DATA_DIR="/opt/asdf" +export PATH="${ASDF_DATA_DIR}/shims:${ASDF_DATA_DIR}/bin:/opt/gitlab/.local/bin:${PATH}" +export HOME="/opt/gitlab" + alias nuget='mono /usr/local/bin/nuget.exe' set -o vi + function inflate() { local file=$1 local to_dir=$2 @@ -35,7 +40,7 @@ function switch_to() { local tool=$1 local major_version=$2 local version - version="$(grep "$tool" "$HOME/.tool-versions"| tr ' ' '\n' | grep "^$major_version")" + version="$(grep "$tool" "/opt/gitlab/.tool-versions"| tr ' ' '\n' | grep "^$major_version")" switch_to_exact "$tool" "$version" } diff --git a/config/.config/NuGet/NuGet.Config b/config/files/.config/NuGet/NuGet.Config index 449478c..449478c 100644 --- a/config/.config/NuGet/NuGet.Config +++ b/config/files/.config/NuGet/NuGet.Config diff --git a/config/.config/virtualenv/virtualenv.ini b/config/files/.config/virtualenv/virtualenv.ini index 208c7bf..208c7bf 100644 --- a/config/.config/virtualenv/virtualenv.ini +++ b/config/files/.config/virtualenv/virtualenv.ini diff --git a/config/.curlrc b/config/files/.curlrc index df02a54..df02a54 100644 --- a/config/.curlrc +++ b/config/files/.curlrc diff --git a/config/.default-gems b/config/files/.default-gems index 87e0d78..f832f6e 100644 --- a/config/.default-gems +++ b/config/files/.default-gems @@ -1,3 +1,2 @@ bundler ~>1.7 bundler ~>2.0 -license_finder ~>6.6.0 diff --git a/config/.default-npm-packages b/config/files/.default-npm-packages index 8e16e61..8e16e61 100644 --- a/config/.default-npm-packages +++ b/config/files/.default-npm-packages diff --git a/config/.default-python-packages b/config/files/.default-python-packages index ddf6574..ddf6574 100644 --- a/config/.default-python-packages +++ b/config/files/.default-python-packages diff --git a/config/.env.12-10-stable b/config/files/.env.12-10-stable index da5a244..da5a244 100644 --- a/config/.env.12-10-stable +++ b/config/files/.env.12-10-stable diff --git a/config/.env.12-2-stable b/config/files/.env.12-2-stable index 808b2ac..808b2ac 100644 --- a/config/.env.12-2-stable +++ b/config/files/.env.12-2-stable diff --git a/config/.env.12-3-stable b/config/files/.env.12-3-stable index 808b2ac..808b2ac 100644 --- a/config/.env.12-3-stable +++ b/config/files/.env.12-3-stable diff --git a/config/.env.12-4-stable b/config/files/.env.12-4-stable index 86a9c8f..86a9c8f 100644 --- a/config/.env.12-4-stable +++ b/config/files/.env.12-4-stable diff --git a/config/.env.12-5-stable b/config/files/.env.12-5-stable index da5a244..da5a244 100644 --- a/config/.env.12-5-stable +++ b/config/files/.env.12-5-stable diff --git a/config/.env.12-6-stable b/config/files/.env.12-6-stable index da5a244..da5a244 100644 --- a/config/.env.12-6-stable +++ b/config/files/.env.12-6-stable diff --git a/config/.env.12-7-stable b/config/files/.env.12-7-stable index da5a244..da5a244 100644 --- a/config/.env.12-7-stable +++ b/config/files/.env.12-7-stable diff --git a/config/.env.12-8-stable b/config/files/.env.12-8-stable index da5a244..da5a244 100644 --- a/config/.env.12-8-stable +++ b/config/files/.env.12-8-stable diff --git a/config/.env.12-9-stable b/config/files/.env.12-9-stable index da5a244..da5a244 100644 --- a/config/.env.12-9-stable +++ b/config/files/.env.12-9-stable diff --git a/config/.env.13-0-stable b/config/files/.env.13-0-stable index da5a244..da5a244 100644 --- a/config/.env.13-0-stable +++ b/config/files/.env.13-0-stable diff --git a/config/.env.legacy b/config/files/.env.legacy index 7181ab8..7181ab8 100644 --- a/config/.env.legacy +++ b/config/files/.env.legacy diff --git a/config/files/.gemrc b/config/files/.gemrc new file mode 100644 index 0000000..8bfd7f0 --- /dev/null +++ b/config/files/.gemrc @@ -0,0 +1,4 @@ +backtrace: true +benchmark: false +gem: --no-ri --no-rdoc --no-document --suggestions +verbose: true diff --git a/config/.gradle/init.gradle b/config/files/.gradle/init.gradle index b8cc7f1..b8cc7f1 100644 --- a/config/.gradle/init.gradle +++ b/config/files/.gradle/init.gradle diff --git a/config/.m2/settings.xml b/config/files/.m2/settings.xml index 9a89d90..9a89d90 100644 --- a/config/.m2/settings.xml +++ b/config/files/.m2/settings.xml diff --git a/config/.npmrc b/config/files/.npmrc index 426026b..426026b 100644 --- a/config/.npmrc +++ b/config/files/.npmrc diff --git a/config/.profile b/config/files/.profile index 320c173..f7638e6 100644 --- a/config/.profile +++ b/config/files/.profile @@ -1,3 +1,3 @@ #!/bin/sh # shellcheck source=/dev/null -. "$HOME/.bashrc" +. "/opt/gitlab/.bashrc" diff --git a/config/.tool-versions b/config/files/.tool-versions index 852c2d4..852c2d4 100644 --- a/config/.tool-versions +++ b/config/files/.tool-versions diff --git a/config/install.sh b/config/install.sh index a93451b..0de9b1c 100644 --- a/config/install.sh +++ b/config/install.sh @@ -81,10 +81,14 @@ wget -q -O /etc/apt/sources.list.d/microsoft-prod.list https://packages.microsof apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/debian stable-buster main" | tee /etc/apt/sources.list.d/mono-official-stable.list -curl -o /usr/local/bin/nuget.exe https://dist.nuget.org/win-x86-commandline/latest/nuget.exe & +curl -o /usr/local/bin/nuget.exe https://dist.nuget.org/win-x86-commandline/latest/nuget.exe echo -e "section_end:$(date +%s):install_dotnet\r\e[0K" echo -e "section_start:$(date +%s):install_asdf\r\e[0K==> Installing asdf…" +dpkg --install "$(find /opt/toolcache/ -name "license-management*.deb")" +rm -fr /root +ln -s /opt/gitlab /root + mkdir -p "$ASDF_DATA_DIR" git clone https://github.com/asdf-vm/asdf.git "$ASDF_DATA_DIR" cd "$ASDF_DATA_DIR" @@ -96,7 +100,7 @@ git checkout "$(git describe --abbrev=0 --tags)" while IFS= read -r line; do tool=$(echo "$line" | cut -d' ' -f1) asdf plugin-add "$tool" -done < "$HOME/.tool-versions" +done < "/opt/gitlab/.tool-versions" bash "$ASDF_DATA_DIR/plugins/nodejs/bin/import-release-team-keyring" asdf install asdf reshim @@ -104,7 +108,7 @@ asdf current for version in $(asdf list python); do asdf shell python "$version" - pip download -d "$HOME/.config/virtualenv/app-data" pip-licenses pip setuptools wheel + pip download -d "/opt/gitlab/.config/virtualenv/app-data" pip-licenses pip setuptools wheel done wait echo -e "section_end:$(date +%s):install_asdf\r\e[0K" @@ -127,11 +131,11 @@ rm -fr "$ASDF_DATA_DIR/docs" \ "$ASDF_DATA_DIR"/installs/ruby/**/lib/ruby/gems/**/cache \ "$ASDF_DATA_DIR"/installs/**/**/share \ "$ASDF_DATA_DIR"/test \ - "$HOME"/.config/configstore/update-notifier-npm.json \ - "$HOME"/.config/pip/selfcheck.json \ - "$HOME"/.gem \ - "$HOME"/.npm \ - "$HOME"/.wget-hsts \ + /opt/gitlab/.config/configstore/update-notifier-npm.json \ + /opt/gitlab/.config/pip/selfcheck.json \ + /opt/gitlab/.gem \ + /opt/gitlab/.npm \ + /opt/gitlab/.wget-hsts \ /etc/apache2/* \ /etc/bash_completion.d/* \ /etc/calendar/* \ @@ -186,7 +190,5 @@ wait rm -fr \ /opt/asdf/ \ /usr/lib/gcc \ - /usr/lib/mono \ - /usr/lib/rustlib \ - /usr/share/dotnet + /usr/lib/rustlib echo -e "section_end:$(date +%s):compress_files\r\e[0K" diff --git a/config/projects/license_management.rb b/config/projects/license_management.rb new file mode 100644 index 0000000..c34a680 --- /dev/null +++ b/config/projects/license_management.rb @@ -0,0 +1,17 @@ +require_relative '../../lib/license/management/version.rb' +name "license-management" +maintainer "mkhan@gitlab.com" +homepage "https://gitlab.com/gitlab-org/security-products/license-management" +license_file "LICENSE" + +install_dir "#{default_root}/gitlab" +build_version License::Management::VERSION +build_iteration 1 + +dependency "license_management" +package_scripts_path Pathname.pwd.join("config/scripts/license_management") + +package :deb do + compression_level 9 + compression_type :xz +end diff --git a/config/scripts/license_management/postinst b/config/scripts/license_management/postinst new file mode 100755 index 0000000..da63d3b --- /dev/null +++ b/config/scripts/license_management/postinst @@ -0,0 +1,14 @@ +#!/bin/sh + +PROGNAME=$(basename "$0") + +error_exit() +{ + echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2 + exit 1 +} + +ln -s /opt/gitlab/bin/license_management /usr/local/bin/license_management +echo "Thank you for installing license_management!" + +exit 0 diff --git a/config/scripts/license_management/postrm b/config/scripts/license_management/postrm new file mode 100755 index 0000000..5b47b27 --- /dev/null +++ b/config/scripts/license_management/postrm @@ -0,0 +1,6 @@ +#!/bin/sh + +rm -f /usr/local/bin/license_management +echo "license_management has been uninstalled!" + +exit 0 diff --git a/config/scripts/license_management/preinst b/config/scripts/license_management/preinst new file mode 100755 index 0000000..dcef0c4 --- /dev/null +++ b/config/scripts/license_management/preinst @@ -0,0 +1,3 @@ +#!/bin/sh + +echo "You're about to install license_management!" diff --git a/config/scripts/license_management/prerm b/config/scripts/license_management/prerm new file mode 100755 index 0000000..ef80795 --- /dev/null +++ b/config/scripts/license_management/prerm @@ -0,0 +1,11 @@ +#!/bin/sh + +PROGNAME=$(basename "$0") + +error_exit() +{ + echo "${PROGNAME}: ${1:-"Unknown Error"}" 1>&2 + exit 1 +} + +exit 0 diff --git a/config/software/license_management.rb b/config/software/license_management.rb new file mode 100644 index 0000000..be19ddb --- /dev/null +++ b/config/software/license_management.rb @@ -0,0 +1,34 @@ +require_relative '../../lib/license/management/version.rb' +name "license_management" + +default_version License::Management::VERSION +source({ + path: Dir.pwd, + options: { + exclude: %w[bin coverage pkg spec tmp vendor .git .gitlab] + } +}) + +dependency "ruby" + +build do + touch "#{install_dir}/bin/.keep" + touch "#{install_dir}/.local/bin/.keep" + + gem "build #{project_dir}/license-management.gemspec -o #{project_dir}/release.gem" + gem "install -f #{project_dir}/release.gem --no-document" + delete "#{project_dir}/release.gem" + command "cp #{install_dir}/embedded/bin/license_management #{install_dir}/bin/license_management" + + command "cp -r #{project_dir}/config/files/. #{install_dir}/" + command "mvn license:license-list" + command "mvn dependency:get -Dartifact=gradle.plugin.com.hierynomus.gradle.plugins:license-gradle-plugin:0.15.0 -DremoteRepositories=https://plugins.gradle.org/m2" + command "mvn dependency:get -Dartifact=org.codehaus.plexus:plexus-utils:2.0.6" + copy "#{Dir.home}/.m2/repository/", "#{install_dir}/.m2/repository/" +end + +build do + delete "#{install_dir}/embedded/lib/ruby/gems/**/cache" + delete "#{install_dir}/embedded/lib/ruby/gems/**/doc" + delete "#{install_dir}/embedded/lib/ruby/gems/**/build_info" +end diff --git a/config/software/ruby.rb b/config/software/ruby.rb new file mode 100644 index 0000000..56a04fc --- /dev/null +++ b/config/software/ruby.rb @@ -0,0 +1,73 @@ +require 'fileutils' + +name "ruby" + +license "BSD-2-Clause" +license_file "BSDL" +license_file "COPYING" +license_file "LEGAL" +skip_transitive_dependency_licensing true + +default_version "2.7.1" + +dependency "libffi" +dependency "libyaml" +dependency "openssl" +dependency "zlib" + +source url: "https://cache.ruby-lang.org/pub/ruby/#{version.match(/^(\d+\.\d+)/)[0]}/ruby-#{version}.tar.gz", sha256: "d418483bdd0000576c1370571121a6eb24582116db0b7bb2005e90e250eae418" + +relative_path "ruby-#{version}" +embedded_dir = "#{install_dir}/embedded" + +build do + env = with_standard_compiler_flags(with_embedded_path) + configure_command = [ + "--disable-debug-env", + "--disable-dtrace", + "--disable-install-capi", + "--disable-install-doc", + "--disable-install-rdoc", + "--disable-jit-support", + "--enable-shared", + "--prefix=#{embedded_dir}", + "--with-out-ext=dbm,readline,rdoc,win32,win32ole,sdbm", + "--without-gdbm", + "--without-gmp", + "--without-jemalloc", + "--without-tk", + "--without-valgrind" + ] + configure(*configure_command, env: env) + make "-j #{workers}", env: env + make "-j #{workers} install", env: env +end + +build do + command "#{embedded_dir}/bin/gem install bundler -v'~> 2.0' --no-document" + command "#{embedded_dir}/bin/gem install bundler -v'~> 1.0' --no-document" +end + +build do + %w[benchmark pstore rss test-unit webrick minitest].each do |gem_name| + delete "#{embedded_dir}/lib/ruby/gems/**/gems/#{gem_name}*" + delete "#{embedded_dir}/lib/ruby/**/#{gem_name}*" + end + + delete "#{embedded_dir}/bin/*rac*" + delete "#{embedded_dir}/bin/erb" + delete "#{embedded_dir}/bin/irb" + delete "#{embedded_dir}/bin/rake" + delete "#{embedded_dir}/bin/rdoc" + delete "#{embedded_dir}/bin/ri" + delete "#{embedded_dir}/bin/thor" + delete "#{embedded_dir}/lib/ruby/gems/**/cache" + delete "#{embedded_dir}/lib/ruby/gems/**/doc" + delete "#{embedded_dir}/lib/ruby/gems/**/gems/**/.github" + delete "#{embedded_dir}/lib/ruby/gems/**/gems/**/.gitignore" + delete "#{embedded_dir}/lib/ruby/gems/**/gems/**/.travis.yml" + delete "#{embedded_dir}/lib/ruby/gems/**/gems/**/bundler/man" + delete "#{embedded_dir}/lib/ruby/gems/**/gems/**/man" + delete "#{embedded_dir}/lib/ruby/gems/**/gems/**/test" + delete "#{embedded_dir}/share" +end |
