gitlab-qa 7.25.0 → 7.25.1

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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab/ci/jobs/actioncable.gitlab-ci.yml +41 -0
  3. data/.gitlab/ci/jobs/base.gitlab-ci.yml +281 -0
  4. data/.gitlab/ci/jobs/cloud_activation.gitlab-ci.yml +30 -0
  5. data/.gitlab/ci/jobs/custom_parallel.gitlab-ci.yml +21 -0
  6. data/.gitlab/ci/jobs/ee_previous_to_ce_update.gitlab-ci.yml +18 -0
  7. data/.gitlab/ci/jobs/elasticsearch.gitlab-ci.yml +20 -0
  8. data/.gitlab/ci/jobs/geo.gitlab-ci.yml +18 -0
  9. data/.gitlab/ci/jobs/gitaly_cluster.gitlab-ci.yml +45 -0
  10. data/.gitlab/ci/jobs/group_saml.gitlab-ci.yml +20 -0
  11. data/.gitlab/ci/jobs/instance.gitlab-ci.yml +55 -0
  12. data/.gitlab/ci/jobs/instance_saml.gitlab-ci.yml +41 -0
  13. data/.gitlab/ci/jobs/integrations.gitlab-ci.yml +14 -0
  14. data/.gitlab/ci/jobs/jira.gitlab-ci.yml +41 -0
  15. data/.gitlab/ci/jobs/large_setup.gitlab-ci.yml +19 -0
  16. data/.gitlab/ci/jobs/ldap_no_server.gitlab-ci.yml +20 -0
  17. data/.gitlab/ci/jobs/ldap_no_tls.gitlab-ci.yml +41 -0
  18. data/.gitlab/ci/jobs/ldap_tls.gitlab-ci.yml +41 -0
  19. data/.gitlab/ci/jobs/mattermost.gitlab-ci.yml +41 -0
  20. data/.gitlab/ci/jobs/mtls.gitlab-ci.yml +17 -0
  21. data/.gitlab/ci/jobs/object_storage.gitlab-ci.yml +49 -0
  22. data/.gitlab/ci/jobs/object_storage_aws.gitlab-ci.yml +25 -0
  23. data/.gitlab/ci/jobs/object_storage_gcs.gitlab-ci.yml +23 -0
  24. data/.gitlab/ci/jobs/object_storage_registry_tls.gitlab-ci.yml +41 -0
  25. data/.gitlab/ci/jobs/omnibus_image.gitlab-ci.yml +15 -0
  26. data/.gitlab/ci/jobs/omnibus_upgrade.gitlab-ci.yml +28 -0
  27. data/.gitlab/ci/jobs/packages.gitlab-ci.yml +25 -0
  28. data/.gitlab/ci/jobs/praefect.gitlab-ci.yml +71 -0
  29. data/.gitlab/ci/jobs/registry.gitlab-ci.yml +41 -0
  30. data/.gitlab/ci/jobs/registry_with_cdn.gitlab-ci.yml +43 -0
  31. data/.gitlab/ci/jobs/relative_url.gitlab-ci.yml +65 -0
  32. data/.gitlab/ci/jobs/repository_storage.gitlab-ci.yml +41 -0
  33. data/.gitlab/ci/jobs/sanity_framework.gitlab-ci.yml +24 -0
  34. data/.gitlab/ci/jobs/service_ping_disabled.gitlab-ci.yml +19 -0
  35. data/.gitlab/ci/jobs/smtp.gitlab-ci.yml +19 -0
  36. data/.gitlab/ci/jobs/staging.gitlab-ci.yml +10 -0
  37. data/.gitlab/ci/jobs/update.gitlab-ci.yml +60 -0
  38. data/.gitlab-ci.yml +37 -38
  39. data/bin/notify_upstream +98 -0
  40. data/lib/gitlab/qa/component/base.rb +0 -1
  41. data/lib/gitlab/qa/report/relate_failure_issue.rb +1 -1
  42. data/lib/gitlab/qa/runtime/env.rb +1 -1
  43. data/lib/gitlab/qa/scenario/test/integration/mattermost.rb +5 -1
  44. data/lib/gitlab/qa/version.rb +1 -1
  45. data/scripts/generate-qa-jobs.rb +41 -1710
  46. metadata +39 -3
  47. data/bin/notify_upstream_commit +0 -61
