class Gitlab::QA::Scenario::Test::Omnibus::UpdateFromPrevious
def perform(release, current_version, semver_component, from_edition = nil, *rspec_args)
-
(void)
-
Parameters:
-
*rspec_args
(Array
) -- rspec arguments -
from_edition
(String
) -- gitlab edition to update from -
semver_component
(String
) -- semver component for N - 1 version detection, major|minor|patch -
current_version
(String
) -- current gitlab version associated with docker image -
release
(String
) -- current release docker image
def perform(release, current_version, semver_component, from_edition = nil, *rspec_args) # When from_edition isn't actually passed but RSpec args arg passed with `-- rspec_args...`, # from_edition is wrongly set to `--`, so we fix that here. if from_edition == "--" rspec_args.prepend('--') from_edition = nil end @current_release = QA::Release.new(release) @upgrade_path = Support::GitlabUpgradePath.new( current_version, semver_component, from_edition || @current_release.edition ).fetch upgrade_info = "#{[*upgrade_path, current_release].join(' => ')} (#{current_version})".bright Runtime::Logger.info("Performing gitlab update: #{upgrade_info}") update(rspec_args) end
def run_gitlab(release, volumes, rspec_args = [], skip_setup: false)
-
(void)
-
Parameters:
-
volumes
(Hash
) -- -
release
(Gitlab::QA::Release
) --
def run_gitlab(release, volumes, rspec_args = [], skip_setup: false) Runtime::Logger.info("Deploying release: #{release.to_s.bright}") Component::Gitlab.perform do |gitlab| gitlab.release = release gitlab.volumes = volumes gitlab.network = 'test' if skip_setup gitlab.skip_server_hooks = true gitlab.seed_db = false gitlab.seed_admin_token = false end next gitlab.launch_and_teardown_instance unless run_specs?(release) gitlab.instance { run_specs(gitlab, release, rspec_args) } end end
def run_specs(gitlab, release, rspec_args)
-
(void)
-
Parameters:
-
rspec_args
(Array
) -- -
release
(Gitlab::QA::Release
) -- -
gitlab
(Gitlab::QA::Component::Gitlab
) --
def run_specs(gitlab, release, rspec_args) Component::Specs.perform do |specs| specs.release = release specs.suite = 'Test::Instance::All' specs.hostname = "qa-e2e-specs.#{gitlab.network}" specs.network = gitlab.network specs.args = [gitlab.address, *rspec_args] # do not generate reports for non release runs specs.env = { 'QA_GENERATE_ALLURE_REPORT' => false } unless release == current_release end rescue Support::ShellCommand::StatusError => e raise e if release == current_release # only fail on current release Runtime::Logger.warn("Test run for release '#{gitlab.release}' finished with errors!") end
def run_specs?(release)
-
(Boolean)
-
Parameters:
-
release
(Gitlab::QA::Release
) --
def run_specs?(release) [upgrade_path.first, current_release].any?(release) end
def update(rspec_args)
-
(void)
-
Parameters:
-
rspec_args
(Array
) --
def update(rspec_args) Docker::Volumes.new.with_temporary_volumes do |volumes| # deploy first release in upgrade path and run specs to populate db run_gitlab(upgrade_path.first, volumes, ["--", "--tag", "smoke"]) # deploy releases in upgrade path upgrade_path[1..].each { |release| run_gitlab(release, volumes, skip_setup: true) } # deploy current release and run tests run_gitlab(current_release, volumes, rspec_args, skip_setup: true) end end