lib/gitlab/qa/component/license_ops.rb (41 lines of code) (raw):

# frozen_string_literal: true module Gitlab module QA module Component class LicenseOps < Base LicenseError = Class.new(StandardError) require 'shellwords' def add_license(gitlab) license_key = fetch_license_key command = build_license_command(license_key) apply_license(gitlab, command, license_key) end private def fetch_license_key license_key = ENV.fetch('EE_LICENSE', '') raise LicenseError, "EE_LICENSE environment variable is not set or is empty" if license_key.empty? Shellwords.shellwords(license_key).join end def build_license_command(license_key) script = <<~RUBY key = ENV['EE_LICENSE'] license = License.new(data: key) if license.save puts "License applied successfully" else STDERR.puts "Failed to apply license" end RUBY "EE_LICENSE='#{license_key}' gitlab-rails runner $'#{script.gsub("'", "\\\\'").gsub("\n", '\\n')}'" end def apply_license(gitlab, command, license_key) result = gitlab.docker.exec(gitlab.name, command, mask_secrets: license_key) verify_license_application(result) end def verify_license_application(result) return if result.include?("License applied successfully") raise LicenseError, "Failed to apply license." end end end end end