@@ -0,0 +1,19 @@
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"
@@ -0,0 +1,19 @@
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"
@@ -0,0 +1,10 @@
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
@@ -0,0 +1,60 @@
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"
data/.gitlab-ci.yml CHANGED
@@ -49,7 +49,14 @@ prepare:
49
49
  stage: generate
50
50
  extends: .rules:never-on-version-change-or-tag
51
51
  script:
52
- - 'export QA_IMAGE_TAG=${TOP_UPSTREAM_SOURCE_REF:=master} && echo "QA_IMAGE_TAG=$QA_IMAGE_TAG" >> prep_vars.env'
52
+ - |
53
+ if [[ $TOP_UPSTREAM_SOURCE_PROJECT == "gitlab-org/gitlab" && -n $TOP_UPSTREAM_SOURCE_REF ]]; then
54
+ # Replace '\' with '-' and convert to downcase
55
+ export QA_IMAGE_TAG=$(echo "${TOP_UPSTREAM_SOURCE_REF//\//-}" | tr '[:upper:]' '[:lower:]')
56
+ else
57
+ export QA_IMAGE_TAG=master
58
+ fi
59
+ - 'echo "QA_IMAGE_TAG=$QA_IMAGE_TAG" >> prep_vars.env'
53
60
  - 'echo $QA_IMAGE_TAG'
54
61
  artifacts:
55
62
  reports:
@@ -58,40 +65,6 @@ prepare:
58
65
  - prep_vars.env
59
66
 
60
67
  generate-jobs:
61
- stage: generate
62
- extends: .rules:never-on-version-change-or-tag
63
- script:
64
- # TOP_UPSTREAM_DEFAULT_BRANCH is the default branch name of the original project that triggered a pipeline in this project.
65
- - 'export TOP_UPSTREAM_DEFAULT_BRANCH=${TOP_UPSTREAM_DEFAULT_BRANCH:=master} && echo "TOP_UPSTREAM_DEFAULT_BRANCH=$TOP_UPSTREAM_DEFAULT_BRANCH" >> variables.env'
66
- - 'echo "RELEASE=$RELEASE" >> variables.env'
67
- - 'echo "GITLAB_QA_OPTIONS=$GITLAB_QA_OPTIONS" >> variables.env'
68
- - 'echo "QA_TESTS=$QA_TESTS" >> variables.env'
69
- - 'echo "KNAPSACK_GENERATE_REPORT=$KNAPSACK_GENERATE_REPORT" >> variables.env'
70
- - 'echo "TOP_UPSTREAM_SOURCE_JOB=$TOP_UPSTREAM_SOURCE_JOB" >> variables.env'
71
- - 'echo "TOP_UPSTREAM_SOURCE_REF=$TOP_UPSTREAM_SOURCE_REF" >> variables.env'
72
- - 'echo "DISABLE_RELATING_FAILURE_ISSUES=$DISABLE_RELATING_FAILURE_ISSUES" >> variables.env'
73
- - 'echo "TOP_UPSTREAM_SOURCE_PROJECT=$TOP_UPSTREAM_SOURCE_PROJECT" >> variables.env'
74
- - 'echo "TOP_UPSTREAM_SOURCE_SHA=$TOP_UPSTREAM_SOURCE_SHA" >> variables.env'
75
- - 'echo "NOTIFY_CHANNEL=$NOTIFY_CHANNEL" >> variables.env'
76
- - 'echo "QA_IMAGE=$QA_IMAGE" >> variables.env'
77
- - 'echo "EE_LICENSE=$EE_LICENSE" >> variables.env'
78
- - 'echo "TOP_UPSTREAM_MERGE_REQUEST_IID=$TOP_UPSTREAM_MERGE_REQUEST_IID" >> variables.env'
79
- - 'echo "ALLURE_JOB_NAME=$ALLURE_JOB_NAME" >> variables.env'
80
-
81
- - ./scripts/generate-qa-jobs.rb
82
- - cat generated-qa-jobs.yml
83
- artifacts:
84
- reports:
85
- dotenv: variables.env
86
- paths:
87
- - generated-qa-jobs.yml
88
- - variables.env
89
- expire_in: 2 days
90
- needs:
91
- - job: generate-count-example-files
92
- artifacts: true
93
-
94
- generate-count-example-files:
95
68
  stage: generate
