gitlab-qa 9.1.1 → 10.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +106 -149
  3. data/.simplecov +9 -0
  4. data/Gemfile.lock +15 -1
  5. data/README.md +5 -4
  6. data/docs/what_tests_can_be_run.md +73 -35
  7. data/gitlab-qa.gemspec +3 -0
  8. data/lib/gitlab/qa/component/base.rb +8 -1
  9. data/lib/gitlab/qa/component/gitaly.rb +1 -1
  10. data/lib/gitlab/qa/component/gitlab.rb +2 -2
  11. data/lib/gitlab/qa/component/mock_server.rb +13 -0
  12. data/lib/gitlab/qa/report/gitlab_issue_client.rb +1 -1
  13. data/lib/gitlab/qa/report/relate_failure_issue.rb +95 -17
  14. data/lib/gitlab/qa/report/report_as_issue.rb +1 -1
  15. data/lib/gitlab/qa/runtime/env.rb +17 -4
  16. data/lib/gitlab/qa/runtime/omnibus_configurations/decomposition_multiple_db.rb +1 -1
  17. data/lib/gitlab/qa/runtime/omnibus_configurations/object_storage_aws.rb +1 -1
  18. data/lib/gitlab/qa/scenario/test/integration/oauth.rb +68 -0
  19. data/lib/gitlab/qa/scenario/test/omnibus/update_from_previous.rb +3 -2
  20. data/lib/gitlab/qa/version.rb +1 -1
  21. data/scripts/build-package-and-test-env +15 -0
  22. metadata +47 -47
  23. data/.gitlab/ci/jobs/airgapped.gitlab-ci.yml +0 -23
  24. data/.gitlab/ci/jobs/base.gitlab-ci.yml +0 -273
  25. data/.gitlab/ci/jobs/chaos.gitlab-ci.yml +0 -22
  26. data/.gitlab/ci/jobs/cloud_activation.gitlab-ci.yml +0 -24
  27. data/.gitlab/ci/jobs/custom_parallel.gitlab-ci.yml +0 -21
  28. data/.gitlab/ci/jobs/decomposition_multiple_db.gitlab-ci.yml +0 -27
  29. data/.gitlab/ci/jobs/decomposition_single_db.gitlab-ci.yml +0 -25
  30. data/.gitlab/ci/jobs/ee_previous_to_ce_update.gitlab-ci.yml +0 -18
  31. data/.gitlab/ci/jobs/elasticsearch.gitlab-ci.yml +0 -20
  32. data/.gitlab/ci/jobs/geo.gitlab-ci.yml +0 -18
  33. data/.gitlab/ci/jobs/gitaly_cluster.gitlab-ci.yml +0 -41
  34. data/.gitlab/ci/jobs/gitlab_pages.gitlab-ci.yml +0 -19
  35. data/.gitlab/ci/jobs/group_saml.gitlab-ci.yml +0 -20
  36. data/.gitlab/ci/jobs/instance.gitlab-ci.yml +0 -55
  37. data/.gitlab/ci/jobs/instance_saml.gitlab-ci.yml +0 -41
  38. data/.gitlab/ci/jobs/integrations.gitlab-ci.yml +0 -14
  39. data/.gitlab/ci/jobs/jira.gitlab-ci.yml +0 -41
  40. data/.gitlab/ci/jobs/large_setup.gitlab-ci.yml +0 -19
  41. data/.gitlab/ci/jobs/ldap_no_server.gitlab-ci.yml +0 -20
  42. data/.gitlab/ci/jobs/ldap_no_tls.gitlab-ci.yml +0 -41
  43. data/.gitlab/ci/jobs/ldap_tls.gitlab-ci.yml +0 -41
  44. data/.gitlab/ci/jobs/mattermost.gitlab-ci.yml +0 -41
  45. data/.gitlab/ci/jobs/metrics.gitlab-ci.yml +0 -41
  46. data/.gitlab/ci/jobs/mtls.gitlab-ci.yml +0 -19
  47. data/.gitlab/ci/jobs/object_storage.gitlab-ci.yml +0 -49
  48. data/.gitlab/ci/jobs/object_storage_aws.gitlab-ci.yml +0 -25
  49. data/.gitlab/ci/jobs/object_storage_gcs.gitlab-ci.yml +0 -23
  50. data/.gitlab/ci/jobs/object_storage_registry_tls.gitlab-ci.yml +0 -41
  51. data/.gitlab/ci/jobs/omnibus_image.gitlab-ci.yml +0 -15
  52. data/.gitlab/ci/jobs/omnibus_upgrade.gitlab-ci.yml +0 -28
  53. data/.gitlab/ci/jobs/opensearch.gitlab-ci.yml +0 -20
  54. data/.gitlab/ci/jobs/packages.gitlab-ci.yml +0 -25
  55. data/.gitlab/ci/jobs/praefect.gitlab-ci.yml +0 -71
  56. data/.gitlab/ci/jobs/registry.gitlab-ci.yml +0 -41
  57. data/.gitlab/ci/jobs/registry_with_cdn.gitlab-ci.yml +0 -55
  58. data/.gitlab/ci/jobs/relative_url.gitlab-ci.yml +0 -65
  59. data/.gitlab/ci/jobs/repository_storage.gitlab-ci.yml +0 -41
  60. data/.gitlab/ci/jobs/sanity_framework.gitlab-ci.yml +0 -24
  61. data/.gitlab/ci/jobs/service_ping_disabled.gitlab-ci.yml +0 -19
  62. data/.gitlab/ci/jobs/smtp.gitlab-ci.yml +0 -19
  63. data/.gitlab/ci/jobs/staging.gitlab-ci.yml +0 -10
  64. data/.gitlab/ci/jobs/update.gitlab-ci.yml +0 -60
  65. data/.gitlab/ci/rules.gitlab-ci.yml +0 -183
  66. data/lib/gitlab/qa/scenario/test/omnibus/update.rb +0 -72
  67. data/scripts/generate-qa-jobs.rb +0 -99
