gitlab-qa 7.22.0 → 7.23.1

Sign up to get free protection for your applications and to get access to all the features.
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