gitlab-qa 9.1.2 → 10.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +106 -149
  3. data/.simplecov +9 -0
  4. data/Gemfile.lock +15 -1
  5. data/README.md +5 -4
  6. data/docs/what_tests_can_be_run.md +73 -35
  7. data/gitlab-qa.gemspec +3 -0
  8. data/lib/gitlab/qa/component/base.rb +8 -1
  9. data/lib/gitlab/qa/component/gitaly.rb +1 -1
  10. data/lib/gitlab/qa/component/gitlab.rb +2 -2
  11. data/lib/gitlab/qa/component/mock_server.rb +13 -0
  12. data/lib/gitlab/qa/report/gitlab_issue_client.rb +1 -1
  13. data/lib/gitlab/qa/report/relate_failure_issue.rb +95 -17
  14. data/lib/gitlab/qa/report/report_as_issue.rb +1 -1
  15. data/lib/gitlab/qa/runtime/env.rb +17 -4
  16. data/lib/gitlab/qa/runtime/omnibus_configurations/decomposition_multiple_db.rb +1 -1
  17. data/lib/gitlab/qa/scenario/test/integration/oauth.rb +68 -0
  18. data/lib/gitlab/qa/scenario/test/omnibus/update_from_previous.rb +3 -2
  19. data/lib/gitlab/qa/version.rb +1 -1
  20. data/scripts/build-package-and-test-env +15 -0
  21. metadata +47 -47
  22. data/.gitlab/ci/jobs/airgapped.gitlab-ci.yml +0 -23
  23. data/.gitlab/ci/jobs/base.gitlab-ci.yml +0 -273
  24. data/.gitlab/ci/jobs/chaos.gitlab-ci.yml +0 -22
  25. data/.gitlab/ci/jobs/cloud_activation.gitlab-ci.yml +0 -24
  26. data/.gitlab/ci/jobs/custom_parallel.gitlab-ci.yml +0 -21
  27. data/.gitlab/ci/jobs/decomposition_multiple_db.gitlab-ci.yml +0 -27
  28. data/.gitlab/ci/jobs/decomposition_single_db.gitlab-ci.yml +0 -25
  29. data/.gitlab/ci/jobs/ee_previous_to_ce_update.gitlab-ci.yml +0 -18
  30. data/.gitlab/ci/jobs/elasticsearch.gitlab-ci.yml +0 -20
  31. data/.gitlab/ci/jobs/geo.gitlab-ci.yml +0 -18
  32. data/.gitlab/ci/jobs/gitaly_cluster.gitlab-ci.yml +0 -41
  33. data/.gitlab/ci/jobs/gitlab_pages.gitlab-ci.yml +0 -19
  34. data/.gitlab/ci/jobs/group_saml.gitlab-ci.yml +0 -20
  35. data/.gitlab/ci/jobs/instance.gitlab-ci.yml +0 -55
  36. data/.gitlab/ci/jobs/instance_saml.gitlab-ci.yml +0 -41
  37. data/.gitlab/ci/jobs/integrations.gitlab-ci.yml +0 -14
  38. data/.gitlab/ci/jobs/jira.gitlab-ci.yml +0 -41
  39. data/.gitlab/ci/jobs/large_setup.gitlab-ci.yml +0 -19
  40. data/.gitlab/ci/jobs/ldap_no_server.gitlab-ci.yml +0 -20
  41. data/.gitlab/ci/jobs/ldap_no_tls.gitlab-ci.yml +0 -41
  42. data/.gitlab/ci/jobs/ldap_tls.gitlab-ci.yml +0 -41
  43. data/.gitlab/ci/jobs/mattermost.gitlab-ci.yml +0 -41
  44. data/.gitlab/ci/jobs/metrics.gitlab-ci.yml +0 -41
  45. data/.gitlab/ci/jobs/mtls.gitlab-ci.yml +0 -19
  46. data/.gitlab/ci/jobs/object_storage.gitlab-ci.yml +0 -49
  47. data/.gitlab/ci/jobs/object_storage_aws.gitlab-ci.yml +0 -25
  48. data/.gitlab/ci/jobs/object_storage_gcs.gitlab-ci.yml +0 -23
  49. data/.gitlab/ci/jobs/object_storage_registry_tls.gitlab-ci.yml +0 -41
  50. data/.gitlab/ci/jobs/omnibus_image.gitlab-ci.yml +0 -15
  51. data/.gitlab/ci/jobs/omnibus_upgrade.gitlab-ci.yml +0 -28
  52. data/.gitlab/ci/jobs/opensearch.gitlab-ci.yml +0 -20
  53. data/.gitlab/ci/jobs/packages.gitlab-ci.yml +0 -25
  54. data/.gitlab/ci/jobs/praefect.gitlab-ci.yml +0 -71
  55. data/.gitlab/ci/jobs/registry.gitlab-ci.yml +0 -41
  56. data/.gitlab/ci/jobs/registry_with_cdn.gitlab-ci.yml +0 -55
  57. data/.gitlab/ci/jobs/relative_url.gitlab-ci.yml +0 -65
  58. data/.gitlab/ci/jobs/repository_storage.gitlab-ci.yml +0 -41
  59. data/.gitlab/ci/jobs/sanity_framework.gitlab-ci.yml +0 -24
  60. data/.gitlab/ci/jobs/service_ping_disabled.gitlab-ci.yml +0 -19
  61. data/.gitlab/ci/jobs/smtp.gitlab-ci.yml +0 -19
  62. data/.gitlab/ci/jobs/staging.gitlab-ci.yml +0 -10
  63. data/.gitlab/ci/jobs/update.gitlab-ci.yml +0 -60
  64. data/.gitlab/ci/rules.gitlab-ci.yml +0 -183
  65. data/lib/gitlab/qa/scenario/test/omnibus/update.rb +0 -72
  66. data/scripts/generate-qa-jobs.rb +0 -99