@@ -13,8 +13,11 @@ module Gitlab
13
13
  include FindSetDri
14
14
 
15
15
  DEFAULT_MAX_DIFF_RATIO_FOR_DETECTION = 0.15
16
+ SPAM_THRESHOLD_FOR_FAILURE_ISSUES = 3
16
17
  FAILURE_STACKTRACE_REGEX = %r{((.*Failure\/Error:(?<stacktrace>.+))|(?<stacktrace>.+))}m.freeze
17
18
  ISSUE_STACKTRACE_REGEX = /### Stack trace\s*(```)#{FAILURE_STACKTRACE_REGEX}(```)/m.freeze
19
+ FAILED_JOB_DESCRIPTION_REGEX = %r{First happened in https?:\/\/\S+\.}m.freeze
20
+ FAILED_JOB_NOTE_REGEX = %r{Failed most recently in \D+ pipeline: https?:\/\/\S+}.freeze
18
21
  NEW_ISSUE_LABELS = Set.new(%w[QA Quality test failure::new priority::2]).freeze
19
22
  IGNORE_EXCEPTIONS = ['Net::ReadTimeout'].freeze
20
23
 
@@ -60,17 +63,34 @@ module Gitlab
60
63
 
61
64
  def find_and_link_issue(test)
62
65
  issue, diff_ratio = find_failure_issue(test)
66
+ issue_already_commented = issue ? @commented_issue_list.include?(issue.web_url) : nil
63
67
 
64
- if issue
68
+ if issue && !issue_already_commented
65
69
  puts " => Found issue #{issue.web_url} for test '#{test.name}' with a diff ratio of #{(diff_ratio * 100).round(2)}%."
66
- @commented_issue_list.include?(issue.web_url) ? (puts " => Failure already commented on issue.") : post_or_update_failed_job_note(issue, test)
70
+ post_or_update_failed_job_note(issue, test)
67
71
  @commented_issue_list.add(issue.web_url)
72
+ else
73
+ puts " => Failure already commented on issue." if issue_already_commented
74
+
75
+ return false
68
76
  end
69
77
 
70
78
  issue
71
79
  end
72
80
 
