gitlab-qa 7.34.0 → 8.0.0

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.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab/ci/jobs/registry_with_cdn.gitlab-ci.yml +12 -0
  3. data/.rubocop_todo.yml +15 -30
  4. data/Dangerfile +2 -0
  5. data/Gemfile +2 -0
  6. data/Gemfile.lock +3 -2
  7. data/Rakefile +2 -0
  8. data/docs/run_qa_against_gdk.md +5 -0
  9. data/exe/gitlab-qa +1 -0
  10. data/exe/gitlab-qa-report +1 -0
  11. data/gitlab-qa.gemspec +1 -0
  12. data/lib/gitlab/qa/component/base.rb +3 -1
  13. data/lib/gitlab/qa/component/elasticsearch.rb +3 -1
  14. data/lib/gitlab/qa/component/gitlab.rb +42 -24
  15. data/lib/gitlab/qa/component/internet_tunnel.rb +4 -2
  16. data/lib/gitlab/qa/component/jira.rb +4 -2
  17. data/lib/gitlab/qa/component/mail_hog.rb +3 -2
  18. data/lib/gitlab/qa/component/minio.rb +7 -5
  19. data/lib/gitlab/qa/component/postgresql.rb +4 -2
  20. data/lib/gitlab/qa/component/preprod.rb +3 -1
  21. data/lib/gitlab/qa/component/production.rb +3 -1
  22. data/lib/gitlab/qa/component/release.rb +3 -1
  23. data/lib/gitlab/qa/component/saml.rb +4 -2
  24. data/lib/gitlab/qa/component/specs.rb +2 -0
  25. data/lib/gitlab/qa/component/staging.rb +4 -2
  26. data/lib/gitlab/qa/component/staging_ref.rb +4 -2
  27. data/lib/gitlab/qa/docker/command.rb +7 -1
  28. data/lib/gitlab/qa/docker/engine.rb +10 -0
  29. data/lib/gitlab/qa/docker/shellout.rb +24 -14
  30. data/lib/gitlab/qa/docker/volumes.rb +3 -1
  31. data/lib/gitlab/qa/release.rb +6 -4
  32. data/lib/gitlab/qa/report/{junit_test_results.rb → j_unit_test_results.rb} +0 -0
  33. data/lib/gitlab/qa/report/prepare_stage_reports.rb +2 -0
  34. data/lib/gitlab/qa/report/summary_table.rb +2 -0
  35. data/lib/gitlab/qa/report/update_screenshot_path.rb +2 -0
  36. data/lib/gitlab/qa/reporter.rb +2 -0
  37. data/lib/gitlab/qa/runtime/env.rb +9 -4
  38. data/lib/gitlab/qa/scenario/actable.rb +2 -0
  39. data/lib/gitlab/qa/scenario/cli_commands.rb +3 -1
  40. data/lib/gitlab/qa/scenario/template.rb +2 -0
  41. data/lib/gitlab/qa/scenario/test/instance/airgapped.rb +2 -0
  42. data/lib/gitlab/qa/scenario/test/instance/any.rb +2 -0
  43. data/lib/gitlab/qa/scenario/test/instance/deployment_base.rb +2 -0
  44. data/lib/gitlab/qa/scenario/test/instance/geo.rb +2 -0
  45. data/lib/gitlab/qa/scenario/test/instance/image.rb +2 -0
  46. data/lib/gitlab/qa/scenario/test/instance/preprod.rb +2 -0
  47. data/lib/gitlab/qa/scenario/test/instance/production.rb +2 -0
  48. data/lib/gitlab/qa/scenario/test/instance/relative_url.rb +2 -0
  49. data/lib/gitlab/qa/scenario/test/instance/release.rb +2 -0
  50. data/lib/gitlab/qa/scenario/test/instance/repository_storage.rb +2 -0
  51. data/lib/gitlab/qa/scenario/test/instance/smoke.rb +2 -0
  52. data/lib/gitlab/qa/scenario/test/instance/staging.rb +2 -0
  53. data/lib/gitlab/qa/scenario/test/instance/staging_geo.rb +2 -0
  54. data/lib/gitlab/qa/scenario/test/instance/staging_ref.rb +2 -0
  55. data/lib/gitlab/qa/scenario/test/instance/staging_ref_geo.rb +2 -0
  56. data/lib/gitlab/qa/scenario/test/integration/client_ssl.rb +2 -0
  57. data/lib/gitlab/qa/scenario/test/integration/elasticsearch.rb +2 -0
  58. data/lib/gitlab/qa/scenario/test/integration/geo.rb +2 -0
  59. data/lib/gitlab/qa/scenario/test/integration/gitaly_cluster.rb +2 -0
  60. data/lib/gitlab/qa/scenario/test/integration/group_saml.rb +2 -0
  61. data/lib/gitlab/qa/scenario/test/integration/instance_saml.rb +2 -0
  62. data/lib/gitlab/qa/scenario/test/integration/jira.rb +2 -0
  63. data/lib/gitlab/qa/scenario/test/integration/kubernetes.rb +2 -0
  64. data/lib/gitlab/qa/scenario/test/integration/ldap.rb +8 -6
  65. data/lib/gitlab/qa/scenario/test/integration/ldap_no_server.rb +2 -0
  66. data/lib/gitlab/qa/scenario/test/integration/ldap_no_tls.rb +2 -0
  67. data/lib/gitlab/qa/scenario/test/integration/ldap_tls.rb +2 -0
  68. data/lib/gitlab/qa/scenario/test/integration/mattermost.rb +2 -0
  69. data/lib/gitlab/qa/scenario/test/integration/mtls.rb +2 -0
  70. data/lib/gitlab/qa/scenario/test/integration/praefect.rb +2 -0
  71. data/lib/gitlab/qa/scenario/test/integration/saml.rb +2 -0
  72. data/lib/gitlab/qa/scenario/test/integration/smtp.rb +2 -0
  73. data/lib/gitlab/qa/scenario/test/omnibus/image.rb +2 -0
  74. data/lib/gitlab/qa/scenario/test/omnibus/update.rb +2 -0
  75. data/lib/gitlab/qa/scenario/test/omnibus/upgrade.rb +2 -0
  76. data/lib/gitlab/qa/scenario/test/sanity/version.rb +2 -0
  77. data/lib/gitlab/qa/slack/post_to_slack.rb +2 -0
  78. data/lib/gitlab/qa/support/dev_ee_qa_image.rb +3 -1
  79. data/lib/gitlab/qa/support/get_request.rb +2 -0
  80. data/lib/gitlab/qa/support/http_request.rb +2 -0
  81. data/lib/gitlab/qa/support/invalid_response_error.rb +2 -0
  82. data/lib/gitlab/qa/test_logger.rb +1 -1
  83. data/lib/gitlab/qa/version.rb +1 -1
  84. data/lib/gitlab/qa.rb +53 -143
  85. data/scripts/generate-qa-jobs.rb +1 -0
  86. data/support/data/admin_access_token_seed.rb +1 -1
  87. data/support/data/license_usage_seed.rb +2 -1
  88. metadata +17 -3
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'open3'
4
- require 'rainbow/refinement'
4
+ require 'active_support/core_ext/string/filters'
5
5
 
