gitlab-qa 7.22.0 → 7.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 844c99c0251d384017a5276158c67476caba4da667ac93fd5c753641173a3c22
4
- data.tar.gz: b67e5382bb0493a147dcaef6b6afa6e63591673b302c04dafb00a07da6e428c3
3
+ metadata.gz: '099111f747da2553c13f0ad32cf6865a45324907cd8244bfb42ca15eec16108c'
4
+ data.tar.gz: 05b451d3a5217ae20a9a75aceac1d0b827771722011314055863944cbf6df829
5
5
  SHA512:
6
- metadata.gz: 7a0342f9b71831a3f5d0924506e6f00d0f0621e0bc44096b285d2346afb23284bb56ade7778fc1613df5a3c3bc3f13e10ef58634f38e57eb95fbd45f99d1f776
7
- data.tar.gz: 91a8a798f1b3f642954022124e8cb3ca07ec52b2579503979c973e880a5cea202447a15dc5b869aa6ac291745f6ed6f5075e527d10af6d84adc615321f7de5fb
6
+ metadata.gz: af14883ec9bbf29d306e3de0558f380de4703a1cc0d8a62f98f70297264d89344c30cb4143a2d8dfbed74c84fd346ed14594d8aa222a9aec6aa9e3edeb8e32ed
7
+ data.tar.gz: 35f8761799ba3ed8904d97f28b4a7da6255ceb57970c621b0f26e26e9e21ea7914ef8780bc79c911f6cbbc0e9645d68a6515335bca54f4f70e690c762af20286
@@ -82,6 +82,7 @@ All environment variables used by GitLab QA should be defined in [`lib/gitlab/qa
82
82
  | `QA_INFLUXDB_URL` |- | Influxdb url for test metrics reporting | No|
83
83
  | `QA_INFLUXDB_TOKEN` |- | Influxdb token for test metrics reporting | No|
84
84
  | `QA_RUN_TYPE` |- | QA run type like `staging-full`, `canary`, `production` etc. Used in test metrics reporting | No|
85
+ | `QA_VALIDATE_RESOURCE_REUSE` | `false` | Set to `true` to [validate resource reuse](https://docs.gitlab.com/ee/development/testing_guide/end_to_end/resources.html#reusable-resources) after a test suite | No |
85
86
  | `GITHUB_USERNAME` |- | Username for authenticating with GitHub. | No|
86
87
  | `GITHUB_PASSWORD` |- | Password for authenticating with GitHub. | No|
87
88
  | `GITLAB_QA_LOOP_RUNNER_MINUTES` | `1` | Minutes to run and repeat a spec while using the '--loop' option; default value is 1 minute. | No|
data/gitlab-qa.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_development_dependency 'climate_control', '~> 0.2'
23
+ spec.add_development_dependency 'climate_control', '~> 1.0.1'
24
24
  spec.add_development_dependency 'gitlab-styles', '~> 6.2.1'
25
25
  spec.add_development_dependency 'pry', '~> 0.11'
26
26
  spec.add_development_dependency 'rake', '~> 13.0'
@@ -9,7 +9,7 @@ module Gitlab
9
9
  module Component
10
10
  class Minio < Base
11
11
  DOCKER_IMAGE = 'minio/minio'.freeze
12
- DOCKER_IMAGE_TAG = 'RELEASE.2021-09-15T04-54-25Z'.freeze
12
+ DOCKER_IMAGE_TAG = 'latest'.freeze
13
13
  # These are secrets used in a local Minio container, they're not used for any online S3 server.
14
14
  AWS_ACCESS_KEY = 'AKIAIOSFODNN7EXAMPLE'.freeze
15
15
  AWS_SECRET_KEY = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'.freeze
@@ -25,7 +25,7 @@ module Gitlab
25
25
  end
26
26
 
27
27
  issue = gitlab.create_issue(
28
- title: "#{Time.now.strftime('%Y-%m-%d')} Test session report | #{pipeline}",
28
+ title: "#{Time.now.strftime('%Y-%m-%d')} Test session report | #{Runtime::Env.qa_run_type}",
29
29
  description: generate_description(tests),
30
30
  labels: ['Quality', 'QA', 'triage report', pipeline_name_label]
31
31
  )
@@ -55,6 +55,8 @@ module Gitlab
55
55
  #{generate_stages_listing(tests)}
56
56
 
57
57
  #{generate_qa_issue_relation}
58
+
59
+ #{generate_link_to_dashboard}
58
60
  MARKDOWN
59
61
  end
60
62
 
@@ -257,6 +259,16 @@ module Gitlab
257
259
  /relate #{Runtime::Env.qa_issue_url}
258
260
  MARKDOWN
259
261
  end
262
+
263
+ def generate_link_to_dashboard
264
+ return unless Runtime::Env.qa_run_type
265
+
266
+ <<~MARKDOWN.chomp
267
+ ## Link to Grafana dashboard for run-type of #{Runtime::Env.qa_run_type}
268
+
269
+ * https://dashboards.quality.gitlab.net/d/kuNYMgDnz/test-run-metrics?orgId=1&refresh=1m&var-run_type=#{Runtime::Env.qa_run_type}
270
+ MARKDOWN
271
+ end
260
272
  end
261
273
  end
262
274
  end
@@ -12,7 +12,7 @@ module Gitlab
12
12
  DEFAULT_MAX_DIFF_RATIO_FOR_DETECTION = 0.15
13
13
  FAILURE_STACKTRACE_REGEX = %r{((.*Failure\/Error:(?<stacktrace>.+))|(?<stacktrace>.+))}m.freeze
14
14
  ISSUE_STACKTRACE_REGEX = /### Stack trace\s*(```)#{FAILURE_STACKTRACE_REGEX}(```)/m.freeze