73
81
  def create_issue(test)
82
+ similar_issues = pipeline_issues_with_similar_stacktrace(test)
83
+
84
+ if similar_issues.size >= SPAM_THRESHOLD_FOR_FAILURE_ISSUES
85
+ puts " => Similar failure issues have already been opened for same pipeline environment"
86
+ puts " => Will not create new issue for this failing spec"
87
+ similar_issues.each do |similar_issue|
88
+ puts "Please check issue: #{similar_issue.web_url}"
89
+ gitlab.create_issue_note(iid: similar_issue.iid, note: "This failed job is most likely related: #{test.ci_job_url}")
90
+ end
91
+ return
92
+ end
93
+
74
94
  issue = super
75
95
  puts "for test '#{test.name}'."
76
96
 
@@ -81,6 +101,50 @@ module Gitlab
81
101
  issue
82
102
  end
83
103
 
104
+ def pipeline_issues_with_similar_stacktrace(test)
105
+ gitlab.find_issues(options: { state: 'opened', labels: 'QA,failure::new', created_after: past_timestamp(2) }).select do |issue|
106
+ job_url_from_issue = failed_issue_job_url(issue)
107
+ next unless pipeline == pipeline_env_from_job_url(job_url_from_issue)
108
+
109
+ stack_trace_from_issue = cleaned_stack_trace_from_issue(issue)
110
+ stack_trace_from_test = cleaned_stacktrace_from_test(test)
111
+ diff_ratio = compare_stack_traces(stack_trace_from_test, stack_trace_from_issue)
112
+ diff_ratio < max_diff_ratio
113
+ end
114
+ end
115
+
116
+ def failed_issue_job_url(issue)
117
+ existing_note = existing_failure_note(issue)
118
+ if existing_note
119
+ job_url_string = existing_note.body
120
+ matched = job_url_string.match(FAILED_JOB_NOTE_REGEX)
121
+ else
122
+ job_url_string = issue.description
123
+ matched = job_url_string.match(FAILED_JOB_DESCRIPTION_REGEX)
124
+ end
125
+
126
+ return unless matched
127
+
128
+ job_url = matched[0].chop.split(" ").last
129
+ puts "=> Found failed job url in the issue: #{job_url}"
130
+ job_url
131
+ end
132
+
133
+ def pipeline_env_from_job_url(job_url)
134
+ return if job_url.nil?
135
+
136
+ if job_url.include?('/quality/')
137
+ job_url.partition('/quality/').last.partition('/').first
138
+ else
139
+ 'master'
140
+ end
141
+ end
142
+
143
+ def past_timestamp(hours_ago)
144
+ timestamp = Time.now - (hours_ago * 60 * 60)
145
+ timestamp.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
146
+ end
147
+
84
148
  def failure_issues(test)
85
149
  gitlab.find_issues(options: { state: 'opened', labels: 'QA' }).select do |issue|
86
150
  issue_title = issue.title.strip
@@ -96,20 +160,36 @@ module Gitlab
96
160
  end
97
161
  end
98
162
 
99
- def find_relevant_failure_issues(test) # rubocop:disable Metrics/AbcSize
100
- ld = Class.new.extend(Gem::Text).method(:levenshtein_distance)
163
+ def cleaned_stack_trace_from_issue(issue)
164
+ relevant_issue_stacktrace = find_issue_stacktrace(issue)
165
+ return unless relevant_issue_stacktrace
166
+
167
+ remove_unique_resource_names(relevant_issue_stacktrace)
168
+ end
169
+
170
+ def cleaned_stacktrace_from_test(test)
101
171
  first_test_failure_stacktrace = sanitize_stacktrace(full_stacktrace(test), FAILURE_STACKTRACE_REGEX) || full_stacktrace(test)
102
- clean_first_test_failure_stacktrace = remove_unique_resource_names(first_test_failure_stacktrace)
172
+ remove_unique_resource_names(first_test_failure_stacktrace)
173
+ end
174
+
175
+ def compare_stack_traces(stack_trace_first, stack_trace_second)
176
+ calculate_diff_ratio(stack_trace_first, stack_trace_second)
177
+ end
103
178
 