6
6
  module Gitlab
7
7
  module QA
@@ -17,16 +17,16 @@ module Gitlab
17
17
  @logger = Runtime::Logger.logger
18
18
  end
19
19
 
20
- attr_reader :command, :logger
20
+ attr_reader :command, :output
21
21
 
22
22
  def execute! # rubocop:disable Metrics/AbcSize
23
- raise StatusError, 'Command already executed' if @output.any?
23
+ raise StatusError, 'Command already executed' if output.any?
24
24
 
25
- logger.info("Docker shell command: `#{@command.mask_secrets.cyan}`")
25
+ logger.info("Docker shell command: `#{command.mask_secrets.cyan}`")
26
26
 
27
27
  Open3.popen2e(@command.to_s) do |_in, out, wait|
28
28
  out.each do |line|
29
- @output.push(line)
29
+ output.push(line)
30
30
 
31
31
  if stream_progress
32
32
  print "."
@@ -36,21 +36,28 @@ module Gitlab
36
36
 
37
37
  yield line, wait if block_given?
38
38
  end
39
- puts if stream_progress
39
+ puts if stream_progress && !output.empty?
40
40
 
41
- if wait.value.exited? && wait.value.exitstatus.nonzero?
42
- logger.error("Docker shell command output:\n#{output}") unless command.stream_output
43
- raise StatusError, "Docker command `#{@command.mask_secrets[0..100]}` failed! ✘"
44
- end
41
+ fail! if wait.value.exited? && wait.value.exitstatus.nonzero?
45
42
 
