gitlab-qa 7.25.0 → 7.25.1

Sign up to get free protection for your applications and to get access to all the features.
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