179
+ def calculate_diff_ratio(stack_trace_first, stack_trace_second)
180
+ ld = Class.new.extend(Gem::Text).method(:levenshtein_distance)
181
+ distance = ld.call(stack_trace_first, stack_trace_second)
182
+ distance.zero? ? 0.0 : (distance.to_f / stack_trace_first.size).round(3)
183
+ end
184
+
185
+ def find_relevant_failure_issues(test) # rubocop:disable Metrics/AbcSize
186
+ clean_first_test_failure_stacktrace = cleaned_stacktrace_from_test(test)
104
187
  # Search with the `search` param returns 500 errors, so we filter by ~QA and then filter further in Ruby
105
188
  failure_issues(test).each_with_object({}) do |issue, memo|
106
- relevant_issue_stacktrace = find_issue_stacktrace(issue)
107
- next unless relevant_issue_stacktrace
108
-
109
- clean_relevant_issue_stacktrace = remove_unique_resource_names(relevant_issue_stacktrace)
110
- distance = ld.call(clean_first_test_failure_stacktrace, clean_relevant_issue_stacktrace)
111
- diff_ratio = distance.zero? ? 0.0 : (distance.to_f / clean_first_test_failure_stacktrace.size).round(3)
189
+ clean_relevant_issue_stacktrace = cleaned_stack_trace_from_issue(issue)
190
+ next if clean_relevant_issue_stacktrace.nil?
112
191
 
192
+ diff_ratio = compare_stack_traces(clean_first_test_failure_stacktrace, clean_relevant_issue_stacktrace)
113
193
  if diff_ratio <= max_diff_ratio
114
194
  puts " => [DEBUG] Issue #{issue.web_url} has an acceptable diff ratio of #{(diff_ratio * 100).round(2)}%."
115
195
  # The `Gitlab::ObjectifiedHash` class overrides `#hash` which is used by `Hash#[]=` to compute the hash key.
@@ -120,8 +200,8 @@ module Gitlab
120
200
  memo[issue.to_h] = diff_ratio
121
201
  else
122
202
  puts " => [DEBUG] Found issue #{issue.web_url} but stacktraces are too different (#{(diff_ratio * 100).round(2)}%).\n"
123
- puts " => [DEBUG] Issue stacktrace:\n----------------\n#{relevant_issue_stacktrace}\n----------------\n"
124
- puts " => [DEBUG] Failure stacktrace:\n----------------\n#{first_test_failure_stacktrace}\n----------------\n"
203
+ puts " => [DEBUG] Issue stacktrace:\n----------------\n#{clean_relevant_issue_stacktrace}\n----------------\n"
204
+ puts " => [DEBUG] Failure stacktrace:\n----------------\n#{clean_first_test_failure_stacktrace}\n----------------\n"
125
205
  end
126
206
  end
127
207
  end
@@ -202,11 +282,9 @@ module Gitlab
202
282
  end
203
283
 
204
284
  def existing_failure_note(issue)
205
- gitlab.find_issue_notes(iid: issue.iid).each do |note|
206
- return note if note.body.include?('Failed most recently in')
285
+ gitlab.find_issue_notes(iid: issue.iid)&.find do |note|
286
+ note.body.include?('Failed most recently in')
207
287
  end
208
-
209
- false
210
288
  end
211
289
 
212
290
  def screenshot_section(test)
@@ -140,7 +140,7 @@ module Gitlab
140
140
  end
141
141
 
142
142
  def partial_file_path(path)
143
- path.match(/((api|browser_ui).*)/i)[1]
143
+ path.match(/((ee|api|browser_ui).*)/i)[1]
144
144
  end
145
145
 
146
146
  def title_from_test(test)
@@ -73,8 +73,8 @@ module Gitlab
73
73
  'GITLAB_QA_PASSWORD_1' => :gitlab_qa_password_1,
74
74
  'GITLAB_QA_USERNAME_2' => :gitlab_qa_username_2,
75
75
  'GITLAB_QA_PASSWORD_2' => :gitlab_qa_password_2,
