gitlab-qa 14.15.0 → 14.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 497913af708d5bd502f32c82f052d0dbcfddb70142979c9e2ecf76ea40ab76d8
4
- data.tar.gz: 730eec75c41c7805635602a68d461844062dc786bf953071bc80a0256f5fec97
3
+ metadata.gz: 9a30b8f1d5f38d5c3b4a48d7b1395387b4cc854e5e2ec579d3591777b7131c84
4
+ data.tar.gz: 9da397c19c29ea43b5fce2b8ad441d09dbd203adfcb122aa7ac75cc707f65245
5
5
  SHA512:
6
- metadata.gz: e8e4b3d39cf8cdf652cdd0001bd1f3238e8f707e51159b3e48a8bf43d8827485684e18734b345a8a793afdb36bdc2fb8fe36437160ee997dc6a04a4647fb1b7b
7
- data.tar.gz: c353c880a71f75860f0ffb6e8bfd13360680bdc5f31573abaa12b455194529273498728d9bbbbe48b61ffda62fddf1b7e02ddc93d5e1abb1ca96e0cbd68ae2be
6
+ metadata.gz: 1eba615ae509dc1425e85375e726604a160c05edd7c69e0bbe86d65ad7a638fdc8f062633463b442e77e6d11b4693d5c6e2738a97385b168108be1c18ac1187c
7
+ data.tar.gz: 3c4a0c7c9375199ff84c86c8d2d8a2d9b8eaf93094708ea7be80ad53f98a3ee8a46807364d13ad0a7b57c45f0e06d85087b23915d78549b4baf21f5a4a810044
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitlab-qa (14.15.0)
4
+ gitlab-qa (14.17.0)
5
5
  activesupport (>= 6.1, < 7.2)
6
6
  gitlab (~> 4.19)
7
7
  http (~> 5.0)
@@ -1196,7 +1196,7 @@ The following `AiGateway` scenarios spin up a GitLab Omnibus instance integrated
1196
1196
 
1197
1197
  All scenarios below require the following environment variables, **_unless otherwise noted:_**
1198
1198
 
1199
- - `QA_EE_ACTIVATION_CODE`: An activation code for a Staging-generated Premium or Ultimate cloud license with a purchased Duo Pro add-on. This can be found in the GitLab QA 1Password vault.
1199
+ - `QA_EE_ACTIVATION_CODE`: An activation code for a Staging-generated Premium or Ultimate cloud license with a purchased Duo Pro or Duo Enterprise add-on. This can be found in the GitLab QA 1Password vault.
1200
1200
  - `GITLAB_LICENSE_MODE`: Set to `test` in order to configure GitLab Omnibus with the correct license mode and `CUSTOMER_PORTAL_URL`.
1201
1201
 
1202
1202
  Example:
@@ -1211,7 +1211,7 @@ $ export GITLAB_LICENSE_MODE="test"
1211
1211
  #### `Test::Integration::AiGateway EE|<full image address>`
1212
1212
 
1213
1213
  - Runs tests tagged with `:ai_gateway`
1214
- - GitLab instance has a cloud license + Duo Pro add-on, and a seat is assigned to the admin user
1214
+ - GitLab instance has a cloud license with either a Duo Pro add-on or Duo Enterprise add-on, and a seat is assigned to the admin user. Choose Duo Enterprise over Duo Pro when available.
1215
1215
 
1216
1216
  Example:
1217
1217
 
@@ -1224,7 +1224,7 @@ $ gitlab-qa Test::Integration::AiGateway EE
1224
1224
  #### `Test::Integration::AiGatewayNoSeatAssigned EE|<full image address>`
1225
1225
 
1226
1226
  - Runs tests tagged with `:ai_gateway_no_seat_assigned`
1227
- - GitLab instance has a cloud license + Duo Pro add-on, but no seat is assigned to the admin user
1227
+ - GitLab instance has a cloud license + Duo Pro or Duo Enterprise add-on, but no seat is assigned to the admin user.
1228
1228
 
1229
1229
  Example:
1230
1230
 
@@ -1237,11 +1237,11 @@ $ gitlab-qa Test::Integration::AiGatewayNoSeatAssigned EE
1237
1237
  #### `Test::Integration::AiGatewayNoAddOn EE|<full image address>`
1238
1238
 
1239
1239
  - Runs tests tagged with `:ai_gateway_no_add_on`
1240
- - GitLab instance has a cloud license without a Duo Pro add-on, and no seat is assigned to the admin user
1240
+ - GitLab instance has a cloud license without a Duo Pro or Duo Enterprise add-on, and no seat is assigned to the admin user.
1241
1241
 