46
- logger.debug("Docker shell command output:\n#{output}") unless command.stream_output || output.empty?
43
+ logger.debug("Docker shell command output:\n#{string_output}") unless command.stream_output || output.empty?
47
44
  end
48
45
 
49
- output
46
+ string_output
50
47
  end
51
48
 
52
49
  private
53
50
 
51
+ attr_reader :logger
52
+
53
+ # Raise error and print output to error log level
54
+ #
55
+ # @return [void]
56
+ def fail!
57
+ logger.error("Docker shell command output:\n#{string_output}") unless command.stream_output
58
+ raise StatusError, "Docker command `#{command.mask_secrets.truncate(100)}` failed! " + "✘".red
59
+ end
60
+
54
61
  # Stream only command execution progress and log output when command finished
55
62
  #
56
63
  # @return [Boolean]
@@ -58,8 +65,11 @@ module Gitlab
58
65
  !(Runtime::Env.ci || command.stream_output)
59
66
  end
60
67
 
61
- def output
62
- @output.join.chomp
68
+ # Stringified command output
69
+ #
70
+ # @return [String]
71
+ def string_output
72
+ output.join.chomp
63
73
  end
64
74
  end
65
75
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'tmpdir'
2
4
 
3
5
  module Gitlab
@@ -7,7 +9,7 @@ module Gitlab
7
9
  VOLUMES = { 'config' => '/etc/gitlab',
8
10
  'data' => '/var/opt/gitlab' }.freeze
9
11
 
10
- QA_CONTAINER_WORKDIR = '/home/gitlab/qa'.freeze
12
+ QA_CONTAINER_WORKDIR = '/home/gitlab/qa'
11
13
 
12
14
  def initialize(volumes = VOLUMES)
13
15
  @volumes = volumes
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  class Release
@@ -49,10 +51,10 @@ module Gitlab
49
51
  \z
50
52
  /xi
51
53
 
52
- DEFAULT_TAG = 'latest'.freeze
53
- DEFAULT_CANONICAL_TAG = 'nightly'.freeze
54
- DEV_REGISTRY = 'dev.gitlab.org:5005'.freeze
55
- COM_REGISTRY = 'registry.gitlab.com'.freeze
54
+ DEFAULT_TAG = 'latest'
55
+ DEFAULT_CANONICAL_TAG = 'nightly'
56
+ DEV_REGISTRY = 'dev.gitlab.org:5005'
57
+ COM_REGISTRY = 'registry.gitlab.com'
56
58
 
57
59
  InvalidImageNameError = Class.new(RuntimeError)
58
60
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'nokogiri'
2
4
 
3
5
  module Gitlab
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'nokogiri'
2
4
  require 'table_print'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'nokogiri'
2
4
  require 'json'
3
5
  require 'active_support/core_ext/object/blank'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'optparse'
2
4
 
3
5
  module Gitlab
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/core_ext/object/blank'
2
4
  require 'securerandom'
3
- require 'rainbow/refinement'
4
5
 
5
6
  module Gitlab
6
7
  module QA
@@ -142,7 +143,9 @@ module Gitlab
142
143
  attr_writer(method_name)
143
144
 
144
145
  define_method(method_name) do
145
- env_var_value_if_defined(env_name) || (instance_variable_get("@#{method_name}") if instance_variable_defined?("@#{method_name}"))
146
+ env_var_value_if_defined(env_name) || (if instance_variable_defined?("@#{method_name}")
147
+ instance_variable_get("@#{method_name}")
148
+ end)
146
149
  end