76
- 'GITHUB_USERNAME' => :github_username,
77
- 'GITHUB_PASSWORD' => :github_password,
76
+ 'QA_GITHUB_USERNAME' => :qa_github_username,
77
+ 'QA_GITHUB_PASSWORD' => :qa_github_password,
78
78
  'KNAPSACK_GENERATE_REPORT' => :knapsack_generate_report,
79
79
  'KNAPSACK_REPORT_PATH' => :knapsack_report_path,
80
80
  'KNAPSACK_TEST_FILE_PATTERN' => :knapsack_test_file_pattern,
@@ -138,7 +138,13 @@ module Gitlab
138
138
  'CHROME_DISABLE_DEV_SHM' => :chrome_disable_dev_shm,
139
139
  'COLORIZED_LOGS' => :colorized_logs,
140
140
  'FIPS' => :fips,
141
- 'JH_ENV' => :jh_env
141
+ 'JH_ENV' => :jh_env,
142
+ 'QA_GITHUB_OAUTH_APP_ID' => :github_oauth_app_id,
143
+ 'QA_GITHUB_OAUTH_APP_SECRET' => :github_oauth_app_secret,
144
+ 'QA_1P_EMAIL' => :qa_1p_email,
145
+ 'QA_1P_PASSWORD' => :qa_1p_password,
146
+ 'QA_1P_SECRET' => :qa_1p_secret,
147
+ 'QA_1P_GITHUB_UUID' => :qa_1p_github_uuid
142
148
  }.freeze
143
149
 
144
150
  ENV_VARIABLES.each do |env_name, method_name|
@@ -304,6 +310,13 @@ module Gitlab
304
310
  end
305
311
  end
306
312
 
313
+ def require_oauth_environment!
314
+ %w[QA_GITHUB_OAUTH_APP_ID QA_GITHUB_OAUTH_APP_SECRET QA_GITHUB_USERNAME
315
+ QA_GITHUB_PASSWORD QA_1P_EMAIL QA_1P_PASSWORD QA_1P_SECRET QA_1P_GITHUB_UUID].each do |env_key|
316
+ raise ArgumentError, "Environment variable #{env_key} must be set to run OAuth specs" unless ENV.key?(env_key)
317
+ end
318
+ end
319
+
307
320
  def require_initial_password!
308
321
  return unless env_var_value_if_defined('GITLAB_INITIAL_ROOT_PASSWORD').to_s.strip.empty?
309
322
 
@@ -406,7 +419,7 @@ module Gitlab
406
419
  end
407
420
 
408
421
  def mock_github_enabled?
409
- enabled?(env_var_value_if_defined('QA_MOCK_GITHUB'), default: false)
422
+ enabled?(env_var_value_if_defined('QA_MOCK_GITHUB'), default: true)
410
423
  end
411
424
 
412
425
  private
@@ -32,7 +32,7 @@ module Gitlab
32
32
  "gitlab-psql -d gitlabhq_production_ci -c 'create extension if not exists btree_gist'",
33
33
  "gitlab-psql -d gitlabhq_production_ci -c 'create extension if not exists pg_trgm'",
34
34
  # Load schema only if it does not exist.
35
- "#{SCHEMA_EXISTENCE_CHECK_COMMAND} || gitlab-rake db:structure:load:ci",
35
+ "#{SCHEMA_EXISTENCE_CHECK_COMMAND} || DISABLE_DATABASE_ENVIRONMENT_CHECK=1 gitlab-rake db:schema:load:ci",
36
36
  "gitlab-ctl restart"
37
37
  ].freeze
38
38
  end
@@ -10,7 +10,7 @@ module Gitlab
10
10
 
11
11
  <<~OMNIBUS
12
12
  gitlab_rails['object_store']['enabled'] = true
13
- gitlab_rails['object_store']['proxy_download'] = true
13
+ gitlab_rails['object_store']['proxy_download'] = false
14
14
  gitlab_rails['object_store']['connection'] = { 'provider' => 'AWS', 'region' => '#{Runtime::Env.aws_s3_region}', 'aws_access_key_id' => '#{Runtime::Env.aws_s3_key_id}', 'aws_secret_access_key' => '#{Runtime::Env.aws_s3_access_key}' }
