gitlab-qa 6.15.3 → 6.18.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3d066c13bb7ff790bdfc0e7ed6f6cbe70f65c9ecfe2400c3c804c8fc91e6db1
4
- data.tar.gz: 85e35e3017cac986d7ccec3927e1f3543164443e2806803e4020830dfe0eebb1
3
+ metadata.gz: 014047f45483ab38a1539c030e55befbefc7ff264ea49c7e53c627aba510d5f6
4
+ data.tar.gz: bcb812ddf34170c933bbf8ca3318668bd9c31516ad0648d7928c1643c038e61e
5
5
  SHA512:
6
- metadata.gz: 2c4e9dffbbaff6dd23ee878b3601e6d3cfa13cb2928f5f360abeba0b75ec1841d45050fbd220c41960690c620da742c48862110857667c3c99566ed62aa80249
7
- data.tar.gz: 8658c0b57a0693c335e515b07770b5bff1938fc307be9ad971724713a90b101cd9c1ec7b7c7b5527c9b5cc2c9d594a88ba88fcf6f5b4502801a243e7f754142c
6
+ metadata.gz: b6b61b590269a367d50aab150815ed437ec0754020443e5f1852243f938de59ac55b7777cfea5cb2b32b580b4a0f9ad97a0180dbe2a8c809cb558b93f428b03f
7
+ data.tar.gz: 90c3e08ee021157f991fcef5cc94e0a9691d2d673314f6c9dd75d6183b0b6c5c0eeeb5e7cb1fa442cee549e5d721b0af032a14dda84ad56870f40fa8107cb026
@@ -28,7 +28,7 @@ workflow:
28
28
  rules:
29
29
  # For merge requests, create a pipeline.
30
30
  - if: '$CI_MERGE_REQUEST_IID'
31
- # For `master` branch, create a pipeline (this includes on schedules, pushes, merges, etc.).
31
+ # For the default branch, create a pipeline (this includes on schedules, pushes, merges, etc.).
32
32
  - if: '$CI_COMMIT_BRANCH == "master"'
33
33
  # For tags, create a pipeline.
34
34
  - if: '$CI_COMMIT_TAG'
@@ -42,10 +42,11 @@ variables:
42
42
  QA_CAN_TEST_GIT_PROTOCOL_V2: "true"
43
43
  QA_CAN_TEST_PRAEFECT: "false"
44
44
  QA_TESTCASES_REPORTING_PROJECT: "gitlab-org/quality/testcases"
45
- QA_FAILURES_REPORTING_PROJECT: "rymai/gitlab-qa-issues"
46
- # The --dry-run or --max-diff-ratio option can be set to modify the behavior of `exe/gitlab-qa-report --relate-failure-issue` without releasing a new gem version.
47
- QA_FAILURES_REPORTER_OPTIONS: ""
48
45
  QA_TESTCASE_SESSIONS_PROJECT: "gitlab-org/quality/testcase-sessions"
46
+ # QA_DEFAULT_BRANCH is the default branch name of the instance under test.
47
+ QA_DEFAULT_BRANCH: "master"
48
+ # TOP_UPSTREAM_DEFAULT_BRANCH is the default branch name of the original project that triggered a pipeline in this project.
49
+ TOP_UPSTREAM_DEFAULT_BRANCH: "master"
49
50
 
50
51
  .check-base:
51
52
  stage: check
@@ -77,8 +78,7 @@ rspec:
77
78
  - exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS || test_run_exit_code=$?
78
79
  - exe/gitlab-qa-report --update-screenshot-path "gitlab-qa-run-*/**/rspec-*.xml"
79
80
  - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