1242
1242
  **Regarding environment variables:**
1243
1243
 
1244
- - `QA_EE_ACTIVATION_CODE` should be set to a Staging-generated Premium or Ultimate cloud license _without_ a Duo Pro add-on.
1244
+ - `QA_EE_ACTIVATION_CODE` should be set to a Staging-generated Premium or Ultimate cloud license _without_ a Duo Pro or Duo Enterprise add-on.
1245
1245
 
1246
1246
  Example:
1247
1247
 
@@ -140,7 +140,8 @@ module Gitlab
140
140
  set_qa_user_agent
141
141
  env = @omnibus_gitlab_rails_env.merge(
142
142
  {
143
- 'GITLAB_ALLOW_SEPARATE_CI_DATABASE' => Runtime::Env.allow_separate_ci_database.to_s
143
+ 'GITLAB_ALLOW_SEPARATE_CI_DATABASE' => Runtime::Env.allow_separate_ci_database.to_s,
144
+ 'COVERBAND_ENABLED' => Runtime::Env.coverband_enabled?.to_s
144
145
  }
145
146
  )
146
147
 
@@ -24,6 +24,7 @@ module Gitlab
24
24
  'AWS_S3_REGION' => :aws_s3_region,
25
25
  'CACHE_NAMESPACE_NAME' => :cache_namespace_name,
26
26
  'CHROME_DISABLE_DEV_SHM' => :chrome_disable_dev_shm,
27
+ 'COVERBAND_ENABLED' => :coverband_enabled,
27
28
  'CI' => :ci,
28
29
  'CI_JOB_ID' => :ci_job_id,
29
30
  'CI_JOB_NAME' => :ci_job_name,
@@ -468,6 +469,10 @@ module Gitlab
468
469
  enabled?(env_var_value_if_defined('GITLAB_ALLOW_SEPARATE_CI_DATABASE'), default: false)
469
470
  end
470
471
 
472
+ def coverband_enabled?
473
+ enabled?(env_var_value_if_defined('COVERBAND_ENABLED'), default: false)
474
+ end
475
+
471
476
  def mock_github_enabled?
472
477
  enabled?(env_var_value_if_defined('QA_MOCK_GITHUB'), default: true)
473
478
  end
@@ -28,7 +28,7 @@ module Gitlab
28
28
 
29
29
  ai_gateway.instance do
30
30
  gitlab.instance do
31
- set_up_duo_pro(gitlab) if @use_cloud_license
31
+ set_up_gitlab_duo(gitlab) if @use_cloud_license
32
32
  run_specs(gitlab, *rspec_args)
33
33
  end
34
34
  end
@@ -55,14 +55,14 @@ module Gitlab
55
55
  ai_gateway.configure_environment(gitlab_hostname: gitlab_hostname)
56
56
  end
57
57
 
58
- def set_up_duo_pro(gitlab)
59
- Runtime::Logger.info('Setting up Duo Pro on GitLab instance')
58
+ def set_up_gitlab_duo(gitlab)
59
+ Runtime::Logger.info('Setting up Gitlab Duo on GitLab instance')
60
60
 
61
61
  gitlab.docker.copy(gitlab.name, SETUP_SRC_PATH, SETUP_DEST_PATH)
62
62
 
63
63
  gitlab.docker.exec(
64
64
  gitlab.name,
65
- "ASSIGN_SEATS=#{@assign_seats} HAS_ADD_ON=#{@has_add_on} gitlab-rails runner #{SETUP_DEST_PATH}/duo_pro_setup.rb",
65
+ "ASSIGN_SEATS=#{@assign_seats} HAS_ADD_ON=#{@has_add_on} gitlab-rails runner #{SETUP_DEST_PATH}/gitlab_duo_setup.rb",
66
66
  mask_secrets: gitlab.secrets
67
67
  )
68
68
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module QA
5
- VERSION = '14.15.0'
5
+ VERSION = '14.17.0'
6
6
  end
7
7
  end
@@ -95,6 +95,7 @@ module RuboCop
95
95
  'CI_PIPELINE_URL' => :ci_pipeline_url,
96
96
  'CI_PIPELINE_CREATED_AT' => :ci_pipeline_created_at,
97
97
  'CI_MERGE_REQUEST_IID' => :ci_merge_request_iid,
98
+ 'COVERBAND_ENABLED' => :coverband_enabled,
98
99
  'GITLAB_CI' => :gitlab_ci,