15
15
 
16
16
  gitlab_rails['object_store']['objects']['artifacts']['bucket'] = '#{Runtime::Env.aws_s3_bucket_name}'
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ module Gitlab
6
+ module QA
7
+ module Scenario
8
+ module Test
9
+ module Integration
10
+ class OAuth < Scenario::Template
11
+ attr_reader :gitlab_name
12
+
13
+ def initialize
14
+ @gitlab_name = 'gitlab-oauth'
15
+ end
16
+
17
+ def perform(release, *rspec_args)
18
+ Runtime::Env.require_oauth_environment!
19
+
20
+ release = Release.new(release)
21
+
22
+ Component::Gitlab.perform do |gitlab|
23
+ gitlab.release = release
24
+ gitlab.network = 'test'
25
+ gitlab.name = gitlab_name
26
+
27
+ gitlab.omnibus_configuration << gitlab_omnibus_configuration
28
+
29
+ gitlab.instance do
30
+ Runtime::Logger.info('Running OAuth specs!')
31
+
32
+ Component::Specs.perform do |specs|
33
+ rspec_args << '--' unless rspec_args.include?('--')
34
+ rspec_args << %w[--tag oauth]
35
+ specs.suite = 'Test::Instance::All'
36
+ specs.release = release
37
+ specs.network = gitlab.network
38
+ specs.args = [gitlab.address, *rspec_args]
39
+ end
40
+ end
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ def gitlab_omnibus_configuration
47
+ <<~OMNIBUS
48
+ gitlab_rails['omniauth_enabled'] = true;
49
+ gitlab_rails['omniauth_allow_single_sign_on'] = ['github'];
50
+ gitlab_rails['omniauth_block_auto_created_users'] = false;
51
+ gitlab_rails['omniauth_providers'] = [
52
+ {
53
+ name: 'github',
54
+ app_id: '$QA_GITHUB_OAUTH_APP_ID',
55
+ app_secret: '$QA_GITHUB_OAUTH_APP_SECRET',
56
+ url: 'https://github.com/',
57
+ verify_ssl: false,
58
+ args: { scope: 'user:email' }
59
+ }
60
+ ];
61
+ OMNIBUS
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -18,14 +18,15 @@ module Gitlab
18
18
  # @param [String] release current release docker image
19
19
  # @param [String] current_version current gitlab version associated with docker image
20
20
  # @param [String] semver_component semver component for N - 1 version detection, major|minor|patch
21
+ # @param [String] from_edition gitlab edition to update from
21
22
  # @param [Array] *rspec_args rspec arguments
22
23
  # @return [void]
23
- def perform(release, current_version, semver_component, *rspec_args)
24
+ def perform(release, current_version, semver_component, from_edition = nil, *rspec_args)
24
25
  @current_release = QA::Release.new(release)
25
26
  @upgrade_path = Support::GitlabUpgradePath.new(
26
27
  current_version,
27
28
  semver_component,
28
- @current_release.edition
29
+ from_edition || @current_release.edition
29
30
  ).fetch
30
31
 
31
32
  upgrade_info = "#{[*upgrade_path, current_release].join(' => ')} (#{current_version})".bright
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module QA
5
- VERSION = '9.1.1'
5
+ VERSION = '10.0.0'
6
6
  end
7
7
  end