15
- NEW_ISSUE_LABELS = Set.new(%w[QA Quality test failure::investigating priority::2]).freeze
15
+ NEW_ISSUE_LABELS = Set.new(%w[QA Quality test failure::new priority::2]).freeze
16
16
 
17
17
  MultipleIssuesFound = Class.new(StandardError)
18
18
 
@@ -35,41 +35,44 @@ module Gitlab
35
35
  test_results.each do |test|
36
36
  next if test.failures.empty?
37
37
 
38
- relate_test_to_issue(test)
38
+ relate_failure_to_issue(test)
39
39
  end
40
40
 
41
41
  test_results.write
42
42
  end
43
43
  end
44
44
 
45
- def relate_test_to_issue(test)
45
+ def relate_failure_to_issue(test)
46
46
  puts " => Searching issues for test '#{test.name}'..."
47
47
 
48
48
  begin
49
- issue = find_or_create_issue(test)
49
+ issue = find_and_link_issue(test) || create_issue(test)
50
50
  return unless issue
51
51
 
52
52
  update_labels(issue, test)
53
- post_failed_job_note(issue, test)
54
- puts " => Marked #{issue.web_url} as related to #{test.testcase}."
55
53
  rescue MultipleIssuesFound => e
56
54
  warn(e.message)
57
55
  end
58
56
  end
59
57
 
60
- def find_or_create_issue(test)
58
+ def find_and_link_issue(test)
61
59
  issue, diff_ratio = find_failure_issue(test)
62
60
 
63
61
  if issue
64
62
  puts " => Found issue #{issue.web_url} for test '#{test.name}' with a diff ratio of #{(diff_ratio * 100).round(2)}%."
65
- else
66
- issue = create_issue(test)
67
- puts "for test '#{test.name}'."
63
+ post_failed_job_note(issue, test)
68
64
  end
69
65
 
70
66
  issue
71
67
  end
72
68
 
69
+ def create_issue(test)
70
+ issue = super
71
+ puts "for test '#{test.name}'."
72
+
73
+ issue
74
+ end
75
+
73
76
  def failure_issues(test)
74
77
  gitlab.find_issues(options: { state: 'opened', labels: 'QA' }).select do |issue|
75
78
  issue_title = issue.title.strip
@@ -146,7 +149,8 @@ module Gitlab
146
149
  super + [
147
150
  "\n\n### Stack trace",
148
151
  "```\n#{test.failures.first['message_lines'].join("\n")}\n```",
149
- "First happened in #{test.ci_job_url}."
152
+ "First happened in #{test.ci_job_url}.",
153
+ "Related test case: #{test.testcase}."
150
154
  ].join("\n\n")
151
155
  end
152
156
 
@@ -159,7 +163,8 @@ module Gitlab
159
163
  end
160
164
 
161
165
  def post_failed_job_note(issue, test)
162
- gitlab.create_issue_note(iid: issue.iid, note: "/relate #{test.testcase}")
166
+ gitlab.create_issue_note(iid: issue.iid, note: "Failure occurred in #{pipeline} pipeline: #{test.ci_job_url}")
167
+ puts " => Linked #{test.ci_job_url} to #{issue.web_url}."
163
168
  end
164
169
 
165
170
  def new_issue_title(test)
@@ -42,6 +42,7 @@ module Gitlab
42
42
  'QA_INFLUXDB_TOKEN' => :qa_influxdb_token,
43
43
  'QA_RUN_TYPE' => :qa_run_type,
44
44
  'QA_SKIP_PULL' => :qa_skip_pull,
45
+ 'QA_VALIDATE_RESOURCE_REUSE' => :qa_validate_resource_reuse,
45
46
  'GITLAB_API_BASE' => :api_base,
46
47
  'GITLAB_ADMIN_USERNAME' => :admin_username,
47
48
  'GITLAB_ADMIN_PASSWORD' => :admin_password,
@@ -306,6 +307,23 @@ module Gitlab
306
307
  enabled?(env_var_value_if_defined('QA_EXPORT_TEST_METRICS'), default: true)
307
308
  end
308
309
 
310
+ def qa_run_type
311
+ return env_var_value_if_defined('QA_RUN_TYPE') if env_var_value_valid?('QA_RUN_TYPE')
312
+
313
+ live_envs = %w[staging staging-canary staging-ref canary preprod production]
314
+ return unless live_envs.include?(ci_project_name)
315
+
316
+ test_subset = if env_var_value_if_defined('NO_ADMIN') == 'true'
317
+ 'sanity-no-admin'
318
+ elsif env_var_value_if_defined('SMOKE_ONLY') == 'true'
319
+ 'sanity'
320
+ else
321
+ 'full'
322
+ end
323
+
324
+ "#{ci_project_name}-#{test_subset}"
325
+ end
326
+
309
327
  private
310
328
 
311
329
  def enabled?(value, default: true)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module QA
5
- VERSION = '7.22.0'
5
+ VERSION = '7.23.1'
6
6
  end
7
7
  end
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: 7.22.0
4
+ version: 7.23.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab Quality
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-05 00:00:00.000000000 Z
11
+ date: 2022-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.2'
19
+ version: 1.0.1
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.2'
26
+ version: 1.0.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: gitlab-styles
29
29
  requirement: !ruby/object:Gem::Requirement