80
- - if [ "$TOP_UPSTREAM_SOURCE_REF" == "master" ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --report-in-issues "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_TESTCASES_REPORTING_PROJECT" || true; fi
81
- - if [ "$TOP_UPSTREAM_SOURCE_REF" == "master" ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --relate-failure-issue "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_FAILURES_REPORTING_PROJECT" $QA_FAILURES_REPORTER_OPTIONS || true; fi
81
+ - if [ "$TOP_UPSTREAM_SOURCE_REF" == $TOP_UPSTREAM_DEFAULT_BRANCH ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --report-in-issues "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_TESTCASES_REPORTING_PROJECT" || true; fi
82
82
  - exit $test_run_exit_code
83
83
 
84
84
  .ce-qa:
@@ -332,8 +332,7 @@ ce:update:
332
332
  script:
333
333
  - exe/gitlab-qa Test::Omnibus::Update ${RELEASE:=CE} ${RELEASE:=CE} -- $RSPEC_REPORT_OPTS || test_run_exit_code=$?
334
334
  - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
335
- - if [ "$TOP_UPSTREAM_SOURCE_REF" == "master" ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --report-in-issues "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_TESTCASES_REPORTING_PROJECT" || true; fi
336
- - if [ "$TOP_UPSTREAM_SOURCE_REF" == "master" ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --relate-failure-issue "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_FAILURES_REPORTING_PROJECT" $QA_FAILURES_REPORTER_OPTIONS || true; fi
335
+ - if [ "$TOP_UPSTREAM_SOURCE_REF" == $TOP_UPSTREAM_DEFAULT_BRANCH ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --report-in-issues "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_TESTCASES_REPORTING_PROJECT" || true; fi
337
336
  - exit $test_run_exit_code
338
337
  extends:
339
338
  - .test
@@ -347,8 +346,7 @@ ce:update-quarantine:
347
346
  script:
348
347
  - exe/gitlab-qa Test::Omnibus::Update ${RELEASE:=CE} ${RELEASE:=CE} -- --tag quarantine --tag ~orchestrated $RSPEC_REPORT_OPTS || test_run_exit_code=$?
349
348
  - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
350
- - if [ "$TOP_UPSTREAM_SOURCE_REF" == "master" ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --report-in-issues "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_TESTCASES_REPORTING_PROJECT" || true; fi
351
- - if [ "$TOP_UPSTREAM_SOURCE_REF" == "master" ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --relate-failure-issue "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_FAILURES_REPORTING_PROJECT" $QA_FAILURES_REPORTER_OPTIONS || true; fi
349
+ - if [ "$TOP_UPSTREAM_SOURCE_REF" == $TOP_UPSTREAM_DEFAULT_BRANCH ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --report-in-issues "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_TESTCASES_REPORTING_PROJECT" || true; fi
352
350
  - exit $test_run_exit_code
353
351
  extends:
354
352
  - .test
@@ -361,8 +359,7 @@ ee:update:
361
359
  script:
362
360
  - exe/gitlab-qa Test::Omnibus::Update ${RELEASE:=EE} ${RELEASE:=EE} -- $RSPEC_REPORT_OPTS || test_run_exit_code=$?
363
361
  - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
364
- - if [ "$TOP_UPSTREAM_SOURCE_REF" == "master" ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --report-in-issues "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_TESTCASES_REPORTING_PROJECT" || true; fi
365
- - if [ "$TOP_UPSTREAM_SOURCE_REF" == "master" ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --relate-failure-issue "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_FAILURES_REPORTING_PROJECT" $QA_FAILURES_REPORTER_OPTIONS || true; fi
362
+ - if [ "$TOP_UPSTREAM_SOURCE_REF" == $TOP_UPSTREAM_DEFAULT_BRANCH ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --report-in-issues "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_TESTCASES_REPORTING_PROJECT" || true; fi
366
363
  - exit $test_run_exit_code
367
364
  extends:
368
365
  - .test
@@ -376,8 +373,7 @@ ee:update-quarantine:
376
373
  script:
377
374
  - exe/gitlab-qa Test::Omnibus::Update ${RELEASE:=EE} ${RELEASE:=EE} -- --tag quarantine --tag ~orchestrated $RSPEC_REPORT_OPTS || test_run_exit_code=$?
378
375
  - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
379
- - if [ "$TOP_UPSTREAM_SOURCE_REF" == "master" ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --report-in-issues "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_TESTCASES_REPORTING_PROJECT" || true; fi
380
- - if [ "$TOP_UPSTREAM_SOURCE_REF" == "master" ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --relate-failure-issue "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_FAILURES_REPORTING_PROJECT" $QA_FAILURES_REPORTER_OPTIONS || true; fi
376
+ - if [ "$TOP_UPSTREAM_SOURCE_REF" == $TOP_UPSTREAM_DEFAULT_BRANCH ] || [[ "$TOP_UPSTREAM_SOURCE_JOB" == https://ops.gitlab.net* ]]; then exe/gitlab-qa-report --report-in-issues "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_TESTCASES_REPORTING_PROJECT" || true; fi
381
377
  - exit $test_run_exit_code
382
378
  extends:
383
379
  - .test
@@ -465,22 +461,23 @@ ee:mattermost-quarantine:
465
461
  variables:
466
462
  QA_SCENARIO: "Test::Integration::Mattermost"
467
463
 
468
- ee:geo:
469
- extends:
470
- - .test
471
- - .ee-qa
472
- - .rspec-report-opts
473
- variables:
474
- QA_SCENARIO: "Test::Integration::Geo"
475
-
476
- ee:geo-quarantine:
477
- extends:
478
- - .test
479
- - .ee-qa
480
- - .quarantine
481
- - .rspec-report-opts
482
- variables:
483
- QA_SCENARIO: "Test::Integration::Geo"
464
+ # Disabling geo jobs temporarily due to https://gitlab.com/gitlab-org/gitlab/-/issues/273063
465
+ # ee:geo:
466
+ # extends:
467
+ # - .test
468
+ # - .ee-qa
469
+ # - .rspec-report-opts
470
+ # variables:
471
+ # QA_SCENARIO: "Test::Integration::Geo"
472
+
473
+ # ee:geo-quarantine:
474
+ # extends:
475
+ # - .test
476
+ # - .ee-qa
477
+ # - .quarantine
478
+ # - .rspec-report-opts
479
+ # variables:
480
+ # QA_SCENARIO: "Test::Integration::Geo"
484
481
 
485
482
  ce:ldap_no_tls:
486
483
  extends:
@@ -674,6 +671,46 @@ ee:kubernetes-quarantine:
674
671
  variables:
675
672
  QA_SCENARIO: "Test::Integration::Kubernetes"
676
673
 
674
+ ce:ssh_tunnel:
675
+ extends:
676
+ - .test
677
+ - .high-capacity
678
+ - .ce-qa
679
+ - .rspec-report-opts
680
+ allow_failure: true
681
+ variables:
682
+ QA_SCENARIO: "Test::Integration::SSHTunnel"
683
+
684
+ ce:ssh_tunnel-quarantine:
685
+ extends:
686
+ - .test
687
+ - .high-capacity
688
+ - .ce-qa
689
+ - .quarantine
690
+ - .rspec-report-opts
691
+ variables:
692
+ QA_SCENARIO: "Test::Integration::SSHTunnel"
693
+
694
+ ee:ssh_tunnel:
695
+ extends:
696
+ - .test
697
+ - .high-capacity
698
+ - .ee-qa
699
+ - .rspec-report-opts
700
+ allow_failure: true
701
+ variables:
702
+ QA_SCENARIO: "Test::Integration::SSHTunnel"
703
+
704
+ ee:ssh_tunnel-quarantine:
705
+ extends:
706
+ - .test
707
+ - .high-capacity
708
+ - .ee-qa
709
+ - .quarantine
710
+ - .rspec-report-opts
711
+ variables:
712
+ QA_SCENARIO: "Test::Integration::SSHTunnel"
713
+
677
714
  ce:object_storage:
678
715
  extends:
679
716
  - .test
@@ -874,6 +911,22 @@ ee:gitaly-cluster-quarantine:
874
911
  variables:
875
912
  QA_SCENARIO: "Test::Integration::GitalyCluster"
876
913
 
914
+ ce:mtls:
915
+ extends:
916
+ - .test
917
+ - .ce-qa
918
+ - .rspec-report-opts
919
+ variables:
920
+ QA_SCENARIO: "Test::Integration::MTLS"
921
+
922
+ ee:mtls:
923
+ extends:
924
+ - .test
925
+ - .ee-qa
926
+ - .rspec-report-opts
927
+ variables:
928
+ QA_SCENARIO: "Test::Integration::MTLS"
929
+
877
930
  ce:smtp:
878
931
  extends:
879
932
  - .test
@@ -946,7 +999,7 @@ staging:
946
999
  generate_test_session:
947
1000
  stage: report
948
1001
  rules:
949
- - if: '$TOP_UPSTREAM_SOURCE_JOB && $TOP_UPSTREAM_SOURCE_REF == "master"'
1002
+ - if: '$TOP_UPSTREAM_SOURCE_JOB && $TOP_UPSTREAM_SOURCE_REF == $TOP_UPSTREAM_DEFAULT_BRANCH'
950
1003
  when: always
951
1004
  - if: '$TOP_UPSTREAM_SOURCE_JOB =~ /\Ahttps:\/\/ops.gitlab.net\//'
952
1005
  when: always
@@ -959,6 +1012,24 @@ generate_test_session:
959
1012
  - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
960
1013
  - exe/gitlab-qa-report --generate-test-session "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_TESTCASE_SESSIONS_PROJECT"
961
1014
 
1015
+ relate_test_failures:
1016
+ stage: report
1017
+ rules:
1018
+ - if: '$DISABLE_RELATING_FAILURE_ISSUES'
1019
+ when: never
1020
+ - if: '$TOP_UPSTREAM_SOURCE_JOB && $TOP_UPSTREAM_SOURCE_REF == $TOP_UPSTREAM_DEFAULT_BRANCH'
1021
+ when: always
1022
+ - if: '$TOP_UPSTREAM_SOURCE_JOB =~ /\Ahttps:\/\/ops.gitlab.net\//'
1023
+ when: always
1024
+ variables:
1025
+ QA_FAILURES_REPORTING_PROJECT: "gitlab-org/gitlab"
1026
+ QA_FAILURES_MAX_DIFF_RATIO: "0.05"
1027
+ # The --dry-run can be set to modify the behavior of `exe/gitlab-qa-report --relate-failure-issue` without releasing a new gem version.
1028
+ QA_FAILURES_REPORTER_OPTIONS: ""
1029
+ script:
1030
+ - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
1031
+ - exe/gitlab-qa-report --relate-failure-issue "gitlab-qa-run-*/**/rspec-*.json" --project "$QA_FAILURES_REPORTING_PROJECT" --max-diff-ratio "$QA_FAILURES_MAX_DIFF_RATIO" $QA_FAILURES_REPORTER_OPTIONS
1032
+
962
1033
  .notify_upstream_commit:
963
1034
  stage: notify
964
1035
  image: ruby:2.6
@@ -995,7 +1066,7 @@ notify_slack:
995
1066
  rules:
996
1067
  - if: '$TOP_UPSTREAM_SOURCE_JOB && $NOTIFY_CHANNEL'
997
1068
  when: on_failure
998
- - if: '$TOP_UPSTREAM_SOURCE_JOB && $TOP_UPSTREAM_SOURCE_REF == "master"'
1069
+ - if: '$TOP_UPSTREAM_SOURCE_JOB && $TOP_UPSTREAM_SOURCE_REF == $TOP_UPSTREAM_DEFAULT_BRANCH'
999
1070
  when: on_failure
1000
1071
  script:
1001
1072
  - export RELEASE=${TOP_UPSTREAM_SOURCE_REF:-$RELEASE}
@@ -1,4 +1,3 @@
1
-
2
1
  # What tests can be run?
3
2
  [[_TOC_]]
4
3
  ## The two types of QA tests
@@ -142,6 +141,30 @@ To run EE tests, the `EE_LICENSE` environment variable needs to be set:
142
141
 
143
142
  `$ export EE_LICENSE=$(cat /path/to/GitLab.gitlab_license)`
144
143
 
144
+ ## Running a specific test (or set of tests)
145
+
146
+ In most of the scenarios listed below, if you don't want to run all the tests
147
+ it's possible to specify one or more tests. The framework uses RSpec, so tests can be
148
+ specified as you would when using RSpec.
149
+
150
+ For example, the following would run `create_merge_request_spec.rb`:
151
+
152
+ ```shell
153
+ $ gitlab-qa Test::Instance::Image EE -- qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb
154
+ ```
155
+
156
+ While the following would run all Create UI tests:
157
+
158
+ ```shell
159
+ $ gitlab-qa Test::Instance::Image EE -- qa/specs/features/browser_ui/3_create
160
+ ```
161
+
162
+ And the following would run all Create API tests as well as UI tests:
163
+
164
+ ```shell
165
+ $ gitlab-qa Test::Instance::Image EE -- qa/specs/features/browser_ui/3_create qa/specs/features/api/3_create
166
+ ```
167
+
145
168
  ## Examples
146
169
 
147
170
  ### `Test::Instance::Image CE|EE|<full image address>`
@@ -57,6 +57,8 @@ module Gitlab
57
57
  autoload :SMTP, 'gitlab/qa/scenario/test/integration/smtp'
58
58
  autoload :GitalyCluster, 'gitlab/qa/scenario/test/integration/gitaly_cluster'
59
59
  autoload :Jira, 'gitlab/qa/scenario/test/integration/jira'
60
+ autoload :SSHTunnel, 'gitlab/qa/scenario/test/integration/ssh_tunnel'
61
+ autoload :MTLS, 'gitlab/qa/scenario/test/integration/mtls'
60
62
  end
61
63
 
62
64
  module Sanity
@@ -16,8 +16,12 @@ module Gitlab
16
16
 
17
17
  def_delegators :release, :tag, :image, :edition
18
18
 
19
- CERTIFICATES_PATH = File.expand_path('../../../../tls_certificates/gitlab'.freeze, __dir__)
19
+ GITLAB_CERTIFICATES_PATH = File.expand_path('../../../../tls_certificates/gitlab'.freeze, __dir__)
20
+ GITALY_CERTIFICATES_PATH = File.expand_path('../../../../tls_certificates/gitaly/ssl'.freeze, __dir__)
21
+ TRUSTED_CERTIFICATES_PATH = File.expand_path('../../../../tls_certificates/gitaly/trusted-certs'.freeze, __dir__)
22
+
20
23
  SSL_PATH = '/etc/gitlab/ssl'.freeze
24
+ TRUSTED_PATH = '/etc/gitlab/trusted-certs'.freeze
21
25
 
22
26
  def initialize
23
27
  super
@@ -25,7 +29,8 @@ module Gitlab
25
29
  @disable_animations = true
26
30
  @skip_availability_check = false
27
31
 
28
- @volumes[CERTIFICATES_PATH] = SSL_PATH
32
+ @volumes[GITLAB_CERTIFICATES_PATH] = SSL_PATH
33
+ @volumes[TRUSTED_CERTIFICATES_PATH] = TRUSTED_PATH
29
34
 
30
35
  self.release = 'CE'
31
36
  end
@@ -64,6 +69,11 @@ module Gitlab
64
69
  tls ? '443' : '80'
65
70
  end
66
71
 
72
+ def mtls
73
+ @volumes.delete(GITLAB_CERTIFICATES_PATH)
74
+ @volumes[GITALY_CERTIFICATES_PATH] = SSL_PATH
75
+ end
76
+
67
77
  def relative_path
68
78
  @relative_path ||= ''
69
79
  end
@@ -10,10 +10,15 @@ module Gitlab
10
10
  class Specs < Scenario::Template
11
11
  attr_accessor :suite, :release, :network, :args, :volumes, :env, :runner_network
12
12
 
13
+ TRUSTED_CERTIFICATES_PATH = File.expand_path('../../../../tls_certificates/gitaly/trusted-certs'.freeze, __dir__)
14
+ TRUSTED_PATH = '/etc/ssl/certs'.freeze
15
+
13
16
  def initialize
14
17
  @docker = Docker::Engine.new
15
18
  @volumes = {}
16
19
  @env = {}
20
+
21
+ @volumes[TRUSTED_CERTIFICATES_PATH] = TRUSTED_PATH
17
22
  end
18
23
 
19
24
  def perform # rubocop:disable Metrics/AbcSize
@@ -22,6 +22,11 @@ module Gitlab
22
22
  labels: ['Quality', 'QA', 'triage report', pipeline_name_label]
23
23
  )
24
24
 
25
+ # Workaround for https://gitlab.com/gitlab-org/gitlab/-/issues/295493
26
+ gitlab.create_issue_note(
27
+ iid: issue.iid,
28
+ note: "/relate #{Runtime::Env.qa_issue_url}")
29
+
25
30
  File.write('REPORT_ISSUE_URL', issue.web_url)
26
31
  end
27
32
  # rubocop:enable Metrics/AbcSize
@@ -110,7 +110,7 @@ module Gitlab
110
110
  channel = pipeline == "canary" ? "qa-production" : "qa-#{pipeline}"
111
111
  error_msg = warn_exception(e)
112
112
 
113
- return unless QA::Runtime::Env.ci_commit_ref_name == 'master'
113
+ return unless QA::Runtime::Env.ci_commit_ref_name == QA::Runtime::Env.default_branch
114
114
 
115
115
  slack_options = {
116
116
  channel: channel,
@@ -10,7 +10,8 @@ module Gitlab
10
10
  # Uses the API to create or update GitLab issues with the results of tests from RSpec report files.
11
11
  class RelateFailureIssue < ReportAsIssue
12
12
  DEFAULT_MAX_DIFF_RATIO_FOR_DETECTION = 0.05
13
- STACKTRACE_REGEX = %r{### Stack trace\s*(```)\s*.*(Failure/Error:.+)(\1)}m.freeze
13
+ FAILURE_STACKTRACE_REGEX = %r{((.*Failure\/Error:(?<stacktrace>.+))|(?<stacktrace>.+))}m.freeze
14
+ ISSUE_STACKTRACE_REGEX = /### Stack trace\s*(```)#{FAILURE_STACKTRACE_REGEX}(```)/m.freeze
14
15
  NEW_ISSUE_LABELS = Set.new(%w[QA Quality test failure::investigating priority::2]).freeze
15
16
 
16
17
  MultipleIssuesFound = Class.new(StandardError)
@@ -77,7 +78,8 @@ module Gitlab
77
78
 
78
79
  def find_relevant_failure_issues(test) # rubocop:disable Metrics/AbcSize
79
80
  ld = Class.new.extend(Gem::Text).method(:levenshtein_distance)
80
- first_test_failure_stacktrace = test.failures.first['message_lines'].join("\n")
81
+ full_stacktrace = test.failures.first['message_lines'].join("\n")
82
+ first_test_failure_stacktrace = sanitize_stacktrace(full_stacktrace, FAILURE_STACKTRACE_REGEX) || full_stacktrace
81
83
 
82
84
  # Search with the `search` param returns 500 errors, so we filter by ~QA and then filter further in Ruby
83
85
  failure_issues(test).each_with_object({}) do |issue, memo|
@@ -85,9 +87,10 @@ module Gitlab
85
87
  next unless relevant_issue_stacktrace
86
88
 
87
89
  distance = ld.call(first_test_failure_stacktrace, relevant_issue_stacktrace)
88
- diff_ratio = (distance.to_f / first_test_failure_stacktrace.size).round(3)
90
+ diff_ratio = distance.zero? ? 0.0 : (distance.to_f / first_test_failure_stacktrace.size).round(3)
91
+
89
92
  if diff_ratio <= max_diff_ratio
90
- puts " => [DEBUG] Issue #{issue} has an acceptable diff ratio of #{(diff_ratio * 100).round(2)}%."
93
+ puts " => [DEBUG] Issue #{issue.web_url} has an acceptable diff ratio of #{(diff_ratio * 100).round(2)}%."
91
94
  # The `Gitlab::ObjectifiedHash` class overrides `#hash` which is used by `Hash#[]=` to compute the hash key.
92
95
  # This leads to a `TypeError Exception: no implicit conversion of Hash into Integer` error, so we convert the object to a hash before using it as a Hash key.
93
96
  # See:
@@ -95,18 +98,27 @@ module Gitlab
95
98
  # - https://github.com/NARKOZ/gitlab/commit/cbdbd1e32623f018a8fae39932a8e3bc4d929abb?_pjax=%23js-repo-pjax-container#r44484494
96
99
  memo[issue.to_h] = diff_ratio
97
100
  else
98
- puts " => [DEBUG] Found issue #{issue.web_url} but stacktraces are too different (#{(diff_ratio * 100).round(2)}%)."
101
+ puts " => [DEBUG] Found issue #{issue.web_url} but stacktraces are too different (#{(diff_ratio * 100).round(2)}%).\n"
102
+ puts " => [DEBUG] Issue stacktrace:\n----------------\n#{relevant_issue_stacktrace}\n----------------\n"
103
+ puts " => [DEBUG] Failure stacktrace:\n----------------\n#{first_test_failure_stacktrace}\n----------------\n"
99
104
  end
100
105
  end
101
106
  end
102
107
 
103
108
  def find_issue_stacktrace(issue)
104
- issue_stacktrace_match = issue.description.match(STACKTRACE_REGEX)
109
+ issue_stacktrace = sanitize_stacktrace(issue.description, ISSUE_STACKTRACE_REGEX)
110
+ return issue_stacktrace if issue_stacktrace
111
+
112
+ puts " => [DEBUG] Stacktrace couldn't be found for #{issue.web_url}!"
113
+ end
114
+
115
+ def sanitize_stacktrace(stacktrace, regex)
116
+ stacktrace_match = stacktrace.match(regex)
105
117
 
106
- if issue_stacktrace_match
107
- issue_stacktrace_match[2].gsub(/^#.*$/, '').strip
118
+ if stacktrace_match
119
+ stacktrace_match[:stacktrace].gsub(/^\s*#.*$/, '').gsub(/^[[:space:]]+/, '').strip
108
120
  else
109
- puts " => [DEBUG] Stacktrace couldn't be found for #{issue.web_url}:\n\n#{issue.description}\n\n----------------------------------\n"
121
+ puts " => [DEBUG] Stacktrace doesn't match the expected regex (#{regex}):\n----------------\n#{stacktrace}\n----------------\n"
110
122
  end
111
123
  end
112
124
 
@@ -112,7 +112,7 @@ module Gitlab
112
112
  "found:#{pipeline}.gitlab.com"
113
113
  when 'preprod'
114
114
  'found:pre.gitlab.com'
115
- when 'staging-orchestrated', 'nightly', 'master'
115
+ when 'staging-orchestrated', 'nightly', QA::Runtime::Env.default_branch
116
116
  "found:#{pipeline}"
117
117
  else
118
118
  raise "No `found:*` label for the `#{pipeline}` pipeline!"
@@ -147,14 +147,14 @@ module Gitlab
147
147
  # Gets the name of the pipeline the test was run in, to be used as the key of a scoped label
148
148
  #
149
149
  # Tests can be run in several pipelines:
150
- # gitlab-qa, nightly, master, staging, canary, production, preprod, and MRs
150
+ # gitlab-qa, nightly, staging, canary, production, preprod, MRs, and the default branch (master/main)
151
151
  #
152
152
  # Some of those run in their own project, so CI_PROJECT_NAME is the name we need. Those are:
153
153
  # nightly, staging, canary, production, and preprod
154
154
  #
155
- # MR, master, and gitlab-qa tests run in gitlab-qa, but we only want to report tests run on master
156
- # because the other pipelines will be monitored by the author of the MR that triggered them.
157
- # So we assume that we're reporting a master pipeline if the project name is 'gitlab-qa'.
155
+ # MR, master/main, and gitlab-qa tests run in gitlab-qa, but we only want to report tests run on
156
+ # master/main because the other pipelines will be monitored by the author of the MR that triggered them.
157
+ # So we assume that we're reporting a master/main pipeline if the project name is 'gitlab-qa'.
158
158
 
159
159
  @pipeline ||= Runtime::Env.pipeline_from_project_name
160
160
  end
@@ -44,6 +44,7 @@ module Gitlab
44
44
  'QA_GITALY_NON_CLUSTER_STORAGE' => :qa_gitaly_non_cluster_storage,
45
45
  'QA_COOKIES' => :qa_cookie,
46
46
  'QA_DEBUG' => :qa_debug,
47
+ 'QA_DEFAULT_BRANCH' => :qa_default_branch,
47
48
  'QA_LOG_PATH' => :qa_log_path,
48
49
  'QA_CAN_TEST_ADMIN_FEATURES' => :qa_can_test_admin_features,
49
50
  'QA_CAN_TEST_GIT_PROTOCOL_V2' => :qa_can_test_git_protocol_v2,
@@ -100,6 +101,10 @@ module Gitlab
100
101
  end
101
102
  end
102
103
 
104
+ def default_branch
105
+ ENV['QA_DEFAULT_BRANCH'] || 'master'
106
+ end
107
+
103
108
  def gitlab_username
104
109
  ENV['GITLAB_USERNAME'] || 'gitlab-qa'
105
110
  end
@@ -157,7 +162,7 @@ module Gitlab
157
162
  if ENV['TOP_UPSTREAM_SOURCE_JOB'].to_s.start_with?('https://ops.gitlab.net')
158
163
  'staging-orchestrated'
159
164
  else
160
- 'master'
165
+ QA::Runtime::Env.default_branch
161
166
  end
162
167
  else
163
168
  ci_project_name
@@ -176,6 +181,10 @@ module Gitlab
176
181
  ENV['GITLAB_QA_DEV_ACCESS_TOKEN']
177
182
  end
178
183
 
184
+ def initial_root_password
185
+ ENV['GITLAB_INITIAL_ROOT_PASSWORD']
186
+ end
187
+
179
188
  def qa_container_registry_access_token
180
189
  ENV['GITLAB_QA_CONTAINER_REGISTRY_ACCESS_TOKEN']
181
190
  end
@@ -251,6 +260,25 @@ module Gitlab
251
260
  end
252
261
  end
253
262
 
263
+ def require_initial_password!
264
+ return unless ENV['GITLAB_INITIAL_ROOT_PASSWORD'].to_s.strip.empty?
265
+
266
+ raise ArgumentError, "Environment variable GITLAB_INITIAL_ROOT_PASSWORD must be provided to set an initial root password."
267
+ end
268
+
269
+ def require_ssh_tunnel!
270
+ %w[TUNNEL_SSH_PRIVATE_KEY TUNNEL_SERVER_HOSTNAME TUNNEL_SSH_USER].each do |env_key|
271
+ raise ArgumentError, "Environment variable #{env_key} must be set to run tunnel specs" unless ENV.key?(env_key)
272
+ end
273
+ end
274
+
275
+ def override_default_password!
276
+ require_initial_password!
277
+
278
+ ENV['GITLAB_PASSWORD'] = initial_root_password
279
+ ENV['GITLAB_ADMIN_PASSWORD'] = initial_root_password
280
+ end
281
+
254
282
  def skip_pull?
255
283
  enabled?(ENV['QA_SKIP_PULL'], default: false)
256
284
  end
@@ -0,0 +1,112 @@
1
+ module Gitlab
2
+ module QA
3
+ module Scenario
4
+ module Test
5
+ module Integration
6
+ class MTLS < Scenario::Template
7
+ def initialize
8
+ @gitlab_name = 'gitlab'
9
+ @gitaly_name = 'gitaly'
10
+ @spec_suite = 'Test::Instance::All'
11
+ @network = 'test'
12
+ @env = {}
13
+ @tag = 'mtls'
14
+ end
15
+
16
+ # rubocop:disable Metrics/AbcSize
17
+ def perform(release, *rspec_args)
18
+ Component::Gitlab.perform do |gitaly|
19
+ gitaly.release = QA::Release.new(release)
20
+ gitaly.name = @gitaly_name
21
+ gitaly.network = @network
22
+ gitaly.skip_availability_check = true
23
+
24
+ gitaly.set_accept_insecure_certs
25
+ gitaly.omnibus_config = gitaly_omnibus
26
+ gitaly.mtls
27
+
28
+ gitaly.instance do
29
+ Component::Gitlab.perform do |gitlab|
30
+ gitlab.release = QA::Release.new(release)
31
+ gitlab.name = @gitlab_name
32
+ gitlab.network = @network
33
+
34
+ gitlab.set_accept_insecure_certs
35
+ gitlab.omnibus_config = gitlab_omnibus
36
+ gitlab.tls = true
37
+
38
+ gitlab.instance do
39
+ puts "Running mTLS specs!"
40
+
41
+ if @tag
42
+ rspec_args << "--" unless rspec_args.include?('--')
43
+ rspec_args << "--tag" << @tag
44
+ end
45
+
46
+ Component::Specs.perform do |specs|
47
+ specs.suite = @spec_suite
48
+ specs.release = gitlab.release
49
+ specs.network = gitlab.network
50
+ specs.args = [gitlab.address, *rspec_args]
51
+ specs.env = @env
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ # rubocop:enable Metrics/AbcSize
59
+
60
+ def gitlab_omnibus
61
+ <<~OMNIBUS
62
+ gitaly['enable'] = false;
63
+
64
+ external_url 'https://#{@gitlab_name}.#{@network}';
65
+
66
+ gitlab_rails['gitaly_token'] = 'abc123secret';
67
+ gitlab_shell['secret_token'] = 'shellsecret';
68
+
69
+ git_data_dirs({
70
+ 'default' => { 'gitaly_address' => 'tls://#{@gitaly_name}.#{@network}:9999' },
71
+ 'storage1' => { 'gitaly_address' => 'tls://#{@gitaly_name}.#{@network}:9999' },
72
+ });
73
+ OMNIBUS
74
+ end
75
+
76
+ def gitaly_omnibus
77
+ <<~OMNIBUS
78
+ gitaly['tls_listen_addr'] = '0.0.0.0:9999';
79
+ gitaly['certificate_path'] = '/etc/gitlab/ssl/gitaly.test.crt';
80
+ gitaly['key_path'] = '/etc/gitlab/ssl/gitaly.test.key';
81
+
82
+ postgresql['enable'] = false;
83
+ redis['enable'] = false;
84
+ nginx['enable'] = false;
85
+ puma['enable'] = false;
86
+ sidekiq['enable'] = false;
87
+ gitlab_workhorse['enable'] = false;
88
+ grafana['enable'] = false;
89
+ gitlab_exporter['enable'] = false;
90
+ alertmanager['enable'] = false;
91
+ prometheus['enable'] = false;
92
+
93
+ gitlab_rails['rake_cache_clear'] = false;
94
+ gitlab_rails['auto_migrate'] = false;
95
+
96
+ gitaly['auth_token'] = 'abc123secret';
97
+ gitlab_shell['secret_token'] = 'shellsecret';
98
+
99
+ gitlab_rails['internal_api_url'] = 'https://#{@gitlab_name}.#{@network}';
100
+
101
+ git_data_dirs({
102
+ 'default' => { 'path' => '/var/opt/gitlab/git-data' },
103
+ 'storage1' => { 'path' => '/mnt/gitlab/git-data' },
104
+ })
105
+ OMNIBUS
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Gitlab
4
+ module QA
5
+ module Scenario
6
+ module Test
7
+ module Integration
8
+ class SSHTunnel < Scenario::Template
9
+ # rubocop:disable Metrics/AbcSize
10
+ def perform(release, *rspec_args)
11
+ Runtime::Env.override_default_password!
12
+ Runtime::Env.require_ssh_tunnel!
13
+
14
+ Component::Gitlab.perform do |gitlab|
15
+ gitlab.release = release
16
+ gitlab.network = 'test'
17
+
18
+ Component::InternetTunnel.perform do |tunnel_gitlab|
19
+ Component::InternetTunnel.perform do |tunnel_registry|
20
+ tunnel_gitlab.gitlab_hostname = gitlab.hostname
21
+ tunnel_gitlab.network = 'test'
22
+ tunnel_registry.gitlab_hostname = gitlab.hostname
23
+ tunnel_registry.network = 'test'
24
+
25
+ gitlab.omnibus_config = <<~OMNIBUS
26
+ external_url '#{tunnel_gitlab.url}';
27
+ nginx['listen_port'] = 80;
28
+ nginx['listen_https'] = false;
29
+ # documentation: https://docs.gitlab.com/omnibus/settings/database.html#seed-the-database-fresh-installs-only
30
+ gitlab_rails['initial_root_password'] = '#{Runtime::Env.require_initial_password}'
31
+
32
+ registry_external_url '#{tunnel_registry.url}';
33
+ registry_nginx['listen_port'] = 80;
34
+ registry_nginx['listen_https'] = false;
35
+ OMNIBUS
36
+
37
+ tunnel_gitlab.instance do
38
+ tunnel_registry.instance do
39
+ gitlab.instance do
40
+ Component::Specs.perform do |specs|
41
+ specs.suite = 'Test::Integration::SSHTunnel'
42
+ specs.release = gitlab.release
43
+ specs.network = gitlab.network
44
+ specs.args = [tunnel_gitlab.url, *rspec_args]
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ # rubocop:enable Metrics/AbcSize
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  module QA
3
- VERSION = '6.15.3'.freeze
3
+ VERSION = '6.18.0'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,33 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
32
+ 5OPk1+2KXQff+lh0m2IKJcYu3g==
33
+ -----END CERTIFICATE-----
@@ -0,0 +1,52 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDZtGN/yHVIdhb5
3
+ ntl4isuyTVXwQN3JRUCUnPB41wawePqegBVC9cblMpiyUGO9baXMA+ZcvdMBrUuc
4
+ J0MO1FXwdSomutW/HRu92BZKKpwDQX3vXSxgM3pSBH7nl+84gFOMiEF7vH0Xl0jP
5
+ K3W/6abmSuz5ISEtFgnS3IclWj3qV0yv0pHzY2ZWhFX6pZDzTh+vFzRn3lvPzvX2
6
+ dGfDa9e/Y72HFnjEja6ea5X6d7Ku/ChODspFBxZIeNKknE9U2s+vDUykG5FxS1YV
7
+ TDsUtNhpfx6tQGu3MIQS3GWNRUB5RhxFt5nrWF6G6LnXC2LS4kR76CmnxN0Uf/fh
8
+ PKbaqYZkd+5QnJnhUXcwkpQ8xTKiZwiJNo3c9ExVPFPgn/bX8lAmfFsvmZMFvKAY
9
+ YXwSTF7wGAW/H+607rB8WZWLd/8jx0jALpQv3z600cC96AWzS8RCXiUX0EVSrnQK
10
+ k2810PYiuCnoF149mQwfTL36as24GLE7pzADgaB6zUB8zU5xaqHxvXGvn1tACN2l
11
+ 7vz6Cu1F7Bog0Ft1YyZqhMm1QQ5ikjUX35jnRxdnRtHXQroxaO/oNasi+v/UaC+i
12
+ H0BiInXmynqA55VAaMti8V+VQKKEYiAewVb6nTcI05++F787XEy2QuKv4wJrbXtK
13
+ NP6c4f29qjb5YJD7CJUDryH7G5g/gwIDAQABAoICAA9QUxdwAGACfoc8l0uVZ9K5
14
+ AeyOg4te5bYOfBPj/EJ5oBd6JwS4yS7iKj+QzBNNHTaGp7OqXqdli0YGtP7cDNeH
15
+ RlnHFrYE1Ci8hITfDm5kMvmdcjuqI1aVnl+oHlm5HSdrhj+v+JSqPaLlCblgNC9K
16
+ 4fR8Uhsby8EbZh5IhMZxMaHEjCO0wEQhtvKUpueWfUARv8v2pjqt8jtN4OasNVbv
17
+ KyvPdttMpBXct4YQ2W7ZqfQjsjK81uJuLVMK88GiSq2jn9qDXe28QOfqntVMC1UQ
18
+ bhX9zBXswb2Z50LStkBRoDd/PMKDStLul/P6hw8Sf4K/x/5XKL4CamtbmtkSx7M0
19
+ Ter6v6q4ygKWPUc03gyyBMYf8vaTpiUGHP8N9Zl6tbL0YXn6OzQVROnVLTlJBTsO
20
+ McrHpCja5Q79SkRLyQAcIUMnVgNPbPOH3gP/U8anEWWF/DrthzMf78JsCwmKGn9K
21
+ 8uJBUsXGuvyUVo4HKkEk9/+vuVU9mUvYhJTThobLDzAbD/V912fYk0pYtEQZTJYj
22
+ 8mov+3T23w3t2WqJz5eGy3haP7BzqSshQjrd/csJSiLuFHYCzs4mX3Yd2xl/NTD7
23
+ S6dBSu4E/PP59gfn7zIxZcIZHQKjpow/RyG9XAnKhK8wNh8uN++knSQGcg7nEOD5
24
+ BTm7Apu/eOFnLooV2sgRAoIBAQDtRJGXnxSFz98BVf2W43Xz043DaZVTBqYspujy
25
+ Tzk2g48pZu7c+PjSY/P9TXHxuoQCMflZEz/xcZEZGgJjsTGb/v8XniHimJtnfQAx
26
+ 47niOYwpRXpz6twaCp5K5QebjMkv/GcMPv2MFAmz6s/r/fIpgGkQ46BWcKxTjr4P
27
+ 9h4WPhEbdcTI8YTzIrQUn+hvh1krB2V3J74iaRhGo6/RWbr9jXXfAMLbh0krJr7X
28
+ FzYSD2LV6GXYs4bnZYNFptjVP8kKC9FcbKL8HTvmNl3rkJu1dByUT+N4sWN8WEz+
29
+ ev8DB1lY/I39hFJ4y3ZQnADLyIFLS9p30SlWUFdOockXzM5/AoIBAQDq5G1Z6Cu6
30
+ ns0qoObESRbmaJ5WwqBV0ges1BucEgyrL3SrAMh4ya3RonsgYAYS+mF0hE74j689
31
+ HJtg19oKkewb4p3ZeoRM0lw6wT/p5o6F3DL26gD/YvqSB8ddq/eAmVzIlZ097oso
32
+ Ixqh3nldlo8AV4wT2pr7Se/qZkI7b/bWVbUxeUbPCHUBV7bg/kmbXC6yKO/b8VvU
33
+ c8DPrWKpOqId+/oXP7KBdqPqR+jDHhfu99T+gN+apRmSP3ygAGqhlLs2PB8b+XOO
34
+ 8djqZaRJdU2ZBDhv7+RZp79zTSkaR0gXKYCgTXRltU2uHkzAZWwn/XrnoDj+8WwR
35
+ v1lo1WvbUdT9AoIBAQCAb6GwRbjCRqgc/QNs7mwnNNmEcl8Wtn61pRRsNl5uGAEj
36
+ FEkw7MUkfl7RO172z1QuLAciJL10YVl+EQpCFOUZ4IsNqdgF5T4aYxv75Z31y9kH
37
+ bki+/t9uaVkOibP4i9lMVIEjq+VsMlyeO/mZcbnopU46ij19DTj7ckWINl5LBAYW
38
+ q0V+0N57DsoUcAtOdCHcnQBb4/OUhPdTJcBCvyPtpOmtcagJVc5RwYOEw1fNpu6F
39
+ hGu9RlE8aUMKLSsrJIAbJBKMyXHgr6KBF+T3YywmqVffIO+tobiM0u+6wbHRXeUL
40
+ uorSNRK/uMOvFwOHTF5Q+BqmyV5rDsp0Ejfc3kzZAoIBAQCLdFTLxQB5SqCqR17a
41
+ eD5FSyV+gwxoB0sRO9isfzbQR1tvzwY2WB5/UITjQr84czh60baE8eFrWdmR1HUa
42
+ Q2o3YAKxRIDZjya8p1EH0B8bsBD98Q3okd4L5txha6CE1Ah2+gSh6Ubq7HR6V7gc
43
+ bS+3V0LN4sKSoGH0+wMlgKK+u6HYnpUAg5fb1TS5PZ97wm3izlUhcpk/d/2oDtt9
44
+ d1cakCf5t5KGNGa6yDiT5wD0mmT1OJQIny6gWlrmL3kfN0sytt0NYbtOyZ0sBG5W
45
+ QnNwfkX3hyg+Zk5O6SeW920Ae15nTbTmUY6t6kVNEKn20BIxBDnyemjb3Iv7poHj
46
+ cyENAoIBAGOK2yNK9WG38emchXiRJ/HevdMs3nyRAldcRLAC867zV9NdVu96wE43
47
+ XFaXtLBiseoF11/w7URi/r15Ez/qhe4AqdMZcD3ARaBLe6pLFv69C70iHDuuWocb
48
+ FJ2hN3H4kZBm26Li3tJrfiuV99pIKG0L+l6x9EgdmDMkwuWJ0CC+n/nLgfHEaCqS
49
+ 0zdUEdNfx5Yf5RdAyyvBoBYSUR9Dq9s03lRKROPlfNYB53xxHkOwGZECuCUYm0yG
50
+ sBQvqdnGhIp6GXXoLIVc13iWozzXEZT6gVR4iSU6p2MyRTzFp2ER9wM5ah4qcfEw
51
+ nh4iw7J+eIfaBUd7gtbLgkmkz5Bt21g=
52
+ -----END PRIVATE KEY-----
@@ -0,0 +1,33 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
32
+ 5OPk1+2KXQff+lh0m2IKJcYu3g==
33
+ -----END CERTIFICATE-----
@@ -0,0 +1,31 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIFSjCCAzICCQDft0SZAQGuIzANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJV
3
+ UzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDzANBgNVBAoM
4
+ BkdpdExhYjEMMAoGA1UECwwDT3JnMRQwEgYDVQQDDAtnaXRsYWIudGVzdDAeFw0x
5
+ ODEwMjUwOTU0MzRaFw0yODEwMjIwOTU0MzRaMGcxCzAJBgNVBAYTAlVTMQswCQYD
6
+ VQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEPMA0GA1UECgwGR2l0TGFi
7
+ MQwwCgYDVQQLDANPcmcxFDASBgNVBAMMC2dpdGxhYi50ZXN0MIICIjANBgkqhkiG
8
+ 9w0BAQEFAAOCAg8AMIICCgKCAgEAykiE+PF8CBAP/k0NMHiMJ+TqMnupLl5Ypo0N
9
+ TH/Y8qFEqV4MaiGoqHwHiqY3tC0Zshe7uowS7NDnmTH/5DeNOmi/zI+FhTEHJKhP
10
+ DM5Q0MXJrUIi6eGmojB5l/3t3OBnvoFaC0zpkpg5uR8QL5RbB8Gyf5/5eCEbP3/h
11
+ R2q9JFUOEyTYEyv+1K/WegQyaLPtiPtvfTTmx1uEDfP1vuiMKuPOQ/3N8nFky1ny
12
+ 8c0P2wQv6E/qtRafKxaPbA/OmSpx0JGol43EjgOqy5FIJBT+yYP2navvAw+BvZ3k
13
+ 6qiQL6dx5pOGPAd8uxLmcj4In54IZWxs8fxUlNpcLWbo8noVxIQP2j7MAGXwGatM
14
+ eaUnyD5DmHlHS92gvHU3nKagDEuJjnBCCWtaVugeAWuW+8fJHgYbwuRQ8h/5hTWc
15
+ T80cEHDmKB/Uft4QLc65C7LQjKmfeX5qLgufk+dMmWj116csejiTFPCue0/RjSxK
16
+ C/562dbt/ZcScLXymkUiewc7FzHKExquY42I/yudoMYS9EBAyDcDE72WrUcIpECH
17
+ OMIt+EgXoDw1e/aTc5orlBIFjhknnPnP5RtrBj/OdXEgwMfD/N+ZYpY43ZIjBHWM
18
+ Zpj4YxLdBXkFJ/JG632Pp+bOgF5TgzCnV2Je6r1VMAAH8U0B105xAnyl5qtepUO5
19
+ +THpCdUCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEADFyEMU0aLOrNO60PerQ25kE9
20
+ jqzVhySyg6Pwsus7LIKTQLeo9abGmdjcbuqmBRLdxCYHbjbgW07I28YS4x4m7/ay
21
+ YAePaMRb4Qt1yyaWcPIsw57sMnoC8iqRqXJPyr8i9F+RtzoC7Hki6zORxms8TF5C
22
+ FbNB2ZBO/mbe8Lro0G1j5rxrvndQ6/OnwLQFW/VCfDDOIM7TXm6yYyiUpj3MSBay
23
+ LDJaT9N5xMxF82OjcMB0/flWFxI7QmNXTe7M6HQbp05Jyw9VCEAVflI7zkaYY329
24
+ 7XvVJbpf1A3SegqxGlF2gD31cxViYBRV7t0pO6mcwt0/iAzAVicg/qtoPUg8zFwN
25
+ xU89jk+UV5oTQc06u6CbIuF1eYy3MJGmQlCsEd/OOC9zl7xRHBA4ro3CTCH238L6
26
+ lGEi8FRombuPcv3hD9PuW/RAQ5v03lF9D7UVtEHtb2VCZ0EXL8YFRuqQpPvdPqQ+
27
+ znaohk2jKRSttvZCXw5TaWdDctDue/b70cEVPoAzXACjaX/oOau+MJvMaI7i5BXF
28
+ JhBcoXh7FXIgyDszzgGq5DxjCcpy0X5o2TGC5id8zUNBY8ek6UV3mHk2FQzYf+7C
29
+ 8Qvv++R3+Ubk5DryuuWa/R2ybemQja830Fgiab9hgvhhgCOCbmxLIKVrePenMOXc
30
+ vvjQTrP9ZinR50bKUf8=
31
+ -----END CERTIFICATE-----
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: 6.15.3
4
+ version: 6.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Grzegorz Bizon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-04 00:00:00.000000000 Z
11
+ date: 2021-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -305,11 +305,13 @@ files:
305
305
  - lib/gitlab/qa/scenario/test/integration/ldap_no_tls.rb
306
306
  - lib/gitlab/qa/scenario/test/integration/ldap_tls.rb
307
307
  - lib/gitlab/qa/scenario/test/integration/mattermost.rb
308
+ - lib/gitlab/qa/scenario/test/integration/mtls.rb
308
309
  - lib/gitlab/qa/scenario/test/integration/object_storage.rb
309
310
  - lib/gitlab/qa/scenario/test/integration/packages.rb
310
311
  - lib/gitlab/qa/scenario/test/integration/praefect.rb
311
312
  - lib/gitlab/qa/scenario/test/integration/saml.rb
312
313
  - lib/gitlab/qa/scenario/test/integration/smtp.rb
314
+ - lib/gitlab/qa/scenario/test/integration/ssh_tunnel.rb
313
315
  - lib/gitlab/qa/scenario/test/omnibus/image.rb
314
316
  - lib/gitlab/qa/scenario/test/omnibus/update.rb
315
317
  - lib/gitlab/qa/scenario/test/omnibus/upgrade.rb
@@ -320,6 +322,10 @@ files:
320
322
  - lib/gitlab/qa/support/http_request.rb
321
323
  - lib/gitlab/qa/support/invalid_response_error.rb
322
324
  - lib/gitlab/qa/version.rb
325
+ - tls_certificates/gitaly/ssl/gitaly.test.crt
326
+ - tls_certificates/gitaly/ssl/gitaly.test.key
327
+ - tls_certificates/gitaly/trusted-certs/gitaly.test.crt
328
+ - tls_certificates/gitaly/trusted-certs/gitlab.test.crt
323
329
  - tls_certificates/gitlab/gitlab.test.crt
324
330
  - tls_certificates/gitlab/gitlab.test.key
325
331
  homepage: http://about.gitlab.com