@@ -0,0 +1,15 @@
1
+ #!/bin/sh
2
+
3
+ # set custom qa cache key because upstream template by default installs gitlab-qa from rubygems and uses cache key
4
+ # based on globally defined gitlab-qa version
5
+ #
6
+ # UPDATE_QA_CACHE needs to be passed to included child pipeline because e2e specs run on separate runners which don't share
7
+ # same infrastructure and this variable allows to populate cache for e2e spec specific runners
8
+ qa_cache_key="${RUBY_VERSION}-$(md5sum Gemfile.lock | awk '{ print $1 }')"
9
+
10
+ echo "Saving environment variables for package-and-test trigger"
11
+ echo "GITLAB_QA_CACHE_KEY=$qa_cache_key" > $BUILD_ENV
12
+ echo "UPDATE_QA_CACHE=$UPDATE_QA_CACHE" >> $BUILD_ENV
13
+
14
+ echo "Created $BUILD_ENV file:"
15
+ cat $BUILD_ENV
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-qa
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.1.1
4
+ version: 10.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab Quality
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-06 00:00:00.000000000 Z
11
+ date: 2023-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -108,6 +108,34 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '3.7'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.22'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.22'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov-cobertura
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '2.1'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2.1'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: solargraph
113
141
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +150,20 @@ dependencies:
122
150
  - - "~>"
123
151
  - !ruby/object:Gem::Version
124
152
  version: '0.41'
153
+ - !ruby/object:Gem::Dependency
154
+ name: timecop
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 0.9.5
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 0.9.5
125
167
  - !ruby/object:Gem::Dependency
126
168
  name: webmock
127
169
  requirement: !ruby/object:Gem::Requirement
@@ -278,55 +320,13 @@ files:
278
320
  - ".dockerignore"
279
321
  - ".gitignore"
280
322
  - ".gitlab-ci.yml"
281
- - ".gitlab/ci/jobs/airgapped.gitlab-ci.yml"
282
- - ".gitlab/ci/jobs/base.gitlab-ci.yml"
283
- - ".gitlab/ci/jobs/chaos.gitlab-ci.yml"
284
- - ".gitlab/ci/jobs/cloud_activation.gitlab-ci.yml"
285
- - ".gitlab/ci/jobs/custom_parallel.gitlab-ci.yml"
286
- - ".gitlab/ci/jobs/decomposition_multiple_db.gitlab-ci.yml"
287
- - ".gitlab/ci/jobs/decomposition_single_db.gitlab-ci.yml"
288
- - ".gitlab/ci/jobs/ee_previous_to_ce_update.gitlab-ci.yml"
289
- - ".gitlab/ci/jobs/elasticsearch.gitlab-ci.yml"
290
- - ".gitlab/ci/jobs/geo.gitlab-ci.yml"
291
- - ".gitlab/ci/jobs/gitaly_cluster.gitlab-ci.yml"
292
- - ".gitlab/ci/jobs/gitlab_pages.gitlab-ci.yml"
293
- - ".gitlab/ci/jobs/group_saml.gitlab-ci.yml"
294
- - ".gitlab/ci/jobs/instance.gitlab-ci.yml"
295
- - ".gitlab/ci/jobs/instance_saml.gitlab-ci.yml"
296
- - ".gitlab/ci/jobs/integrations.gitlab-ci.yml"
297
- - ".gitlab/ci/jobs/jira.gitlab-ci.yml"
298
- - ".gitlab/ci/jobs/large_setup.gitlab-ci.yml"
299
- - ".gitlab/ci/jobs/ldap_no_server.gitlab-ci.yml"
300
- - ".gitlab/ci/jobs/ldap_no_tls.gitlab-ci.yml"
301
- - ".gitlab/ci/jobs/ldap_tls.gitlab-ci.yml"
302
- - ".gitlab/ci/jobs/mattermost.gitlab-ci.yml"
303
- - ".gitlab/ci/jobs/metrics.gitlab-ci.yml"
304
- - ".gitlab/ci/jobs/mtls.gitlab-ci.yml"
305
- - ".gitlab/ci/jobs/object_storage.gitlab-ci.yml"
306
- - ".gitlab/ci/jobs/object_storage_aws.gitlab-ci.yml"
307
- - ".gitlab/ci/jobs/object_storage_gcs.gitlab-ci.yml"
308
- - ".gitlab/ci/jobs/object_storage_registry_tls.gitlab-ci.yml"
309
- - ".gitlab/ci/jobs/omnibus_image.gitlab-ci.yml"
310
- - ".gitlab/ci/jobs/omnibus_upgrade.gitlab-ci.yml"
311
- - ".gitlab/ci/jobs/opensearch.gitlab-ci.yml"
312
- - ".gitlab/ci/jobs/packages.gitlab-ci.yml"
313
- - ".gitlab/ci/jobs/praefect.gitlab-ci.yml"
314
- - ".gitlab/ci/jobs/registry.gitlab-ci.yml"
315
- - ".gitlab/ci/jobs/registry_with_cdn.gitlab-ci.yml"
316
- - ".gitlab/ci/jobs/relative_url.gitlab-ci.yml"
317
- - ".gitlab/ci/jobs/repository_storage.gitlab-ci.yml"
318
- - ".gitlab/ci/jobs/sanity_framework.gitlab-ci.yml"
319
- - ".gitlab/ci/jobs/service_ping_disabled.gitlab-ci.yml"
320
- - ".gitlab/ci/jobs/smtp.gitlab-ci.yml"
321
- - ".gitlab/ci/jobs/staging.gitlab-ci.yml"
322
- - ".gitlab/ci/jobs/update.gitlab-ci.yml"
323
- - ".gitlab/ci/rules.gitlab-ci.yml"
324
323
  - ".gitlab/issue_templates/Default.md"
