gitlab-qa 14.13.0 → 14.15.0

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: f22d815fd3ac524d090783dfbd902ff3c88aab3e4429cddac39168264524210d
4
- data.tar.gz: 0d68738dc9dd3c5ef7350a5243221aa161919b9e8fc4e4296253124c137189c1
3
+ metadata.gz: 497913af708d5bd502f32c82f052d0dbcfddb70142979c9e2ecf76ea40ab76d8
4
+ data.tar.gz: 730eec75c41c7805635602a68d461844062dc786bf953071bc80a0256f5fec97
5
5
  SHA512:
6
- metadata.gz: ba2ab93435b8078b4697b9f90bb7e189ff70dd12218890b1333a686f57b4ae498a3ee1b8eaf40861ba0b3e16fe3b65068c385f27345999ccf73e1eb78f9238a0
7
- data.tar.gz: 6d6f7604d765ca59c5072477c28e29e298dc475d13bf614fcebead4e8612ba1dcd427c9920b536cb0bb9b0046e565f85db1e080918519ccbaab1dfef28d940ea
6
+ metadata.gz: e8e4b3d39cf8cdf652cdd0001bd1f3238e8f707e51159b3e48a8bf43d8827485684e18734b345a8a793afdb36bdc2fb8fe36437160ee997dc6a04a4647fb1b7b
7
+ data.tar.gz: c353c880a71f75860f0ffb6e8bfd13360680bdc5f31573abaa12b455194529273498728d9bbbbe48b61ffda62fddf1b7e02ddc93d5e1abb1ca96e0cbd68ae2be
data/.gitlab-ci.yml CHANGED
@@ -152,7 +152,7 @@ package-and-test:
152
152
  include:
153
153
  - project: gitlab-org/gitlab
154
154
  ref: master
155
- file: .gitlab/ci/package-and-test/main.gitlab-ci.yml
155
+ file: .gitlab/ci/test-on-omnibus/main.gitlab-ci.yml
156
156
  rules:
157
157
  - if: '$CI_MERGE_REQUEST_IID'
158
158
  when: manual
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitlab-qa (14.13.0)
4
+ gitlab-qa (14.15.0)
5
5
  activesupport (>= 6.1, < 7.2)
6
6
  gitlab (~> 4.19)
7
7
  http (~> 5.0)
@@ -59,6 +59,12 @@ variable.
59
59
  export GITLAB_INITIAL_ROOT_PASSWORD="<GDK root password>"
60
60
  ```
61
61
 
62
+ **Note**: If you encounter the following error, you can resolve it by unsetting the Docker host environment variable using the command `unset DOCKER_HOST`:
63
+
64
+ ```
65
+ ERROR: error during connect: get "http://docker.local:2375/v1.24/images/json": dial tcp: lookup docker.local: no such host
66
+ ```
67
+
62
68
  ### Running EE tests
63
69
 
64
70
  When running EE tests you'll need to have a license available. GitLab engineers can [request a license](https://about.gitlab.com/handbook/developer-onboarding/#working-on-gitlab-ee).
@@ -375,6 +375,30 @@ $ export EE_LICENSE=$(cat /path/to/Geo.gitlab_license)
375
375
  $ gitlab-qa Test::Integration::Geo EE
376
376
  ```
377
377
 