147
150
  end
148
151
 
@@ -220,11 +223,13 @@ module Gitlab
220
223
  end
221
224
 
222
225
  def host_artifacts_dir
223
- @host_artifacts_dir ||= File.join(env_var_value_if_defined('QA_ARTIFACTS_DIR') || '/tmp/gitlab-qa', Runtime::Env.run_id)
226
+ @host_artifacts_dir ||= File.join(
227
+ env_var_value_if_defined('QA_ARTIFACTS_DIR') || '/tmp/gitlab-qa', Runtime::Env.run_id
228
+ )
224
229
  end
225
230
 
226
231
  def elastic_version
227
- env_var_value_if_defined('ELASTIC_VERSION') || '7.17.0'.freeze
232
+ env_var_value_if_defined('ELASTIC_VERSION') || '8.2.0'
228
233
  end
229
234
 
230
235
  def require_license!
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
4
6
  module CLICommands
5
- GIT_LFS_VERSION = '2.8.0'.freeze
7
+ GIT_LFS_VERSION = '2.8.0'
6
8
 
7
9
  def self.git_lfs_install_commands
8
10
  [
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  module Gitlab
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  module Gitlab
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  module Gitlab
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  module Gitlab
@@ -8,12 +10,12 @@ module Gitlab
8
10
  class LDAP < Scenario::Template
9
11
  LDAP_PORT = 389
10
12
  LDAP_TLS_PORT = 636
11
- BASE_DN = 'dc=example,dc=org'.freeze
12
- BIND_DN = 'cn=admin,dc=example,dc=org'.freeze
13
- GROUP_BASE = 'ou=Global Groups,dc=example,dc=org'.freeze
14
- ADMIN_GROUP = 'AdminGroup'.freeze
15
- ADMIN_USER = 'admin'.freeze
16
- ADMIN_PASSWORD = 'admin'.freeze
13
+ BASE_DN = 'dc=example,dc=org'
14
+ BIND_DN = 'cn=admin,dc=example,dc=org'
15
+ GROUP_BASE = 'ou=Global Groups,dc=example,dc=org'
16
+ ADMIN_GROUP = 'AdminGroup'
17
+ ADMIN_USER = 'admin'
18
+ ADMIN_PASSWORD = 'admin'
17
19
 
18
20
  attr_reader :gitlab_name, :spec_suite, :tls, :ldap_name, :network, :orchestrate_ldap_server
19
21
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  module Gitlab
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  module Gitlab
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  module Gitlab
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
 
3
5
  module Gitlab
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Scenario
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'tmpdir'
2
4
  require 'fileutils'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'tmpdir'
2
4
  require 'fileutils'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
  require 'net/http'
3
5
  require 'cgi'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Slack
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
  require 'uri'
3
5
 
@@ -7,7 +9,7 @@ module Gitlab
7
9
  class DevEEQAImage
8
10
  attr_reader :base_url
9
11
 
10
- DEV_ADDRESS = 'https://dev.gitlab.org'.freeze
12
+ DEV_ADDRESS = 'https://dev.gitlab.org'
11
13
  GITLAB_EE_QA_REPOSITORY_ID = 55
12
14
  QAImageNotFoundError = Class.new(StandardError)
13
15
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'net/http'
2
4
  require 'uri'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'http'
2
4
  require 'json'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gitlab
2
4
  module QA
3
5
  module Support
@@ -61,7 +61,7 @@ module Gitlab
61
61
  logger.formatter = proc do |severity, datetime, progname, msg|
62
62
  msg_prefix = message_prefix(datetime, source, severity)
63
63
 
64
- "#{msg_prefix}#{msg}\n"
64
+ "#{msg_prefix}#{msg}\n".gsub(/\e\[(\d+)(?:;\d+)*m/, "")
65
65
  end
66
66
  end
67
67
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module QA
5
- VERSION = '7.34.0'
5
+ VERSION = '8.0.0'
6
6
  end
7
7
  end