gitlab-qa 7.8.4 → 7.9.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c8e6f385001950cb2511426d82a6acac3c3615683b8dbd48214df976c6fb07d5
4
- data.tar.gz: 51de85c6c9c5dca24ba24961d45005d9ff2bbe168d7a8819f54ee6412ab0abcd
3
+ metadata.gz: 92a2005951e787030d65328cb79b2648d3f924e160c4d9ce29a74620b6605f6f
4
+ data.tar.gz: 1684b8e6c59f4b4a0c745212492d201439c5ba592284a6661dad2335ae1db242
5
5
  SHA512:
6
- metadata.gz: e4ee08298871f1dff0ce9e0c007ac1c7e6d643fd13161f38beac5a59574a43931abf87a904488ba1b9e6037d451b22ad151b10afed9df41ed68bf39b1500e18e
7
- data.tar.gz: 266d10c931d8762dcfb34e9aa07f44a38dd1656cccbdd38a7e559ce04d8fec2144f5156f8b8cc4a372db9420a064940861e17146e78d77c0966cbd497e5a4001
6
+ metadata.gz: e00789509550eb418e7f1d3a274ece9ee372a20c147af0cacd6eb25c0e6b2c9ba46124a3fe63b5957d5fa6b18d3ef115576f0057caa5ce0f26513f73cf34a632
7
+ data.tar.gz: ef94d1f6ec4e1f7fde22aaf8da43992d9e3f4bec7d508f80f534429196cf5816e7a61678ea849d1d39b3ca74d07b610c131c66f2e096dde098d8fe7c0df137a0
data/.gitlab-ci.yml CHANGED
@@ -55,7 +55,7 @@ variables:
55
55
  .check-base:
56
56
  stage: check
57
57
  script:
58
- - bundle exec $CI_JOB_NAME
58
+ - bundle exec $CI_JOB_NAME --color
59
59
 
60
60
  rubocop:
61
61
  extends: .check-base
@@ -78,8 +78,31 @@ rspec:
78
78
  reports:
79
79
  junit: gitlab-qa-run-*/**/rspec-*.xml
80
80
  script:
81
- - 'echo "Running: bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS"'
82
- - bundle exec 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=$?
81
+ - 'echo "Running: bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS"'
82
+ - bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS || test_run_exit_code=$?
83
+ - bundle exec exe/gitlab-qa-report --update-screenshot-path "gitlab-qa-run-*/**/rspec-*.xml"
84
+ - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
85
+ - 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
86
+ - exit $test_run_exit_code
87
+
88
+ # For jobs that shouldn't report results in issues, e.g., manually run custom jobs
89
+ .no-issue-report-script:
90
+ script:
91
+ - 'echo "Running: bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS"'
92
+ - bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS
93
+
94
+ # For jobs that provide additional GITLAB_QA_OPTIONS, e.g., jobs that include --omnibus-config
95
+ .combined-gitlab-qa-options-script:
96
+ script:
97
+ - 'echo "Running: bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS_COMBINED -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS"'
98
+ - bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS_COMBINED -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS
99
+
100
+ # The Test::Omnibus::Update scenarios require the release to be specified twice, which can't be done dynamically using the `variables` parameter
101
+ # So instead we can use this script with two release variables
102
+ .update-scenario-script:
103
+ script:
104
+ - 'echo "Running: bundle exec exe/gitlab-qa Test::Omnibus::Update ${RELEASE:=$DEFAULT_RELEASE} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS"'
105
+ - bundle exec exe/gitlab-qa Test::Omnibus::Update ${RELEASE:=$DEFAULT_RELEASE} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTIONS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS || test_run_exit_code=$?
83
106
  - bundle exec exe/gitlab-qa-report --update-screenshot-path "gitlab-qa-run-*/**/rspec-*.xml"
84
107
  - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
85
108
  - 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
@@ -177,28 +200,23 @@ ee:sanity-framework:
177
200
  - .high-capacity
178
201
  - .ee-qa
179
202
 
180
- # The custom jobs are for manually running specific/alternative tests in MRs, so we don't report them in issues
181
203
  ce:custom-parallel:
182
- script:
183
- - 'echo "Running: bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS"'
184
- - bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS
185
204
  extends:
186
205
  - .test
187
206
  - .high-capacity
188
207
  - .ce-qa
189
208
  - .rspec-report-opts
209
+ - .no-issue-report-script
190
210
  allow_failure: true
191
211
  parallel: 10
192
212
 
193
213
  ee:custom-parallel:
194
- script:
195
- - 'echo "Running: bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS"'
196
- - bundle exec exe/gitlab-qa ${QA_SCENARIO:=Test::Instance::Image} ${RELEASE:=$DEFAULT_RELEASE} $GITLAB_QA_OPTS -- $QA_TESTS $QA_RSPEC_TAGS $RSPEC_REPORT_OPTS
197
214
  extends:
198
215
  - .test
199
216
  - .high-capacity
200
217
  - .ee-qa
201
218
  - .rspec-report-opts
219
+ - .no-issue-report-script
202
220
  allow_failure: true
203
221
  parallel: 10
204
222
 
@@ -337,61 +355,46 @@ ee:image:
337
355
  - .test
338
356
  - .ee-qa
339
357
 
340
- # The Test::Omnibus::Update scenarios require the release to be specified twice, which can't be done dynamically using the `variables` parameter
341
- # So instead we include the script here again, with two release variables
342
358
  ce:update:
343
- script:
344
- - bundle exec exe/gitlab-qa Test::Omnibus::Update ${RELEASE:=CE} ${RELEASE:=CE} -- $RSPEC_REPORT_OPTS || test_run_exit_code=$?
345
- - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
346
- - 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
347
- - exit $test_run_exit_code
348
359
  extends:
349
360
  - .test
350
361
  - .high-capacity
351
362
  - .ce-qa
352
363
  - .rspec-report-opts
353
364
  - .knapsack-variables
365
+ - .update-scenario-script
354
366
  parallel: 5
355
367
 
356
368
  ce:update-quarantine:
357
- script:
358
- - bundle exec exe/gitlab-qa Test::Omnibus::Update ${RELEASE:=CE} ${RELEASE:=CE} -- --tag quarantine --tag ~orchestrated $RSPEC_REPORT_OPTS || test_run_exit_code=$?
359
- - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
360
- - 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
361
- - exit $test_run_exit_code
362
369
  extends:
363
370
  - .test
364
371
  - .high-capacity
365
372
  - .ce-qa
366
373
  - .quarantine
367
374
  - .rspec-report-opts
375
+ - .update-scenario-script
376
+ variables:
377
+ QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
368
378
 
369
379
  ee:update:
370
- script:
371
- - bundle exec exe/gitlab-qa Test::Omnibus::Update ${RELEASE:=EE} ${RELEASE:=EE} -- $RSPEC_REPORT_OPTS || test_run_exit_code=$?
372
- - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
373
- - 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
374
- - exit $test_run_exit_code
375
380
  extends:
376
381
  - .test
377
382
  - .high-capacity
378
383
  - .ee-qa
379
384
  - .rspec-report-opts
380
385
  - .knapsack-variables
386
+ - .update-scenario-script
381
387
  parallel: 10
382
388
 
383
389
  ee:update-quarantine:
384
- script:
385
- - bundle exec exe/gitlab-qa Test::Omnibus::Update ${RELEASE:=EE} ${RELEASE:=EE} -- --tag quarantine --tag ~orchestrated $RSPEC_REPORT_OPTS || test_run_exit_code=$?
386
- - export GITLAB_QA_ACCESS_TOKEN="$GITLAB_QA_PRODUCTION_ACCESS_TOKEN"
387
- - 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
388
- - exit $test_run_exit_code
389
390
  extends:
390
391
  - .test
391
392
  - .high-capacity
392
393
  - .ee-qa
393
394
  - .quarantine
394
395
  - .rspec-report-opts
396
+ variables:
397
+ QA_RSPEC_TAGS: "--tag quarantine --tag ~orchestrated"
395
398
 
396
399
  # The Test::Omnibus::Upgrade scenario isn't run on master (because it always uses the latest CE/EE image) so we don't report the test results in issues
397
400
  ce:upgrade:
@@ -648,8 +651,9 @@ ce:object_storage:
648
651
  - .high-capacity
649
652
  - .ce-qa
650
653
  - .rspec-report-opts
654
+ - .combined-gitlab-qa-options-script
651
655
  variables:
652
- GITLAB_QA_OPTS: "--omnibus-config object_storage"
656
+ GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config object_storage"
653
657
 
654
658
  ce:object_storage-quarantine:
655
659
  extends:
@@ -658,8 +662,9 @@ ce:object_storage-quarantine:
658
662
  - .ce-qa
659
663
  - .quarantine
660
664
  - .rspec-report-opts
665
+ - .combined-gitlab-qa-options-script
661
666
  variables:
662
- GITLAB_QA_OPTS: "--omnibus-config object_storage"
667
+ GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config object_storage"
663
668
 
664
669
  ee:object_storage_aws:
665
670
  extends:
@@ -667,11 +672,34 @@ ee:object_storage_aws:
667
672
  - .high-capacity
668
673
  - .ee-qa
669
674
  - .rspec-report-opts
675
+ - .combined-gitlab-qa-options-script
670
676
  variables:
671
- GITLAB_QA_OPTS: "--omnibus-config object_storage_aws"
677
+ GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config object_storage_aws"
672
678
  QA_RSPEC_TAGS: "--tag object_storage"