378
+ [test-cvs]: ...
379
+
380
+ ### `Test::Integration::ContinuousVulnerabilityScanning EE|<full image address>`
381
+
382
+ This tests [Continuous Vulnerability Scanning](https://docs.gitlab.com/ee/user/application_security/continuous_vulnerability_scanning/)
383
+ which is functionality to allow updated vulnerabilities to be downloaded and shown for
384
+ relevant software dependencies.
385
+
386
+ It is designed to run against a particular end to end spec as per the example.
387
+
388
+ It is EE functionality and requires a license to be set.
389
+
390
+ **Required environment variables:**
391
+
392
+ - `EE_LICENSE`: A valid EE license.
393
+
394
+ Example:
395
+
396
+ ```shell
397
+ $ export EE_LICENSE=$(cat /path/to/gitlab_license)
398
+ $ export GITLAB_LICENSE_MODE=test
399
+ $ gitlab-qa Test::Integration::ContinuousVulnerabilityScanning EE
400
+ ````
401
+
378
402
  [test-geo]: https://gitlab.com/gitlab-org/gitlab-ee/blob/master/qa/qa/ee/scenario/test/geo.rb
379
403
 
380
404
  ### `Test::Integration::GitalyCluster CE|EE|<full image address>`
@@ -1166,7 +1190,7 @@ Testing import [by direct transfer](https://docs.gitlab.com/ee/user/group/import
1166
1190
 
1167
1191
  ### `AiGateway` Scenarios
1168
1192
 
1169
- The following `AiGateway` scenarios spin up a GitLab Omnibus instance integrated with a test AI Gateway using [fake models](https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist#faking-out-ai-models). These scenarios help to verify various configurations of cloud licensing and seat assignment work as expected when authenticating for AI features on self-managed instances.
1193
+ The following `AiGateway` scenarios spin up a GitLab Omnibus instance integrated with a test AI Gateway using [mocked models](https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist#mocking-ai-model-responses). These scenarios help to verify various configurations of cloud licensing and seat assignment work as expected when authenticating for AI features on self-managed instances.
1170
1194
 
1171
1195
  **Required environment variables:**
1172
1196
 
@@ -0,0 +1,2 @@
1
+ {"advisory":{"id":"<%= SecureRandom.uuid %>","source":"glad","title":"Arbitrary test vulnerability","description":"An arbitrary vulnerability exists for testing. This vulnerability should be picked up by Continuous Vulnerability Scanning.","cvss_v3":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","published_date":"<%= Date.today.prev_day.iso8601 %>","urls":["https://gitlab.com/willmeek"],"identifiers":[{"type":"cve","name":"CVE-2124-12345","value":"CVE-2124-12345","url":"https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2124-12345"},{"type":"ghsa","name":"GHSA-abcd-123e-fg4h","value":"GHSA-abcd-123e-fg4h","url":"https://gitlab.com/willmeek"},{"type":"cwe","name":"CWE-42","value":"42","url":"https://gitlab.com/willmeek"}]},"packages":[{"name":"RedCloth","purl_type":"gem","affected_range":"<=3.39.0","solution":"Upgrade to version 3.39.0 or above.","fixed_versions":["3.39.0"]}]}
2
+ {"advisory":{"id":"<%= SecureRandom.uuid %>","source":"glad","title":"Outdated test vulnerability","description":"An Outdated vulnerability exists for testing. This vulnerability should NOT be picked up by Continuous Vulnerability Scanning.","cvss_v3":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","published_date":"<%= (Date.today - 15).iso8601 %>","urls":["https://gitlab.com/willmeek"],"identifiers":[{"type":"cve","name":"CVE-2124-54321","value":"CVE-2124-54321","url":"https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2124-54321"},{"type":"ghsa","name":"GHSA-abcd-321e-fg4h","value":"GHSA-abcd-321e-fg4h","url":"https://gitlab.com/willmeek"},{"type":"cwe","name":"CWE-43","value":"43","url":"https://gitlab.com/willmeek"}]},"packages":[{"name":"RedCloth","purl_type":"gem","affected_range":"<=3.39.0","solution":"Upgrade to version 3.39.0 or above.","fixed_versions":["3.39.0"]}]}
@@ -76,6 +76,14 @@ module Gitlab
76
76
  -----END PRIVATE KEY-----
77
77
  VALIDATION_KEY
78
78
 
79
+ def initialize
80
+ super
81
+
82
+ # These keys are test keys and are safe to be shared, but masking them in logs so they do not raise concern
83
+ @secrets << TEST_SIGNING_KEY
84
+ @secrets << TEST_VALIDATION_KEY
85
+ end
86
+
79
87
  def name
80
88
  @name ||= 'ai-gateway'
81
89
  end
@@ -17,7 +17,8 @@ module Gitlab
17
17
  :environment,
18
18
  :runner_network,
19
19
  :airgapped_network,
20
- :additional_hosts
20
+ :additional_hosts,
21
+ :secrets
21
22
 
22
23
  def initialize
23
24
  @docker = Docker::Engine.new
@@ -28,6 +29,7 @@ module Gitlab
28
29
  @network_aliases = []
29
30
  @exec_commands = []
30
31
  @additional_hosts = []
32
+ @secrets = []
31
33
  end
32
34
 
33
35
  def add_network_alias(name)
@@ -109,7 +111,7 @@ module Gitlab
109
111
  end
110
112
 
111
113
  def start # rubocop:disable Metrics/AbcSize
112
- docker.run(image: image, tag: tag) do |command|
114
+ docker.run(image: image, tag: tag, mask_secrets: secrets) do |command|
113
115
  command << "-d"
114
116
  command << "--name #{name}"
115
117
  command << "--net #{network}"
@@ -29,8 +29,7 @@ module Gitlab
29
29
  :seed_admin_token,
30
30
  :seed_db,
31
31
  :skip_server_hooks,
32
- :gitaly_tls,
33
- :secrets
32
+ :gitaly_tls
34
33
 
35
34
  attr_writer :name, :relative_path
36
35
 
@@ -52,7 +51,6 @@ module Gitlab
52
51
  @seed_admin_token = Runtime::Scenario.seed_admin_token
53
52
  @seed_db = Runtime::Scenario.seed_db
54
53
  @skip_server_hooks = Runtime::Scenario.skip_server_hooks
55
- @secrets = []
56
54
 
57
55
  self.release = 'CE'
58
56
  end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'date'
4
+ require 'erb'
5
+ require 'pathname'
6
+
7
+ module Gitlab
8
+ module QA
9
+ module Scenario
10
+ module Test
11
+ module Integration
12
+ class ContinuousVulnerabilityScanning < Scenario::Template
13
+ def initialize
14
+ @network = Runtime::Env.docker_network
15
+ @tag = 'secure_cvs'
16
+ end
17
+
18
+ def perform(release, *rspec_args)
19
+ Component::Gitlab.perform do |gitlab|
20
+ setup_and_run_tests(gitlab, release, *rspec_args)
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def setup_and_run_tests(gitlab, release, *rspec_args)
27
+ set_up_gitlab(gitlab, release)
28
+ gitlab.instance do
29
+ place_new_vulnerabilities(gitlab)
30
+ run_specs(gitlab, *rspec_args)
31
+ end
32
+ end
33
+
34
+ def set_up_gitlab(gitlab, release)
35
+ gitlab.release = QA::Release.new(release)
36
+ gitlab.name = 'gitlab'
37
+ gitlab.network = @network
38
+ end
39
+
40
+ def place_new_vulnerabilities(gitlab)
41
+ write_vulnerabilities(gitlab, generate_filepath, generate_vulnerabilities)
42
+ start_advisory_sync_worker(gitlab)
43
+ end
44
+
45
+ def generate_vulnerabilities
46
+ template = File.read(File.expand_path('../../../../../../fixtures/cvs/vulnerabilities_template.erb', __dir__))
47
+ ERB.new(template).result(binding)
48
+ end
49
+
50
+ def generate_filepath
51
+ File.join(
52
+ "/opt/gitlab/embedded/service/gitlab-rails/vendor/package_metadata/advisories/v2/rubygem/#{Time.now.to_i}",
53
+ '000000000.ndjson'
54
+ )
55
+ end
56
+
57
+ def write_vulnerabilities(gitlab, filepath, content)
58
+ gitlab.docker.exec(gitlab.name, "mkdir -p #{File.dirname(filepath)}")
59
+ gitlab.docker.write_files(gitlab.name) { |f| f.write(filepath, content, false) }
60
+ end
61
+
62
+ def start_advisory_sync_worker(gitlab)
63
+ gitlab.docker.exec(gitlab.name, "PM_SYNC_IN_DEV=true gitlab-rails runner 'loop do PackageMetadata::AdvisoriesSyncWorker.new.perform; sleep 30; end' &")
64
+ end
65
+
66
+ def run_specs(gitlab, *rspec_args)
67
+ Runtime::Logger.info('Running Continuous Vulnerability Scanning spec...')
68
+ rspec_args << "--" unless rspec_args.include?('--')
69
+ rspec_args << "--tag" << @tag
70
+ run_spec_component(gitlab, rspec_args)
71
+ end
72
+
73
+ def run_spec_component(gitlab, rspec_args)
74
+ Component::Specs.perform do |specs|
75
+ specs.suite = 'Test::Instance::All'
76
+ specs.release = gitlab.release
77
+ specs.network = gitlab.network
78
+ specs.args = [gitlab.address, *rspec_args]
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gitlab
4
4
  module QA
5
- VERSION = '14.13.0'
5
+ VERSION = '14.15.0'
6
6
  end
7
7
  end
@@ -18,6 +18,7 @@ class AdminAccessTokenSeed
18
18
 
19
19
  admin_user.personal_access_tokens.build(token_params).tap do |pat|
20
20
  pat.set_token(TOKEN_VALUE)
21
+ pat.organization = Organizations::Organization.default_organization if Gitlab.version_info >= Gitlab::VersionInfo.new(17, 4)
21
22
  pat.save!
22
23
  end
23
24
 
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.13.0
4
+ version: 14.15.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-07-18 00:00:00.000000000 Z
11
+ date: 2024-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: climate_control
@@ -376,6 +376,7 @@ files:
376
376
  - docs/waits.md
377
377
  - docs/what_tests_can_be_run.md
378
378
  - exe/gitlab-qa
379
+ - fixtures/cvs/vulnerabilities_template.erb
379
380
  - fixtures/ldap/1_add_nodes.ldif
380
381
  - fixtures/ldap/2_add_users.ldif
381
382
  - fixtures/ldap/3_add_groups.ldif
@@ -450,6 +451,7 @@ files:
450
451
  - lib/gitlab/qa/scenario/test/integration/ai_gateway_no_seat_assigned.rb
451
452
  - lib/gitlab/qa/scenario/test/integration/chaos.rb
452
453
  - lib/gitlab/qa/scenario/test/integration/client_ssl.rb
454
+ - lib/gitlab/qa/scenario/test/integration/continuous_vulnerability_scanning.rb
453
455
  - lib/gitlab/qa/scenario/test/integration/elasticsearch.rb
454
456
  - lib/gitlab/qa/scenario/test/integration/geo.rb
455
457
  - lib/gitlab/qa/scenario/test/integration/gitaly_cluster.rb