@@ -1,65 +0,0 @@
1
- ce:relative_url-parallel:
2
- extends:
3
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified
4
- - .test
5
- - .high-capacity
6
- - .ce-variables
7
- - .rspec-report-opts
8
- parallel: 5
9
- variables:
10
- QA_SCENARIO: "Test::Instance::RelativeUrl"
11
-
12
- ee:relative_url-parallel:
13
- extends:
14
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified
15
- - .test
16
- - .high-capacity
17
- - .ee-variables
18
- - .rspec-report-opts
19
- parallel: 5
20
- variables:
21
- QA_SCENARIO: "Test::Instance::RelativeUrl"
22
-
23
- ce:relative_url:
24
- extends:
25
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified
26
- - .test
27
- - .high-capacity
28
- - .ce-variables
29
- - .rspec-report-opts
30
- variables:
31
- QA_SCENARIO: "Test::Instance::RelativeUrl"
32
-
33
- ee:relative_url:
34
- extends:
35
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified
36
- - .test
37
- - .high-capacity
38
- - .ee-variables
39
- - .rspec-report-opts
40
- variables:
41
- QA_SCENARIO: "Test::Instance::RelativeUrl"
42
-
43
- ce:relative_url-quarantine:
44
- extends:
45
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change
46
- - .test
47
- - .high-capacity
48
- - .ce-variables
49
- - .quarantine
50
- - .rspec-report-opts
51
- variables:
52
- QA_SCENARIO: "Test::Instance::RelativeUrl"
53
- QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
54
-
55
- ee:relative_url-quarantine:
56
- extends:
57
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change
58
- - .test
59
- - .high-capacity
60
- - .ee-variables
61
- - .quarantine
62
- - .rspec-report-opts
63
- variables:
64
- QA_SCENARIO: "Test::Instance::RelativeUrl"
65
- QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
@@ -1,41 +0,0 @@
1
- ce:repository_storage:
2
- extends:
3
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change
4
- - .test
5
- - .high-capacity
6
- - .ce-variables
7
- - .rspec-report-opts
8
- variables:
9
- QA_SCENARIO: "Test::Instance::RepositoryStorage"
10
-
11
- ce:repository_storage-quarantine:
12
- extends:
13
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change
14
- - .test
15
- - .high-capacity
16
- - .ce-variables
17
- - .quarantine
18
- - .rspec-report-opts
19
- variables:
20
- QA_SCENARIO: "Test::Instance::RepositoryStorage"
21
-
22
- ee:repository_storage:
23
- extends:
24
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change
25
- - .test
26
- - .high-capacity
27
- - .ee-variables
28
- - .rspec-report-opts
29
- variables:
30
- QA_SCENARIO: "Test::Instance::RepositoryStorage"
31
-
32
- ee:repository_storage-quarantine:
33
- extends:
34
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change
35
- - .test
36
- - .high-capacity
37
- - .ee-variables
38
- - .quarantine
39
- - .rspec-report-opts
40
- variables:
41
- QA_SCENARIO: "Test::Instance::RepositoryStorage"
@@ -1,24 +0,0 @@
1
- # Do not generate allure report since it always adds a failed test to the report. The job runs a test where 1 example would always fail and assert exit code via custom script bin/expect_exit_code_and_text
2
- ce:sanity-framework:
3
- variables:
4
- QA_GENERATE_ALLURE_REPORT: "false"
5
- QA_EXPORT_TEST_METRICS: "false"
6
- script:
7
- - ./bin/expect_exit_code_and_text "bundle exec exe/gitlab-qa Test::Instance::Image ${RELEASE:=CE} -- --tag framework" 1 "1 failure"
8
- extends:
9
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change
10
- - .test
11
- - .high-capacity
12
- - .ce-variables
13
-
14
- ee:sanity-framework:
15
- variables:
16
- QA_GENERATE_ALLURE_REPORT: "false"
17
- QA_EXPORT_TEST_METRICS: "false"
18
- script:
19
- - ./bin/expect_exit_code_and_text "bundle exec exe/gitlab-qa Test::Instance::Image ${RELEASE:=EE} -- --tag framework" 1 "1 failure"
20
- extends:
21
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change
22
- - .test
23
- - .high-capacity
24
- - .ee-variables
@@ -1,19 +0,0 @@
1
- ce:service_ping_disabled:
2
- extends:
3
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change
4
- - .test
5
- - .high-capacity
6
- - .ce-variables
7
- - .rspec-report-opts
8
- variables:
9
- QA_SCENARIO: "Test::Integration::ServicePingDisabled"
10
-
11
- ee:service_ping_disabled:
12
- extends:
13
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change
14
- - .test
15
- - .high-capacity
16
- - .ee-variables
17
- - .rspec-report-opts
18
- variables:
19
- QA_SCENARIO: "Test::Integration::ServicePingDisabled"
@@ -1,19 +0,0 @@
1
- ce:smtp:
2
- extends:
3
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change
4
- - .test
5
- - .high-capacity
6
- - .ce-variables
7
- - .rspec-report-opts
8
- variables:
9
- QA_SCENARIO: "Test::Integration::SMTP"
10
-
11
- ee:smtp:
12
- extends:
13
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change
14
- - .test
15
- - .high-capacity
16
- - .ee-variables
17
- - .rspec-report-opts
18
- variables:
19
- QA_SCENARIO: "Test::Integration::SMTP"
@@ -1,10 +0,0 @@
1
- staging:
2
- script:
3
- - unset EE_LICENSE
4
- - 'echo "Running: bundle exec exe/gitlab-qa Test::Instance::Staging ${RELEASE:=$DEFAULT_RELEASE} -- $QA_TESTS $QA_RSPEC_TAGS"'
5
- - bundle exec exe/gitlab-qa Test::Instance::Staging ${RELEASE:=$DEFAULT_RELEASE} -- $QA_TESTS $QA_RSPEC_TAGS
6
- extends:
7
- - .rules:only-qa-never-when-triggered-by-feature-flag-definition-change
8
- - .test
9
- - .high-capacity
10
- allow_failure: true
@@ -1,60 +0,0 @@
1
- ce:update-parallel:
2
- extends:
3
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified
4
- - .test
5
- - .high-capacity
6
- - .ce-variables
7
- - .rspec-report-opts
8
- - .update-scenario-script
9
- parallel: 5
10
-
11
- ce:update:
12
- extends:
13
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified
14
- - .test
15
- - .high-capacity
16
- - .ce-variables
17
- - .rspec-report-opts
18
- - .update-scenario-script
19
-
20
- ce:update-quarantine:
21
- extends:
22
- - .rules:ce-never-when-triggered-by-feature-flag-definition-change
23
- - .test
24
- - .high-capacity
25
- - .ce-variables
26
- - .quarantine
27
- - .rspec-report-opts
28
- - .update-scenario-script
29
- variables:
30
- QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
31
-
32
- ee:update-parallel:
33
- extends:
34
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified
35
- - .test
36
- - .high-capacity
37
- - .ee-variables
38
- - .rspec-report-opts
39
- - .update-scenario-script
40
- parallel: 10
41
-
42
- ee:update:
43
- extends:
44
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified
45
- - .test
46
- - .high-capacity
47
- - .ee-variables
48
- - .rspec-report-opts
49
- - .update-scenario-script
50
-
51
- ee:update-quarantine:
52
- extends:
53
- - .rules:ee-never-when-triggered-by-feature-flag-definition-change
54
- - .test
55
- - .high-capacity
56
- - .ee-variables
57
- - .quarantine
58
- - .rspec-report-opts
59
- variables:
60
- QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
@@ -1,183 +0,0 @@
1
- ##############
2
- # Conditions #
3
- ##############
4
- .if-default-refs-or-ce: &if-default-refs-or-ce
5
- if: '$RELEASE == null || $RELEASE == "" || $RELEASE =~ /gitlab-ce/ || $CI_MERGE_REQUEST_ID || $CI_COMMIT_REF_NAME == "master"'
6
-
7
- .if-default-refs-or-ee: &if-default-refs-or-ee
8
- if: '$RELEASE == null || $RELEASE == "" || $RELEASE =~ /gitlab-ee/ || $CI_MERGE_REQUEST_ID || $CI_COMMIT_REF_NAME == "master"'
9
-
10
- .if-default-refs-or-ce-or-ee: &if-default-refs-or-ce-or-ee
11
- if: '$RELEASE == null || $RELEASE == "" || $RELEASE =~ /gitlab-ce|gitlab-ee/ || $CI_MERGE_REQUEST_ID || $CI_COMMIT_REF_NAME == "master"'
12
-
13
- # In trigger jobs, such as `trigger-generated-jobs`, if a variable does not have a value set, the job will receive it literally as is i.e., "$RELEASE" in this case.
14
- .if-not-gitlab-qa-release: &if-not-gitlab-qa-release
15
- if: '$CI_SERVER_HOST == "gitlab.com" && $CI_PROJECT_PATH == "gitlab-org/gitlab-qa" && ($RELEASE == null || $RELEASE == "" || $RELEASE == "$RELEASE")'
16
-
17
- .if-staging-and-not-release: &if-staging-and-not-release
18
- if: '($RELEASE == null || $RELEASE == "") && $CI_JOB_NAME =~ /staging/'
19
-
20
- .if-quarantine-or-custom-and-not-release: &if-quarantine-or-custom-and-not-release
21
- if: '($RELEASE == null || $RELEASE == "") && $CI_JOB_NAME =~ /quarantine|custom/'
22
-
23
- .if-quarantine-or-custom-and-ee-release: &if-quarantine-or-custom-and-ee-release
24
- if: '$RELEASE =~ /gitlab-ee/ && $CI_JOB_NAME =~ /quarantine|custom/'
25
-
26
- .if-quarantine-or-custom-and-ce-release: &if-quarantine-or-custom-and-ce-release
27
- if: '$RELEASE =~ /gitlab-ce/ && $CI_JOB_NAME =~ /quarantine|custom/'
28
-
29
- .if-quarantine-or-custom-and-merge-request: &if-quarantine-or-custom-and-merge-request
30
- if: '$CI_MERGE_REQUEST_ID && $CI_JOB_NAME =~ /quarantine|custom/'
31
-
32
- .if-tag-or-ee-release: &if-tag-or-ee-release
33
- if: '$CI_COMMIT_TAG || $RELEASE =~ /gitlab-ee/'
34
-
35
- .if-tag-or-ce-release: &if-tag-or-ce-release
36
- if: '$CI_COMMIT_TAG || $RELEASE =~ /gitlab-ce/'
37
-
38
- .if-tag-or-release: &if-tag-or-release
39
- if: '$CI_COMMIT_TAG || ($RELEASE != null && $RELEASE != "")'
40
-
41
- .if-set-feature-flag: &if-set-feature-flag
42
- if: '$GITLAB_QA_OPTIONS =~ /--set-feature-flags/'
43
-
44
- .if-qa-tests-specified: &if-qa-tests-specified
45
- if: '$QA_TESTS != null && $QA_TESTS != ""'
46
-
47
- .if-qa-tests-not-specified: &if-qa-tests-not-specified
48
- if: '$QA_TESTS == null || $QA_TESTS == ""'
49
-
50
- #########
51
- # Rules #
52
- #########
53
-
54
- .rules:ce-qa:
55
- rules:
56
- - <<: *if-not-gitlab-qa-release
57
- changes: ["lib/**/version.rb"]
58
- when: never
59
- - <<: *if-tag-or-ee-release
60
- when: never
61
- - <<: *if-quarantine-or-custom-and-not-release
62
- when: manual
63
- - <<: *if-quarantine-or-custom-and-ce-release
64
- when: manual
65
- - <<: *if-quarantine-or-custom-and-merge-request
66
- when: manual
67
- - <<: *if-default-refs-or-ce
68
-
69
- .rules:ee-qa:
70
- rules:
71
- - <<: *if-not-gitlab-qa-release
72
- changes: ["lib/**/version.rb"]
73
- when: never
74
- - <<: *if-tag-or-ce-release
75
- when: never
76
- - <<: *if-quarantine-or-custom-and-not-release
77
- when: manual
78
- - <<: *if-quarantine-or-custom-and-ee-release
79
- when: manual
80
- - <<: *if-quarantine-or-custom-and-merge-request
81
- when: manual
82
- - <<: *if-default-refs-or-ee
83
-
84
- .rules:never-on-version-change-or-tag:
85
- rules:
86
- - <<: *if-not-gitlab-qa-release
87
- changes: ["lib/**/version.rb"]
88
- when: never
89
- - if: '$CI_COMMIT_TAG'
90
- when: never
91
- - <<: *if-default-refs-or-ce-or-ee
92
-
93
- .rules:only-qa:
94
- rules:
95
- - <<: *if-not-gitlab-qa-release
96
- changes: ["lib/**/version.rb"]
97
- when: never
98
- - <<: *if-tag-or-release
99
- when: never
100
- - <<: *if-staging-and-not-release
101
- when: manual
102
-
103
- .rules:ce-never-when-triggered-by-feature-flag-definition-change:
104
- rules:
105
- - <<: *if-set-feature-flag
106
- when: never
107
- - !reference [".rules:ce-qa", rules]
108
-
109
- .rules:ee-never-when-triggered-by-feature-flag-definition-change:
110
- rules:
111
- - <<: *if-set-feature-flag
112
- when: never
113
- - !reference [".rules:ee-qa", rules]
114
-
115
- .rules:only-qa-never-when-triggered-by-feature-flag-definition-change:
116
- rules:
117
- - <<: *if-set-feature-flag
118
- when: never
119
- - !reference [".rules:only-qa", rules]
120
-
121
- # === When QA_TESTS variable has a value ===
122
-
123
- .rules:ce-never-when-qa-tests-specified:
124
- rules:
125
- - <<: *if-qa-tests-specified
126
- when: never
127
- - !reference [".rules:ce-qa", rules]
128
-
129
- .rules:ee-never-when-qa-tests-specified:
130
- rules:
131
- - <<: *if-qa-tests-specified
132
- when: never
133
- - !reference [".rules:ee-qa", rules]
134
-
135
- .rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified:
136
- rules:
137
- - <<: *if-qa-tests-specified
138
- when: never
139
- - !reference [".rules:ce-never-when-triggered-by-feature-flag-definition-change", rules]
140
-
141
- .rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified:
142
- rules:
143
- - <<: *if-qa-tests-specified
144
- when: never
145
- - !reference [".rules:ee-never-when-triggered-by-feature-flag-definition-change", rules]
146
-
147
- .rules:only-qa-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-specified:
148
- rules:
149
- - <<: *if-qa-tests-specified
150
- when: never
151
- - !reference [".rules:only-qa-never-when-triggered-by-feature-flag-definition-change", rules]
152
-
153
- # === When QA_TESTS variable does not have a value ===
154
-
155
- .rules:ce-never-when-qa-tests-not-specified:
156
- rules:
157
- - <<: *if-qa-tests-not-specified
158
- when: never
159
- - !reference [".rules:ce-qa", rules]
160
-
161
- .rules:ee-never-when-qa-tests-not-specified:
162
- rules:
163
- - <<: *if-qa-tests-not-specified
164
- when: never
165
- - !reference [".rules:ee-qa", rules]
166
-
167
- .rules:ce-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified:
168
- rules:
169
- - <<: *if-qa-tests-not-specified
170
- when: never
171
- - !reference [".rules:ce-never-when-triggered-by-feature-flag-definition-change", rules]
172
-
173
- .rules:ee-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified:
174
- rules:
175
- - <<: *if-qa-tests-not-specified
176
- when: never
177
- - !reference [".rules:ee-never-when-triggered-by-feature-flag-definition-change", rules]
178
-
179
- .rules:only-qa-never-when-triggered-by-feature-flag-definition-change-and-never-when-qa-tests-not-specified:
180
- rules:
181
- - <<: *if-qa-tests-not-specified
182
- when: never
183
- - !reference [".rules:only-qa-never-when-triggered-by-feature-flag-definition-change", rules]
@@ -1,72 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'tmpdir'
4
- require 'fileutils'
5
-
6
- module Gitlab
7
- module QA
8
- module Scenario
9
- module Test
10
- module Omnibus
11
- class Update < Scenario::Template
12
- def perform(from_release, to_release = nil, *rspec_args)
13
- version = Component::Gitlab.perform do |gitlab|
14
- gitlab.release = from_release
15
- gitlab.act do
16
- pull
17
- package_version
18
- end
19
- end
20
-
21
- if version
22
- # Sub any plus symbols in version eg. "15.1.2+ce.0"
23
- version.tr!('+', '-')
24
- Runtime::Logger.info("Found previous version '#{version}'")
25
-
26
- current_release = QA::Release.new(to_release || from_release)
27
-
28
- type = current_release.ee? ? 'ee' : 'ce'
29
-
30
- existing_previous = Component::Gitlab.perform do |gitlab|
31
- gitlab.act do
32
- next "gitlab/gitlab-#{type}:#{version}" if exist?("gitlab/gitlab-#{type}", version)
33
-
34
- next "gitlab/gitlab-#{type}:#{version}-#{type}.0" if exist?("gitlab/gitlab-#{type}", "#{version}-#{type}.0")
35
-
36
- nil
37
- end
38
- end
39
- else
40
- Runtime::Logger.info("Could not find previous image version")
41
- existing_previous = nil
42
- end
43
-
44
- previous_release = if existing_previous
45
- Runtime::Logger.info("Using previous image '#{existing_previous}'")
46
- QA::Release.new(existing_previous)
47
- else
48
- Runtime::Logger.info("Using stable as previous image")
49
- QA::Release.new(from_release).previous_stable
50
- end
51
-
52
- Docker::Volumes.new.with_temporary_volumes do |volumes|
53
- Component::Gitlab.perform do |gitlab|
54
- gitlab.release = previous_release
55
- gitlab.volumes = volumes
56
- gitlab.network = 'test'
57
- gitlab.seed_admin_token = false
58
- gitlab.launch_and_teardown_instance
59
- end
60
-
61
- Scenario::Test::Instance::Image
62
- .perform(current_release, *rspec_args) do |scenario|
63
- scenario.volumes = volumes
64
- end
65
- end
66
- end
67
- end
68
- end
69
- end
70
- end
71
- end
72
- end
@@ -1,99 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require 'yaml'
5
-
6
- class GenerateQAJobs
7
- def initialize(no_of_example_files)
8
- @no_of_example_files = no_of_example_files
9
- puts "no_of_example_files: #{@no_of_example_files}"
10
- end
11
-
12
- # rubocop:disable Metrics/AbcSize
13
- def execute
14
- jobs = load_yml_contents('base')
15
- jobs.merge!(load_yml_contents('sanity_framework'))
16
- jobs.merge!(load_yml_contents('custom_parallel'))
17
- jobs.merge!(load_yml_contents('instance', should_automatically_run?('test_instance_all')))
18
- jobs.merge!(load_yml_contents('relative_url', should_automatically_run?('test_instance_all')))
19
- jobs.merge!(load_yml_contents('decomposition_single_db', should_automatically_run?('test_instance_all')))
20
- jobs.merge!(load_yml_contents('decomposition_multiple_db', should_automatically_run?('test_instance_all')))
21
- jobs.merge!(load_yml_contents('repository_storage', should_automatically_run?('test_instance_all_repository_storage')))
22
- jobs.merge!(load_yml_contents('omnibus_image'))
23
- jobs.merge!(load_yml_contents('update', should_automatically_run?('test_instance_all')))
24
- jobs.merge!(load_yml_contents('omnibus_upgrade'))
25
- jobs.merge!(load_yml_contents('ee_previous_to_ce_update'))
26
- jobs.merge!(load_yml_contents('airgapped', should_automatically_run?('test_instance_all')))
27
- jobs.merge!(load_yml_contents('mattermost', should_automatically_run?('test_integration_mattermost')))
28
- jobs.merge!(load_yml_contents('service_ping_disabled', should_automatically_run?('test_integration_servicepingdisabled')))
29
- jobs.merge!(load_yml_contents('ldap_no_tls', should_automatically_run?('test_integration_ldapnotls')))
30
- jobs.merge!(load_yml_contents('ldap_tls', should_automatically_run?('test_integration_ldaptls')))
31
- jobs.merge!(load_yml_contents('ldap_no_server', should_automatically_run?('test_integration_ldapnoserver')))
32
- jobs.merge!(load_yml_contents('instance_saml', should_automatically_run?('test_integration_instancesaml')))
33
- jobs.merge!(load_yml_contents('group_saml', should_automatically_run?('test_integration_groupsaml')))
34
- jobs.merge!(load_yml_contents('object_storage', should_automatically_run?('test_instance_all_object_storage')))
35
- jobs.merge!(load_yml_contents('object_storage_aws', should_automatically_run?('test_instance_all_object_storage')))
36
- jobs.merge!(load_yml_contents('object_storage_gcs', should_automatically_run?('test_instance_all_object_storage')))
37
- jobs.merge!(load_yml_contents('object_storage_registry_tls', should_automatically_run?('test_integration_registrytls')))
38
- jobs.merge!(load_yml_contents('registry', should_automatically_run?('test_integration_registry')))
39
- jobs.merge!(load_yml_contents('packages', should_automatically_run?('test_instance_all_packages')))
40
- jobs.merge!(load_yml_contents('elasticsearch', should_automatically_run?('test_integration_elasticsearch')))
41
- jobs.merge!(load_yml_contents('opensearch', should_automatically_run?('test_integration_opensearch')))
42
- jobs.merge!(load_yml_contents('praefect', should_automatically_run?('test_instance_all')))
43
- jobs.merge!(load_yml_contents('gitaly_cluster', should_automatically_run?('test_instance_all')))
44
- jobs.merge!(load_yml_contents('gitlab_pages', should_automatically_run?('test_instance_all_gitlab_pages')))
45
- jobs.merge!(load_yml_contents('mtls', should_automatically_run?('test_instance_all_mtls')))
46
- jobs.merge!(load_yml_contents('smtp', should_automatically_run?('test_integration_smtp')))
47
- jobs.merge!(load_yml_contents('jira', should_automatically_run?('test_instance_all_jira')))
48
- jobs.merge!(load_yml_contents('integrations', should_automatically_run?('test_instance_all_integrations')))
49
- jobs.merge!(load_yml_contents('large_setup', should_automatically_run?('test_instance_all_can_use_large_setup')))
50
- jobs.merge!(load_yml_contents('cloud_activation', should_automatically_run?('test_instance_all_cloud_activation')))
51
- jobs.merge!(load_yml_contents('registry_with_cdn', should_automatically_run?('test_integration_registrywithcdn')))
52
- jobs.merge!(load_yml_contents('chaos', should_automatically_run?('test_integration_chaos')))
53
- jobs.merge!(load_yml_contents('staging'))
54
- jobs.merge!(load_yml_contents('metrics', should_automatically_run?('test_instance_all_metrics')))
55
-
56
- # Disabling geo jobs temporarily due to https://gitlab.com/gitlab-org/quality/team-tasks/-/issues/774
57
- # jobs.merge!(load_yml_contents('geo', should_automatically_run?('scenario_test_geo')))
58
-
59
- yaml_string = jobs.to_yaml
60
- de_stringify_reference(yaml_string)
61
-
62
- yaml_string
63
- end
64
-
65
- # rubocop:enable Metrics/AbcSize
66
-
67
- private
68
-
69
- def should_automatically_run?(example_file_name)
70
- @no_of_example_files.include?(example_file_name)
71
- end
72
-
73
- def load_yml_contents(file_prefix, automatic = true)
74
- jobs_dir_path = File.expand_path('../.gitlab/ci/jobs', __dir__)
75
- file_contents = File.read(File.join(jobs_dir_path, "#{file_prefix}.gitlab-ci.yml"))
76
-
77
- # Enclose !reference in double quotes at it is not supported with YAML.load
78
- stringify_reference(file_contents)
79
- yaml_hash = YAML.safe_load(file_contents)
80
-
81
- yaml_hash.each { |key, value| value.merge!("when" => "manual") } unless automatic
82
-
83
- yaml_hash
84
- end
85
-
86
- def stringify_reference(str)
87
- match_data = str.match(/!reference \[[a-zA-Z_, ]*\]/)
88
- str.gsub!(match_data[0], "\"#{match_data[0]}\"") if match_data
89
- end
90
-
91
- def de_stringify_reference(str)
92
- match_data = str.match(/"(!reference \[[a-zA-Z_, ]*\])"/)
93
- str.gsub!(match_data[0], match_data[1]) if match_data
94
- end
95
- end
96
-
97
- jobs = GenerateQAJobs.new(Dir.glob('no_of_examples/*').map { |s| File.basename(s, '.*') }).execute
98
-
99
- File.open('generated-qa-jobs.yml', 'w') { |f| f.write(jobs) }