673
679
 
674
680
  ee:object_storage_aws-quarantine:
681
+ extends:
682
+ - .test
683
+ - .high-capacity
684
+ - .ee-qa
685
+ - .quarantine
686
+ - .rspec-report-opts
687
+ - .combined-gitlab-qa-options-script
688
+ variables:
689
+ GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config object_storage_aws"
690
+ QA_RSPEC_TAGS: "--tag quarantine --tag object_storage"
691
+
692
+ ee:object_storage_gcs:
693
+ extends:
694
+ - .test
695
+ - .high-capacity
696
+ - .ee-qa
697
+ - .rspec-report-opts
698
+ variables:
699
+ GITLAB_QA_OPTS: "--omnibus-config object_storage_gcs"
700
+ QA_RSPEC_TAGS: "--tag object_storage"
701
+
702
+ ee:object_storage_gcs-quarantine:
675
703
  extends:
676
704
  - .test
677
705
  - .high-capacity
@@ -679,7 +707,7 @@ ee:object_storage_aws-quarantine:
679
707
  - .quarantine
680
708
  - .rspec-report-opts
681
709
  variables:
682
- GITLAB_QA_OPTS: "--omnibus-config object_storage_aws"
710
+ GITLAB_QA_OPTS: "--omnibus-config object_storage_gcs"
683
711
  QA_RSPEC_TAGS: "--tag quarantine --tag object_storage"
684
712
 
685
713
  ee:object_storage:
@@ -688,8 +716,9 @@ ee:object_storage:
688
716
  - .high-capacity
689
717
  - .ee-qa
690
718
  - .rspec-report-opts
719
+ - .combined-gitlab-qa-options-script
691
720
  variables:
692
- GITLAB_QA_OPTS: "--omnibus-config object_storage"
721
+ GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config object_storage"
693
722
  QA_RSPEC_TAGS: "--tag object_storage"
694
723
 
695
724
  ee:object_storage-quarantine:
@@ -699,8 +728,9 @@ ee:object_storage-quarantine:
699
728
  - .ee-qa
700
729
  - .quarantine
701
730
  - .rspec-report-opts
731
+ - .combined-gitlab-qa-options-script
702
732
  variables:
703
- GITLAB_QA_OPTS: "--omnibus-config object_storage"
733
+ GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config object_storage"
704
734
  QA_RSPEC_TAGS: "--tag quarantine --tag object_storage"
705
735
 
706
736
  ee:packages:
@@ -709,8 +739,9 @@ ee:packages:
709
739
  - .high-capacity
710
740
  - .ee-qa
711
741
  - .rspec-report-opts
742
+ - .combined-gitlab-qa-options-script
712
743
  variables:
713
- GITLAB_QA_OPTS: "--omnibus-config packages"
744
+ GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config packages"
714
745
  QA_RSPEC_TAGS: "--tag packages"
715
746
 
716
747
  ee:packages-quarantine:
@@ -720,8 +751,9 @@ ee:packages-quarantine:
720
751
  - .ee-qa
721
752
  - .quarantine
722
753
  - .rspec-report-opts
754
+ - .combined-gitlab-qa-options-script
723
755
  variables:
724
- GITLAB_QA_OPTS: "--omnibus-config packages"
756
+ GITLAB_QA_OPTIONS_COMBINED: "$GITLAB_QA_OPTIONS --omnibus-config packages"
725
757
  QA_RSPEC_TAGS: "--tag quarantine --tag packages"
726
758
 
727
759
  ce:registry:
@@ -852,7 +884,7 @@ ee:praefect:
852
884
  - .ee-qa
853
885
  - .knapsack-variables
854
886
  - .rspec-report-opts
855
- parallel: 5
887
+ parallel: 10
856
888
  variables:
857
889
  QA_SCENARIO: "Test::Integration::Praefect"
858
890
  QA_CAN_TEST_PRAEFECT: "true"
data/.rubocop.yml CHANGED
@@ -1,15 +1,21 @@
1
- inherit_from: .rubocop_todo.yml
2
-
3
- require:
4
- # Due to a probably bug in rubocop (https://github.com/bbatsov/rubocop/issues/5251)
5
- # we need to require rubocop-rspec a second time so that RSpec/FilePath does
6
- # not fallback to Rails/FilePath.
7
- - rubocop-rspec
8
-
9
1
  inherit_gem:
10
2
  gitlab-styles:
11
3
  - rubocop-default.yml
12
4
 