96
69
  extends: .rules:never-on-version-change-or-tag
97
70
  image:
@@ -104,8 +77,9 @@ generate-count-example-files:
104
77
  before_script:
105
78
  - cd /home/gitlab/qa
106
79
  script:
80
+ # Generate count example files
107
81
  - bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS
108
- - bundle exec bin/qa Test::Integration::Mattermost http://dummy.test http://mattermost.test --count-examples-only -- $QA_TESTS
82
+ - bundle exec bin/qa Test::Integration::Mattermost http://dummy.test --mattermost-address http://mattermost.test --count-examples-only -- $QA_TESTS
109
83
  - bundle exec bin/qa Test::Integration::ServicePingDisabled http://dummy.test --count-examples-only -- $QA_TESTS
110
84
  - bundle exec bin/qa QA::EE::Scenario::Test::Geo --count-examples-only --primary-address http://dummy1.test --primary-name gitlab-primary --secondary-address http://dummy2.test --secondary-name gitlab-secondary --without-setup
111
85
  - bundle exec bin/qa Test::Integration::LDAPNoTLS http://dummy.test --count-examples-only -- $QA_TESTS
@@ -127,12 +101,37 @@ generate-count-example-files:
127
101
  - bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag can_use_large_setup
128
102
  - bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag cloud_activation
129
103
  - bundle exec bin/qa Test::Instance::All http://dummy.test --count-examples-only -- $QA_TESTS --tag object_storage
130
-
131
104
  - cp -r no_of_examples $CI_PROJECT_DIR
105
+
106
+ # TOP_UPSTREAM_DEFAULT_BRANCH is the default branch name of the original project that triggered a pipeline in this project.
107
+ - 'export TOP_UPSTREAM_DEFAULT_BRANCH=${TOP_UPSTREAM_DEFAULT_BRANCH:=master} && echo "TOP_UPSTREAM_DEFAULT_BRANCH=$TOP_UPSTREAM_DEFAULT_BRANCH" >> variables.env'
108
+ - 'echo "RELEASE=$RELEASE" >> variables.env'
109
+ - 'echo "GITLAB_QA_OPTIONS=$GITLAB_QA_OPTIONS" >> variables.env'
110
+ - 'echo "QA_TESTS=$QA_TESTS" >> variables.env'
111
+ - 'echo "KNAPSACK_GENERATE_REPORT=$KNAPSACK_GENERATE_REPORT" >> variables.env'
112
+ - 'echo "TOP_UPSTREAM_SOURCE_JOB=$TOP_UPSTREAM_SOURCE_JOB" >> variables.env'
113
+ - 'echo "TOP_UPSTREAM_SOURCE_REF=$TOP_UPSTREAM_SOURCE_REF" >> variables.env'
114
+ - 'echo "DISABLE_RELATING_FAILURE_ISSUES=$DISABLE_RELATING_FAILURE_ISSUES" >> variables.env'
115
+ - 'echo "TOP_UPSTREAM_SOURCE_PROJECT=$TOP_UPSTREAM_SOURCE_PROJECT" >> variables.env'
116
+ - 'echo "TOP_UPSTREAM_SOURCE_SHA=$TOP_UPSTREAM_SOURCE_SHA" >> variables.env'
117
+ - 'echo "NOTIFY_CHANNEL=$NOTIFY_CHANNEL" >> variables.env'
118
+ - 'echo "QA_IMAGE=$QA_IMAGE" >> variables.env'
119
+ - 'echo "EE_LICENSE=$EE_LICENSE" >> variables.env'
120
+ - 'echo "TOP_UPSTREAM_MERGE_REQUEST_IID=$TOP_UPSTREAM_MERGE_REQUEST_IID" >> variables.env'
121
+ - 'echo "ALLURE_JOB_NAME=$ALLURE_JOB_NAME" >> variables.env'
122
+ - mv variables.env $CI_PROJECT_DIR
123
+
124
+ - cd $CI_PROJECT_DIR
125
+ - ./scripts/generate-qa-jobs.rb
126
+ - cat generated-qa-jobs.yml
132
127
  artifacts:
128
+ reports:
129
+ dotenv: variables.env
133
130
  paths:
131
+ - generated-qa-jobs.yml
132
+ - variables.env
134
133
  - no_of_examples
135
- allow_failure: true
134
+ expire_in: 2 days
136
135
 
137
136
  trigger-generated-jobs:
138
137
  stage: triggers
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'gitlab'
5
+
6
+ # Default to "Multi-pipeline (from 'gitlab-org/gitlab-qa' 'notify_upstream:*' jobs)" from current project
7
+ api_token = ENV.fetch('GITLAB_QA_PROJECT_ACCESS_TOKEN') do
8
+ puts "The $GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN variable is deprecated in favor of a dedicated project access token: $GITLAB_QA_PROJECT_ACCESS_TOKEN."
9
+ puts "See https://gitlab.com/groups/gitlab-org/quality/-/epics/17 for more details."
10
+ ENV['GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN']
11
+ end
12
+
13
+ # Configure credentials to be used with gitlab gem
14
+ Gitlab.configure do |config|
15
+ config.endpoint = 'https://gitlab.com/api/v4'
16
+ config.private_token = api_token
17
+ end
18
+
19
+ class CommitComment
20
+ UPSTREAM_COMMENT = <<~COMMENT
21
+ - The [`gitlab-qa-mirror` downstream pipeline](%<pipeline_url>s) for https://gitlab.com/%<project_path>s/-/merge_requests/%<mr_iid>s/diffs?commit_id=%<commit_sha>s %<status_with_icon>s
22
+ COMMENT
23
+ IDENTIFIABLE_NOTE_TAG = 'gitlab-qa:upstream-notification-note'
24
+
25
+ def self.mr?
26
+ ENV.key?('TOP_UPSTREAM_SOURCE_PROJECT') &&
27
+ ENV.key?('TOP_UPSTREAM_MERGE_REQUEST_IID') &&
28
+ ENV.key?('TOP_UPSTREAM_SOURCE_SHA') &&
29
+ !ENV['TOP_UPSTREAM_SOURCE_PROJECT'].to_s.empty? &&
30
+ !ENV['TOP_UPSTREAM_MERGE_REQUEST_IID'].to_s.empty? &&
31
+ !ENV['TOP_UPSTREAM_SOURCE_SHA'].to_s.empty?
32
+ end
33
+
34
+ def self.post!(status)
35
+ unless mr?
36
+ puts "All the 'TOP_UPSTREAM_SOURCE_PROJECT', 'TOP_UPSTREAM_MERGE_REQUEST_IID', and 'TOP_UPSTREAM_SOURCE_SHA' environment variables need to be present. We cannot post a comment on the upstream merge request."
37
+ return
38
+ end
39
+
40
+ # Look for an existing note
41
+ upstream_notification_note = Gitlab.merge_request_notes(project_path, mr_iid).auto_paginate.find do |note|
42
+ note.body.include?(IDENTIFIABLE_NOTE_TAG)
43
+ end
44
+
45
+ if upstream_notification_note
46
+ Gitlab.edit_merge_request_note(project_path, mr_iid, upstream_notification_note.id, [upstream_notification_note.body, build_comment(status)].join("\n"))
47
+ else
48
+ Gitlab.create_merge_request_comment(project_path, mr_iid, "<!-- #{IDENTIFIABLE_NOTE_TAG} -->\n#{build_comment(status)}")
49
+ end
50
+ rescue Gitlab::Error::Error => error
51
+ puts "Ignoring the following error: #{error}"
52
+ end
53
+
54
+ def self.project_path
55
+ ENV['TOP_UPSTREAM_SOURCE_PROJECT']
56
+ end
57
+
58
+ def self.mr_iid
59
+ ENV['TOP_UPSTREAM_MERGE_REQUEST_IID']
60
+ end
61
+
62
+ def self.pipeline_url
63
+ ENV['CI_PIPELINE_URL']
64
+ end
65
+
66
+ def self.commit_sha
67
+ ENV['TOP_UPSTREAM_SOURCE_SHA']
68
+ end
69
+
70
+ def self.build_comment(status)
71
+ format(UPSTREAM_COMMENT,
72
+ project_path: project_path,
73
+ mr_iid: mr_iid,
74
+ pipeline_url: pipeline_url,
75
+ status_with_icon: status_with_icon(status),
76
+ commit_sha: commit_sha
77
+ )
78
+ end
79
+
80
+ def self.status_with_icon(status)
81
+ case status
82
+ when :success
83
+ "passed. :white_check_mark:"
84
+ when :failure
85
+ "failed! :boom:"
86
+ end
87
+ end
88
+
89
+ def self.post_to_mr(project_id, mr_iid, comment)
90
+ Gitlab.create_merge_request_comment(project_id, mr_iid, comment)
91
+ end
92
+ end
93
+
94
+ status = ARGV.shift.to_s.strip
95
+
96
+ abort "Please provide a status!" if status == ''
97
+
98
+ CommitComment.post!(status.to_sym)
@@ -124,7 +124,6 @@ module Gitlab
124
124
 
