gitlab-qa 6.15.3 → 6.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +103 -32
- data/docs/what_tests_can_be_run.md +24 -1
- data/lib/gitlab/qa.rb +2 -0
- data/lib/gitlab/qa/component/gitlab.rb +12 -2
- data/lib/gitlab/qa/component/specs.rb +5 -0
- data/lib/gitlab/qa/report/generate_test_session.rb +5 -0
- data/lib/gitlab/qa/report/gitlab_issue_client.rb +1 -1
- data/lib/gitlab/qa/report/relate_failure_issue.rb +21 -9
- data/lib/gitlab/qa/report/report_as_issue.rb +5 -5
- data/lib/gitlab/qa/runtime/env.rb +29 -1
- data/lib/gitlab/qa/scenario/test/integration/mtls.rb +112 -0
- data/lib/gitlab/qa/scenario/test/integration/ssh_tunnel.rb +59 -0
- data/lib/gitlab/qa/version.rb +1 -1
- data/tls_certificates/gitaly/ssl/gitaly.test.crt +33 -0
- data/tls_certificates/gitaly/ssl/gitaly.test.key +52 -0
- data/tls_certificates/gitaly/trusted-certs/gitaly.test.crt +33 -0
- data/tls_certificates/gitaly/trusted-certs/gitlab.test.crt +31 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 014047f45483ab38a1539c030e55befbefc7ff264ea49c7e53c627aba510d5f6
|
4
|
+
data.tar.gz: bcb812ddf34170c933bbf8ca3318668bd9c31516ad0648d7928c1643c038e61e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6b61b590269a367d50aab150815ed437ec0754020443e5f1852243f938de59ac55b7777cfea5cb2b32b580b4a0f9ad97a0180dbe2a8c809cb558b93f428b03f
|
7
|
+
data.tar.gz: 90c3e08ee021157f991fcef5cc94e0a9691d2d673314f6c9dd75d6183b0b6c5c0eeeb5e7cb1fa442cee549e5d721b0af032a14dda84ad56870f40fa8107cb026
|
data/.gitlab-ci.yml
CHANGED
@@ -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
|
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" ==
|
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" ==
|
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" ==
|
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" ==
|
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" ==
|
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
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
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 ==
|
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 ==
|
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>`
|
data/lib/gitlab/qa.rb
CHANGED
@@ -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
|
-
|
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[
|
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 ==
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
107
|
-
|
118
|
+
if stacktrace_match
|
119
|
+
stacktrace_match[:stacktrace].gsub(/^\s*#.*$/, '').gsub(/^[[:space:]]+/, '').strip
|
108
120
|
else
|
109
|
-
puts " => [DEBUG] Stacktrace
|
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',
|
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,
|
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
|
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
|
-
|
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
|
data/lib/gitlab/qa/version.rb
CHANGED
@@ -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
|
+
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
|
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.
|
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:
|
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
|