5
+ inherit_from:
6
+ <% unless ENV['REVEAL_RUBOCOP_TODO'] == '1' %>
7
+ - '.rubocop_todo.yml'
8
+ <% end %>
9
+
10
+ Lint/HashCompareByIdentity:
11
+ Enabled: true
12
+
13
+ Lint/RedundantSafeNavigation:
14
+ Enabled: true
15
+
16
+ Style/ClassEqualityComparison:
17
+ Enabled: true
18
+
13
19
  Lint/ShadowingOuterLocalVariable:
14
20
  Enabled: false
15
21
 
data/.rubocop_todo.yml CHANGED
@@ -1,17 +1,41 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2020-10-31 07:26:03 -0700 using RuboCop version 0.82.0.
3
+ # on 2021-09-17 06:55:33 UTC using RuboCop version 0.93.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 51
9
+ # Offense count: 165
10
10
  # Cop supports --auto-correct.
11
- # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
12
- # URISchemes: http, https
13
- Layout/LineLength:
14
- Max: 210
11
+ CodeReuse/ActiveRecord:
12
+ Enabled: false
13
+
14
+ # Offense count: 2
15
+ # Cop supports --auto-correct.
16
+ Cop/LineBreakAroundConditionalBlock:
17
+ Exclude:
18
+ - 'lib/gitlab/qa/release.rb'
19
+ - 'lib/gitlab/qa/runtime/env.rb'
20
+
21
+ # Offense count: 1
22
+ # Configuration parameters: Include.
23
+ # Include: **/*.gemspec
24
+ Gemspec/RequiredRubyVersion:
25
+ Exclude:
26
+ - 'gitlab-qa.gemspec'
27
+
28
+ # Offense count: 1
29
+ Lint/ConstantDefinitionInBlock:
30
+ Exclude:
31
+ - 'spec/gitlab/qa/scenario/test/instance/deployment_base_spec.rb'
32
+
33
+ # Offense count: 5
34
+ Lint/MixedRegexpCaptureTypes:
35
+ Exclude:
36
+ - 'lib/gitlab/qa/release.rb'
37
+ - 'lib/gitlab/qa/report/relate_failure_issue.rb'
38
+ - 'lib/gitlab/qa/report/update_screenshot_path.rb'
15
39
 
16
40
  # Offense count: 2
17
41
  # Cop supports --auto-correct.
@@ -20,6 +44,13 @@ Lint/RedundantCopDisableDirective:
20
44
  - 'lib/gitlab/qa/component/staging.rb'
21
45
  - 'lib/gitlab/qa/runtime/scenario.rb'
22
46
 
47
+ # Offense count: 10
48
+ # Configuration parameters: IgnoredMethods.
49
+ Metrics/AbcSize:
50
+ Max: 26
51
+ IgnoredMethods:
52
+ - perform
53
+
23
54
  # Offense count: 1
24
55
  # Cop supports --auto-correct.
25
56
  # Configuration parameters: PreferredName.
@@ -33,6 +64,13 @@ Performance/RegexpMatch:
33
64
  Exclude:
34
65
  - 'lib/gitlab/qa/component/gitlab.rb'
35
66
 
67
+ # Offense count: 1
68
+ # Cop supports --auto-correct.
69
+ # Configuration parameters: AutoCorrect.
70
+ Performance/StringInclude:
71
+ Exclude:
72
+ - 'lib/gitlab/qa/component/gitlab.rb'
73
+
36
74
  # Offense count: 3
37
75
  # Cop supports --auto-correct.
38
76
  RSpec/EmptyLineAfterLetBlock:
@@ -51,7 +89,18 @@ RSpec/LeakyConstantDeclaration:
51
89
  Exclude:
52
90
  - 'spec/gitlab/qa/scenario/test/instance/deployment_base_spec.rb'
53
91
 
54
- # Offense count: 93
92
+ # Offense count: 221
93
+ # Configuration parameters: AllowSubject.
94
+ RSpec/MultipleMemoizedHelpers:
95
+ Max: 22
96
+
97
+ # Offense count: 1
98
+ # Cop supports --auto-correct.
99
+ Style/ExplicitBlockArgument:
100
+ Exclude:
101
+ - 'lib/gitlab/qa/scenario/test/integration/ldap.rb'
102
+
103
+ # Offense count: 86
55
104
  # Cop supports --auto-correct.
56
105
  # Configuration parameters: EnforcedStyle.
57
106
  # SupportedStyles: always, always_true, never
@@ -64,21 +113,19 @@ Style/HashTransformKeys:
64
113
  Exclude:
65
114
  - 'lib/gitlab/qa/docker/volumes.rb'
66
115
 
67
- # Offense count: 6
116
+ # Offense count: 1
117
+ # Cop supports --auto-correct.
118
+ Style/HashTransformation:
119
+ Exclude:
120
+ - 'lib/gitlab/qa/docker/volumes.rb'
121
+
122
+ # Offense count: 3
68
123
  # Cop supports --auto-correct.
69
124
  Style/IfUnlessModifier:
70
125
  Exclude:
71
- - 'lib/gitlab/qa/component/gitlab.rb'
72
- - 'lib/gitlab/qa/release.rb'
73
126
  - 'lib/gitlab/qa/runtime/env.rb'
74
127
  - 'lib/gitlab/qa/runtime/scenario.rb'
75
128
  - 'lib/gitlab/qa/scenario/test/omnibus/upgrade.rb'
76
- - 'lib/gitlab/qa/support/http_request.rb'
77
-
78
- # Offense count: 1
79
- Style/MethodMissingSuper:
80
- Exclude:
81
- - 'lib/gitlab/qa/runtime/scenario.rb'
82
129
 
83
130
  # Offense count: 1
84
131
  Style/MissingRespondToMissing:
@@ -96,3 +143,25 @@ Style/MutableConstant:
96
143
  - 'db/geo/migrate/**/*'
97
144
  - 'lib/gitlab/qa/release.rb'
98
145
  - 'lib/gitlab/qa/report/update_screenshot_path.rb'
146
+
147
+ # Offense count: 9
148
+ # Cop supports --auto-correct.
149
+ Style/RedundantRegexpEscape:
150
+ Exclude:
151
+ - 'lib/gitlab/qa/release.rb'
152
+ - 'lib/gitlab/qa/report/generate_test_session.rb'
153
+ - 'lib/gitlab/qa/report/relate_failure_issue.rb'
154
+ - 'lib/gitlab/qa/report/update_screenshot_path.rb'
155
+
156
+ # Offense count: 1
157
+ # Cop supports --auto-correct.
158
+ Style/StringConcatenation:
159
+ Exclude:
160
+ - 'lib/gitlab/qa/reporter.rb'
161
+
162
+ # Offense count: 126
163
+ # Cop supports --auto-correct.
164
+ # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
165
+ # URISchemes: http, https
166
+ Layout/LineLength:
167
+ Max: 192
@@ -115,9 +115,23 @@ This will first disable `feature_flag_name` flag and run the tests and then enab
115
115
 
116
116
  You can pass any number of feature flag settings. The tests will run once for each setting.
117
117
 