125
125
  return unless docker.running?(name)
126
126
 
127
- docker.stop(name)
128
127
  docker.remove(name)
129
128
  end
130
129
 
@@ -47,7 +47,7 @@ module Gitlab
47
47
  puts " => Searching issues for test '#{test.name}'..."
48
48
 
49
49
  begin
50
- issue = find_and_link_issue(test) || create_issue(test)
50
+ issue = test.quarantine? ? find_and_link_issue(test) : find_and_link_issue(test) || create_issue(test)
51
51
  return unless issue
52
52
 
53
53
  update_labels(issue, test)
@@ -217,7 +217,7 @@ module Gitlab
217
217
  end
218
218
 
219
219
  def elastic_version
220
- env_var_value_if_defined('ELASTIC_VERSION') || '6.4.2'.freeze
220
+ env_var_value_if_defined('ELASTIC_VERSION') || '7.17.0'.freeze
221
221
  end
222
222
 
223
223
  def require_license!
@@ -22,7 +22,11 @@ module Gitlab
22
22
  specs.suite = 'Test::Integration::Mattermost'
23
23
  specs.release = gitlab.release
24
24
  specs.network = gitlab.network
25
- specs.args = [gitlab.address, mattermost_external_url, *rspec_args]
25
+ specs.args = [
26
+ gitlab.address,
27
+ "--mattermost-address", mattermost_external_url,
28
+ *rspec_args
29
+ ]
26
30
  end
27
31
  end
28
32
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module QA
5
- VERSION = '7.25.0'
5
+ VERSION = '7.25.1'
6
6
  end
7
7
  end