diff options
Diffstat (limited to 'qa/qa/specs/features/sanity/version_spec.rb')
-rw-r--r-- | qa/qa/specs/features/sanity/version_spec.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/qa/qa/specs/features/sanity/version_spec.rb b/qa/qa/specs/features/sanity/version_spec.rb new file mode 100644 index 00000000000..cace46c3590 --- /dev/null +++ b/qa/qa/specs/features/sanity/version_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'airborne' + +module QA + # This test ensures that the version described by the `DEPLOY_VERSION` + # environment variable is the version actually running. + # + # See https://gitlab.com/gitlab-com/gl-infra/delivery/-/issues/1179 + RSpec.describe 'Version sanity check', :smoke do + let(:api_client) { Runtime::API::Client.new(:gitlab) } + let(:request) { Runtime::API::Request.new(api_client, '/version') } + + it 'is the specified version' do + # The `DEPLOY_VERSION` variable will only be provided for deploys to the + # `pre` and `release` environments, which only receive packaged releases. + # + # For these releases, `deploy_version` will be a package string (e.g., + # `13.1.3-ee.0`), and the reported version will be something like + # `13.1.3-ee`, so we only compare the leading SemVer string. + # + # | Package | Version | + # | ---------------- | -------------- | + # | 13.3.5-ee.0 | 13.3.5-ee | + # | 13.3.0-rc42.ee.0 | 13.3.0-rc42-ee | + deploy = Runtime::Env.deploy_version&.gsub(/\A(\d+\.\d+\.\d+).*\z/, '\1') + + skip('No deploy version provided') if deploy.nil? || deploy.empty? + + get request.url + + expect_status(200) + expect(json_body).to have_key(:version) + expect(json_body[:version]).to start_with(deploy) + end + end +end |