118
- See the [QA framework documentation](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/qa/README.md#running-tests-with-a-feature-flag-enabled)
118
+ See the [QA framework documentation](https://gitlab.com/gitlab-org/gitlab/-/blob/master/qa/README.md#running-tests-with-a-feature-flag-enabled-or-disabled)
119
119
  for information on running the tests with different feature flag settings from the QA framework.
120
120
 
121
+ ## Running tests with multiple feature flags set
122
+
123
+ The options above allow you to enable or disable a single feature flag at a time. However, if you want to set more than
124
+ one feature flag at the same time you'll need to use `--set-feature-flags` instead.
125
+
126
+ The desired state must be set individually for each feature flag in a comma-separated list. For example to disable a feature flag
127
+ named `feature-one` and enable another named `feature-two`, use the following parameters:
128
+
129
+ ```shell
130
+ --set-feature-flags feature-one=disable,feature-two=enable
131
+ ```
132
+
133
+ Those parameters will instruct GitLab QA to set both feature flags before running the suite of tests.
134
+
121
135
  ## Specifying the GitLab version
122
136
 
123
137
  In each of the examples below, it is possible to test a specific version of GitLab
data/gitlab-qa.gemspec CHANGED
@@ -20,17 +20,14 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- # Some dependencies are pinned, to prevent new cops from breaking the CI pipelines
24
23
  spec.add_development_dependency 'climate_control', '~> 0.2'
25
- spec.add_development_dependency 'gitlab-styles', '~> 4.3.0'
24
+ spec.add_development_dependency 'gitlab-styles', '~> 6.2.1'
26
25
  spec.add_development_dependency 'pry', '~> 0.11'
27
26
  spec.add_development_dependency 'rake', '~> 12.2'
28
27
  spec.add_development_dependency 'rspec', '~> 3.7'
29
- spec.add_development_dependency 'rubocop', '~> 0.82.0'
30
- spec.add_development_dependency 'rubocop-rspec', '~> 1.36'
31
28
  spec.add_development_dependency 'solargraph', '~> 0.41'
32
29
  spec.add_development_dependency 'webmock', '3.7.0'
33
- spec.add_runtime_dependency 'activesupport', '~> 6.0.2'
30
+ spec.add_runtime_dependency 'activesupport', '~> 6.1'
34
31
  spec.add_runtime_dependency 'gitlab', '~> 4.16.1'
35
32
  spec.add_runtime_dependency 'http', '4.3.0'
36
33
  spec.add_runtime_dependency 'nokogiri', '~> 1.10'
@@ -9,7 +9,7 @@ module Gitlab
9
9
  module Component
10
10
  class Minio < Base
11
11
  DOCKER_IMAGE = 'minio/minio'.freeze
12
- DOCKER_IMAGE_TAG = 'latest'.freeze
12
+ DOCKER_IMAGE_TAG = 'RELEASE.2021-09-15T04-54-25Z'.freeze
13
13
  # These are secrets used in a local Minio container, they're not used for any online S3 server.
14
14
  AWS_ACCESS_KEY = 'AKIAIOSFODNN7EXAMPLE'.freeze
15
15
  AWS_SECRET_KEY = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'.freeze
@@ -19,7 +19,7 @@ module Gitlab
19
19
  def initialize
20
20
  super
21
21
 
22
- @environment = { MINIO_ACCESS_KEY: AWS_ACCESS_KEY, MINIO_SECRET_KEY: AWS_SECRET_KEY }
22
+ @environment = { MINIO_ROOT_USER: AWS_ACCESS_KEY, MINIO_ROOT_PASSWORD: AWS_SECRET_KEY }
23
23
  @volumes = { host_data_dir => DATA_DIR }
24
24
  @buckets = []
25
25
  end
@@ -16,7 +16,7 @@ module Gitlab
16
16
  @env = {}
17
17
  end
18
18
 
19
- def perform # rubocop:disable Metrics/AbcSize
19
+ def perform
20
20
  return puts "Skipping tests." if skip_tests?
21
21
 
22
22
  raise ArgumentError unless [suite, release].all?
@@ -31,15 +31,14 @@ module Gitlab
31
31
 
32
32
  feature_flag_sets = []
33
33
 
34
- # When `args` includes `[..., "--disable-feature", "a", "--enable-feature", "b", ...]`
35
- # `feature_flag_sets` will be set to `[["--disable-feature", "a"], ["--enable-feature", "b"]]`
36
- # This will result in tests running twice, once with each feature.
34
+ # When `args` includes `[..., "--disable-feature", "a", "--enable-feature", "b", "--set-feature-flags", "c=enable", ...]`
35
+ # `feature_flag_sets` will be set to `[["--disable-feature", "a"], ["--enable-feature", "b"], ["--set-feature-flags", "c=enable"]]`
36
+ # This will result in tests running three times, once with each feature flag option.
37
37
  while (index = args&.index { |x| x =~ /--.*-feature/ })
38
38
  feature_flag_sets << args.slice!(index, 2)
39
39
  end
40
40
 
41
- # When `args` do not have either "--disable-feature" or "--enable-feature", we
42
- # add [] so that test is run exactly once.
41
+ # When `args` do not have any feature flag options, we add [] so that test is run exactly once.
43
42
  feature_flag_sets << [] unless feature_flag_sets.any?
44
43
 
45
44
  feature_flag_sets.each do |feature_flag_set|
@@ -13,7 +13,7 @@ module Gitlab
13
13
  puts "Docker shell command: `#{@command.mask_secrets}`"
14
14
  end
15
15
 
16
- def execute!
16
+ def execute! # rubocop:disable Metrics/AbcSize
17
17
  raise StatusError, 'Command already executed' if @output.any?
18
18
 
19
19
  Open3.popen2e(@command.to_s) do |_in, out, wait|
@@ -18,7 +18,7 @@ module Gitlab
18
18
  @omnibus_configurations = %w[default] # always load default configuration
19
19
 
20
20
  @options = OptionParser.new do |opts|
21
- opts.banner = 'Usage: gitlab-qa [options] Scenario URL [[--] path] [rspec_options]'
21
+ opts.banner = 'Usage: gitlab-qa Scenario URL [options] [[--] path] [rspec_options]'
22
22
 
23
23
  opts.on('--no-teardown', 'Skip teardown of containers after the scenario completes.') do
24
24
  Runtime::Scenario.define(:teardown, false)
@@ -104,7 +104,11 @@ module Gitlab
104
104
  'AWS_S3_KEY_ID' => :aws_s3_key_id,
105
105
  'AWS_S3_ACCESS_KEY' => :aws_s3_access_key,
106
106
  'AWS_S3_BUCKET_NAME' => :aws_s3_bucket_name,
107
- 'TOP_UPSTREAM_MERGE_REQUEST_IID' => :top_upstream_merge_request_iid
107
+ 'TOP_UPSTREAM_MERGE_REQUEST_IID' => :top_upstream_merge_request_iid,
108
+ 'GOOGLE_PROJECT' => :google_project,
109
+ 'GOOGLE_CLIENT_EMAIL' => :google_client_email,
110
+ 'GOOGLE_JSON_KEY' => :google_json_key,
111
+ 'GCS_BUCKET_NAME' => :gcs_bucket_name
108
112
  }.freeze
109
113
 
110
114
  ENV_VARIABLES.each do |env_name, method_name|
@@ -299,6 +303,12 @@ module Gitlab
299
303
  end
300
304
  end
301
305
 
306
+ def require_gcs_environment!
307
+ %w[GOOGLE_PROJECT GOOGLE_CLIENT_EMAIL GOOGLE_JSON_KEY GCS_BUCKET_NAME].each do |env_key|
308
+ raise ArgumentError, "Environment variable #{env_key} must be set to run GCS object storage specs" unless ENV.key?(env_key)
309
+ end
310
+ end
311
+
302
312
  def require_initial_password!
303
313
  return unless ENV['GITLAB_INITIAL_ROOT_PASSWORD'].to_s.strip.empty?
304
314
 
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+ require 'tempfile'
3
+
4
+ module Gitlab
5
+ module QA
6
+ module Runtime
7
+ module OmnibusConfigurations
8
+ class ObjectStorageGcs < Default
9
+ def configuration
10
+ Runtime::Env.require_gcs_environment!
11
+
12
+ json_key = setup_json_key
13
+
14
+ <<~OMNIBUS
15
+ gitlab_rails['object_store']['connection'] = { 'provider' => 'Google', 'google_project' => '#{Runtime::Env.google_project}', 'google_client_email' => '#{Runtime::Env.google_client_email}', 'google_json_key_location' => '#{json_key.path}' }
16
+
17
+ gitlab_rails['object_store']['objects']['artifacts']['bucket'] = '#{Runtime::Env.gcs_bucket_name}'
18
+ gitlab_rails['object_store']['objects']['external_diffs']['bucket'] = '#{Runtime::Env.gcs_bucket_name}'
19
+ gitlab_rails['object_store']['objects']['lfs']['bucket'] = '#{Runtime::Env.gcs_bucket_name}'
20
+ gitlab_rails['object_store']['objects']['uploads']['bucket'] = '#{Runtime::Env.gcs_bucket_name}'
21
+ gitlab_rails['object_store']['objects']['packages']['bucket'] = '#{Runtime::Env.gcs_bucket_name}'
22
+ gitlab_rails['object_store']['objects']['dependency_proxy']['bucket'] = '#{Runtime::Env.gcs_bucket_name}'
23
+ gitlab_rails['object_store']['objects']['pages']['bucket'] = '#{Runtime::Env.gcs_bucket_name}'
24
+ gitlab_rails['object_store']['objects']['terraform_state']['bucket'] = '#{Runtime::Env.gcs_bucket_name}'
25
+ OMNIBUS
26
+ end
27
+
28
+ def setup_json_key
29
+ Tempfile.open('gcs-json-key', ENV['CI_PROJECT_DIR']) do |file|
30
+ file.write(ENV.fetch('GOOGLE_JSON_KEY'))
31
+
32
+ file
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -12,7 +12,6 @@ module Gitlab
12
12
  @tag = 'client_ssl'
13
13
  end
14
14
 
15
- # rubocop:disable Metrics/AbcSize
16
15
  def perform(release, *rspec_args)
17
16
  Component::Gitlab.perform do |gitlab|
18
17
  gitlab.release = QA::Release.new(release)
@@ -42,7 +41,6 @@ module Gitlab
42
41
  end
43
42
  end
44
43
  end
45
- # rubocop:enable Metrics/AbcSize
46
44
 
47
45
  def gitlab_omnibus
48
46
  <<~OMNIBUS
@@ -53,7 +51,7 @@ module Gitlab
53
51
  nginx['ssl_certificate_key'] = '/etc/gitlab/ssl/gitlab.test.key';
54
52
 
55
53
  nginx['ssl_verify_client'] = 'on';
56
- nginx['ssl_client_certificate'] = '/etc/gitlab/authority/ca.pem';
54
+ nginx['ssl_client_certificate'] = '/etc/gitlab/trusted-certs/ca.pem';
57
55
  nginx['ssl_verify_depth'] = '2';
58
56
  OMNIBUS
59
57
  end
@@ -4,10 +4,7 @@ module Gitlab
4
4
  module Test
5
5
  module Integration
6
6
  class Geo < Scenario::Template
7
- ##
8
7
  # rubocop:disable Lint/MissingCopEnableDirective
9
- # rubocop:disable Metrics/AbcSize
10
- #
11
8
  def perform(release, *rspec_args)
12
9
  release = QA::Release.new(release)
13
10
 
@@ -19,7 +19,6 @@ module Gitlab
19
19
  @tag = 'gitaly_cluster'
20
20
  end
21
21
 
22
- # rubocop:disable Metrics/AbcSize
23
22
  def perform(release, *rspec_args)
24
23
  gitaly_primary_node = gitaly(@primary_node_name, release)
25
24
  gitaly_secondary_node = gitaly(@secondary_node_name, release)
@@ -74,7 +73,6 @@ module Gitlab
74
73
  gitaly_secondary_node&.teardown
75
74
  gitaly_tertiary_node&.teardown
76
75
  end
77
- # rubocop:enable Metrics/AbcSize
78
76
 
79
77
  private
80
78
 
@@ -6,7 +6,6 @@ module Gitlab
6
6
  module Test
7
7
  module Integration
8
8
  class Kubernetes < Scenario::Template
9
- # rubocop:disable Metrics/AbcSize
10
9
  def perform(release, *rspec_args)
11
10
  Runtime::Env.require_kubernetes_environment!
12
11
 
@@ -47,7 +46,6 @@ module Gitlab
47
46
  end
48
47
  end
49
48
  end
50
- # rubocop:enable Metrics/AbcSize
51
49
  end
52
50
  end
53
51
  end
@@ -13,7 +13,6 @@ module Gitlab
13
13
  @tag = 'mtls'
14
14
  end
15
15
 
16
- # rubocop:disable Metrics/AbcSize
17
16
  def perform(release, *rspec_args)
18
17
  Component::Gitlab.perform do |gitaly|
19
18
  gitaly.release = QA::Release.new(release)
@@ -53,7 +52,6 @@ module Gitlab
53
52
  end
54
53
  end
55
54
  end
56
- # rubocop:enable Metrics/AbcSize
57
55
 
58
56
  def gitlab_omnibus
59
57
  <<~OMNIBUS
@@ -6,7 +6,6 @@ module Gitlab
6
6
  module Test
7
7
  module Integration
8
8
  class SSHTunnel < Scenario::Template
9
- # rubocop:disable Metrics/AbcSize
10
9
  def perform(release, *rspec_args)
11
10
  Runtime::Env.override_default_password!
12
11
  Runtime::Env.require_ssh_tunnel!
@@ -49,7 +48,6 @@ module Gitlab
49
48
  end
50
49
  end
51
50
  end
52
- # rubocop:enable Metrics/AbcSize
53
51
  end
54
52
  end
55
53
  end
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  module QA
3
- VERSION = '7.8.4'.freeze
3
+ VERSION = '7.9.2'.freeze
4
4
  end
5
5
  end
data/lib/gitlab/qa.rb CHANGED
@@ -15,6 +15,7 @@ module Gitlab
15
15
  autoload :Packages, 'gitlab/qa/runtime/omnibus_configurations/packages'
16
16
  autoload :ObjectStorage, 'gitlab/qa/runtime/omnibus_configurations/object_storage'
17
17
  autoload :ObjectStorageAws, 'gitlab/qa/runtime/omnibus_configurations/object_storage_aws'
18
+ autoload :ObjectStorageGcs, 'gitlab/qa/runtime/omnibus_configurations/object_storage_gcs'
18
19
  autoload :LicenseMode, 'gitlab/qa/runtime/omnibus_configurations/license_mode'
19
20
  end
20
21
  end
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: 7.8.4
4
+ version: 7.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab Quality
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-09-13 00:00:00.000000000 Z
11
+ date: 2021-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 4.3.0
33
+ version: 6.2.1
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 4.3.0
40
+ version: 6.2.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pry
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,34 +80,6 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.7'
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 0.82.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 0.82.0
97
- - !ruby/object:Gem::Dependency
98
- name: rubocop-rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1.36'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '1.36'
111
83
  - !ruby/object:Gem::Dependency
112
84
  name: solargraph
113
85
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +114,14 @@ dependencies:
142
114
  requirements:
143
115
  - - "~>"
144
116
  - !ruby/object:Gem::Version
145
- version: 6.0.2
117
+ version: '6.1'
146
118
  type: :runtime
147
119
  prerelease: false
148
120
  version_requirements: !ruby/object:Gem::Requirement
149
121
  requirements:
150
122
  - - "~>"
151
123
  - !ruby/object:Gem::Version
152
- version: 6.0.2
124
+ version: '6.1'
153
125
  - !ruby/object:Gem::Dependency
154
126
  name: gitlab
155
127
  requirement: !ruby/object:Gem::Requirement
@@ -294,6 +266,7 @@ files:
294
266
  - lib/gitlab/qa/runtime/omnibus_configurations/license_mode.rb
295
267
  - lib/gitlab/qa/runtime/omnibus_configurations/object_storage.rb
296
268
  - lib/gitlab/qa/runtime/omnibus_configurations/object_storage_aws.rb
269
+ - lib/gitlab/qa/runtime/omnibus_configurations/object_storage_gcs.rb
297
270
  - lib/gitlab/qa/runtime/omnibus_configurations/packages.rb
298
271
  - lib/gitlab/qa/runtime/scenario.rb
299
272
  - lib/gitlab/qa/runtime/token_finder.rb