99
100
  'ELASTIC_URL' => :elastic_url,
100
101
  'GITLAB_QA_LOOP_RUNNER_MINUTES' => :gitlab_qa_loop_runner_minutes,
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class DuoProSetup
3
+ require 'active_support/core_ext/object/blank'
4
+
5
+ class GitlabDuoSetup
4
6
  class << self
5
7
  def configure!
6
8
  activate_cloud_license
@@ -11,7 +13,7 @@ class DuoProSetup
11
13
  # that the service access token has been generated before proceeding
12
14
  verify_service_access_token
13
15
 
14
- assign_duo_pro_seat_to_admin if enabled?('ASSIGN_SEATS')
16
+ assign_duo_seat_to_admin if enabled?('ASSIGN_SEATS')
15
17
  end
16
18
 
17
19
  private
@@ -29,32 +31,31 @@ class DuoProSetup
29
31
  end
30
32
  end
31
33
 
34
+ def token_count
35
+ ::CloudConnector::ServiceAccessToken.active.count
36
+ end
37
+
32
38
  def verify_service_access_token
33
39
  puts 'Waiting for service access token to be available...'
34
40
 
35
41
  max_attempts = 3
36
42
  attempts = 0
37
43
 
38
- until (tokens = ::CloudConnector::ServiceAccessToken.active.count)&.positive? || attempts == max_attempts
44
+ until token_count&.positive? || attempts == max_attempts
39
45
  puts 'Attempting to verify access token exists...'
40
46
  attempts += 1
41
47
  sleep 30
42
48
  end
43
49
 
44
- return if tokens&.positive?
50
+ return if token_count&.positive?
45
51
 
46
52
  puts "Failed to create service access token after #{max_attempts} attempts"
47
53
  exit 1
48
54
  end
49
55
 
50
- def assign_duo_pro_seat_to_admin
51
- puts 'Assigning Duo Pro seat to admin...'
52
-
53
- admin = User.find_by(username: 'root')
54
- add_on = GitlabSubscriptions::AddOnPurchase.find_by(add_on: GitlabSubscriptions::AddOn.code_suggestions.last)
55
-
56
+ def assign_duo_seat_to_admin
56
57
  result = ::GitlabSubscriptions::UserAddOnAssignments::SelfManaged::CreateService.new(
57
- add_on_purchase: add_on, user: admin
58
+ add_on_purchase: add_on_purchase, user: admin
58
59
  ).execute
59
60
 
60
61
  if result.is_a?(ServiceResponse) && result[:status] == :success
@@ -70,7 +71,33 @@ class DuoProSetup
70
71
  def enabled?(key, default: nil)
71
72
  ENV.fetch(key, default) == 'true'
72
73
  end
74
+
75
+ def find_add_on_purchase(add_on:)
76
+ GitlabSubscriptions::AddOnPurchase.find_by(add_on: add_on)
77
+ end
78
+
79
+ def duo_pro_add_on
80
+ find_add_on_purchase(add_on: GitlabSubscriptions::AddOn.code_suggestions.last)
81
+ end
82
+
83
+ def duo_enterprise_add_on
84
+ find_add_on_purchase(add_on: GitlabSubscriptions::AddOn.duo_enterprise.last)
85
+ end
86
+
87
+ def admin
88
+ User.find_by(username: 'root')
89
+ end
90
+
91
+ def add_on_purchase
92
+ if duo_enterprise_add_on.present?
93
+ puts 'Assigning Duo Enterprise seat to admin...'
94
+ duo_enterprise_add_on
95
+ else
96
+ puts 'Assigning Duo Pro seat to admin...'
97
+ duo_pro_add_on
98
+ end
99
+ end
73
100
  end
74
101
  end
75
102
 
76
- DuoProSetup.configure!
103
+ GitlabDuoSetup.configure!
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: 14.15.0
4
+ version: 14.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitLab Quality
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-09-23 00:00:00.000000000 Z
11
+ date: 2024-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -502,7 +502,7 @@ files:
502
502
  - support/manifests/suggested_reviewer/pubsub.yaml
503
503
  - support/manifests/suggested_reviewer/recommender-bot.yaml
504
504
  - support/manifests/suggested_reviewer/recommender.yaml
505
- - support/setup/duo_pro_setup.rb
505
+ - support/setup/gitlab_duo_setup.rb
506
506
  - tls_certificates/authority/ca.crt
507
507
  - tls_certificates/authority/ca.key
508
508
  - tls_certificates/authority/ca.pem