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 +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
|
+
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
|
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
|