325
324
  - ".gitlab/merge_request_templates/Default.md"
326
325
  - ".gitlab/merge_request_templates/Release.md"
327
326
  - ".rspec"
328
327
  - ".rubocop.yml"
329
328
  - ".rubocop_todo.yml"
329
+ - ".simplecov"
330
330
  - CONTRIBUTING.md
331
331
  - Dangerfile
332
332
  - Gemfile
@@ -459,6 +459,7 @@ files:
459
459
  - lib/gitlab/qa/scenario/test/integration/mattermost.rb
460
460
  - lib/gitlab/qa/scenario/test/integration/metrics.rb
461
461
  - lib/gitlab/qa/scenario/test/integration/mtls.rb
462
+ - lib/gitlab/qa/scenario/test/integration/oauth.rb
462
463
  - lib/gitlab/qa/scenario/test/integration/opensearch.rb
463
464
  - lib/gitlab/qa/scenario/test/integration/praefect.rb
464
465
  - lib/gitlab/qa/scenario/test/integration/registry.rb
@@ -469,7 +470,6 @@ files:
469
470
  - lib/gitlab/qa/scenario/test/integration/smtp.rb
470
471
  - lib/gitlab/qa/scenario/test/integration/suggested_reviewer.rb
471
472
  - lib/gitlab/qa/scenario/test/omnibus/image.rb
472
- - lib/gitlab/qa/scenario/test/omnibus/update.rb
473
473
  - lib/gitlab/qa/scenario/test/omnibus/update_from_previous.rb
474
474
  - lib/gitlab/qa/scenario/test/omnibus/upgrade.rb
475
475
  - lib/gitlab/qa/scenario/test/sanity/version.rb
@@ -487,7 +487,7 @@ files:
487
487
  - lib/gitlab/qa/support/shellout.rb
488
488
  - lib/gitlab/qa/test_logger.rb
489
489
  - lib/gitlab/qa/version.rb
490
- - scripts/generate-qa-jobs.rb
490
+ - scripts/build-package-and-test-env
491
491
  - support/data/admin_access_token_seed.rb
492
492
  - support/data/license_usage_seed.rb
493
493
  - support/manifests/suggested_reviewer/authenticator.yaml
@@ -1,23 +0,0 @@
1
- ce:airgapped:
2
- extends:
3
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change
4
- - .test
5
- - .high-capacity
6
- - .ce-variables
7
- - .rspec-report-opts
8
- parallel: 10
9
- variables:
10
- QA_SCENARIO: "Test::Instance::Airgapped"
11
- QA_RSPEC_TAGS: "--tag '~github' --tag '~skip_live_env'"
12
-
13
- ee:airgapped:
14
- extends:
15
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change
16
- - .test
17
- - .high-capacity
18
- - .ee-variables
19
- - .rspec-report-opts
20
- parallel: 10
21
- variables:
22
- QA_SCENARIO: "Test::Instance::Airgapped"
23
- QA_RSPEC_TAGS: "--tag '~github' --tag '~skip_live_env'"