gitlab-qa 14.11.0 → 14.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +2 -2
- data/Gemfile.lock +1 -1
- data/docs/what_tests_can_be_run.md +1 -1
- data/lib/gitlab/qa/component/ai_gateway.rb +71 -1
- data/lib/gitlab/qa/component/gitlab.rb +1 -0
- data/lib/gitlab/qa/scenario/test/omnibus/update_from_previous.rb +24 -6
- data/lib/gitlab/qa/support/gitlab_version_info.rb +4 -1
- data/lib/gitlab/qa/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f22d815fd3ac524d090783dfbd902ff3c88aab3e4429cddac39168264524210d
|
4
|
+
data.tar.gz: 0d68738dc9dd3c5ef7350a5243221aa161919b9e8fc4e4296253124c137189c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba2ab93435b8078b4697b9f90bb7e189ff70dd12218890b1333a686f57b4ae498a3ee1b8eaf40861ba0b3e16fe3b65068c385f27345999ccf73e1eb78f9238a0
|
7
|
+
data.tar.gz: 6d6f7604d765ca59c5072477c28e29e298dc475d13bf614fcebead4e8612ba1dcd427c9920b536cb0bb9b0046e565f85db1e080918519ccbaab1dfef28d940ea
|
data/.gitlab-ci.yml
CHANGED
@@ -8,9 +8,10 @@
|
|
8
8
|
- vendor/ruby
|
9
9
|
|
10
10
|
include:
|
11
|
-
- component:
|
11
|
+
- component: ${CI_SERVER_FQDN}/gitlab-org/components/danger-review/danger-review@1.4.0
|
12
12
|
inputs:
|
13
13
|
job_image: "${CI_REGISTRY}/gitlab-org/gitlab-build-images/debian-${DEBIAN_VERSION}-ruby-${RUBY_VERSION}"
|
14
|
+
job_stage: "check"
|
14
15
|
- component: gitlab.com/gitlab-org/components/gem-release/gem-release@~latest
|
15
16
|
|
16
17
|
stages:
|
@@ -98,7 +99,6 @@ cache-gems:
|
|
98
99
|
- Gemfile.lock
|
99
100
|
|
100
101
|
danger-review:
|
101
|
-
stage: check
|
102
102
|
needs:
|
103
103
|
- job: cache-gems
|
104
104
|
optional: true
|
data/Gemfile.lock
CHANGED
@@ -86,7 +86,7 @@ All environment variables used by GitLab QA should be defined in [`lib/gitlab/qa
|
|
86
86
|
| `QA_INFLUXDB_TOKEN` |- | InfluxDB token for test metrics reporting | No|
|
87
87
|
| `QA_RUN_TYPE` |- | QA run type like `staging-full`, `canary`, `production` etc. Used in test metrics reporting | No|
|
88
88
|
| `QA_VALIDATE_RESOURCE_REUSE` | `false` | Set to `true` to [validate resource reuse](https://docs.gitlab.com/ee/development/testing_guide/end_to_end/resources.html#reusable-resources) after a test suite | No |
|
89
|
-
| `QA_USE_PUBLIC_IP_API` | `false` | When performing Instance tests against a remote/pre-existing instance, use an API to detect the public API for requests coming from gitlab-qa. Used by tests that exercise IP-address restrictions and similar
|
89
|
+
| `QA_USE_PUBLIC_IP_API` | `false` | When performing Instance tests against a remote/pre-existing instance, use an API to detect the public API for requests coming from gitlab-qa. Used by tests that exercise IP-address restrictions and similar | No |
|
90
90
|
| `QA_GITHUB_USERNAME` |- | Username for authenticating with GitHub. | No|
|
91
91
|
| `QA_GITHUB_PASSWORD` |- | Password for authenticating with GitHub. | No|
|
92
92
|
| `GITLAB_QA_LOOP_RUNNER_MINUTES` | `1` | Minutes to run and repeat a spec while using the '--loop' option; default value is 1 minute. | No|
|
@@ -8,6 +8,74 @@ module Gitlab
|
|
8
8
|
DOCKER_IMAGE_TAG = 'latest'
|
9
9
|
LOG_DIR = '/var/log'
|
10
10
|
|
11
|
+
# Test signing key to enable direct connection code completions
|
12
|
+
# https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist/-/blob/97f54f4b7e43258a39bba7f29f38fe44bd316ce5/example.env#L79
|
13
|
+
TEST_SIGNING_KEY =
|
14
|
+
<<~SIGNING_KEY
|
15
|
+
-----BEGIN PRIVATE KEY-----
|
16
|
+
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQD35X6SQq7VuIV8
|
17
|
+
jRNta9yfQJzVLqfYOFwSqismmvR1/2y/pO7HWsXo1HhkQdzF7U1zJLh8b0PiSkDE
|
18
|
+
dpUzkt5b4mPIit7khx7/wMi+t+gi1dpP+gTXxqOB8A/UzvQxBEKhizoGw/hG7vzT
|
19
|
+
MYqJRO1xHCYsMNU2TfWuoGR/7RXIidXzXmEShZ6bFeEWqupV7D0X6n8WVMd+NrZZ
|
20
|
+
lCNP0O67kCZGpABHcQ/uDUcRhyHYFkGHoSwp7KS2416PXMiRs01VRUG7fnOkgo4C
|
21
|
+
zyPWfuzSMjkKPm9gr9P0qYGsNrOBmV0guyLg4JWcVhDvkuh32r/kHrwxwUDYSLyI
|
22
|
+
GfAKKmZDAgMBAAECggEAKLfCEdVw0PCywayNKQdIgRf51W0JFhOGfBewvXHs/ty/
|
23
|
+
nhLsmEN+sn8DxLlUwWX4YhYBVN8UcBJGOn7yhDrML0eA9asUcBu0VHSer0TslPGP
|
24
|
+
dFzazXPL3kdHh8BJN9aSozoyg8ijT/NoBRXkGCasNvdVWyOCQfM4NutoK+MOFZbL
|
25
|
+
krtGPWfjTPByaZnV1PDJq95wz6LQeSdNwZLABE4YIrBxg0V1zu1gb0paltHZjPaM
|
26
|
+
68rm6Hp78CqI/5v9/RqQaso8aYVdjBaEkEI40CgKZY8Jm04NE4EcQM4Z4IYFc8I/
|
27
|
+
Ewj0giQIkZrGuucOA9S8TNqDjerv+8NoLMRCRcTk8QKBgQD9nHZGdW+2+IjShTal
|
28
|
+
EzjHH37APQKXYi0R9IESdzRnkUrL/8Rnxe5f7VxmDXJys0+IGo+8JoqGRUWJD8WZ
|
29
|
+
oBNW8oqJ4OH/dH07v2W0a0L0Z0Fcq6lv6tFcq1inSLPlk6EW3h4vTlrknuQ6QaKq
|
30
|
+
74SksBB4dCGDLlOaL8jldg9YVwKBgQD6O0CciiL3xVdnx4cGHDEjs9UU10z0EeVs
|
31
|
+
0gNxdAdkQEdgj9wI1yzNywFXtI+UA26j7207vYcU0hQ029roJN5ogTOkcCuf9WPQ
|
32
|
+
RV/+BQhiEJGYmZF8KlWiCB1HTxvc3p04EmIsp1N6yuqoE0jUFIS3A4GYYHPDZwDa
|
33
|
+
G8Y+W68d9QKBgQC7aFxqcqusDPqmfrRDxfGGC7sRecQpc+4UP5cFuzrpcY9RMl7D
|
34
|
+
xJsDHhbSfwtcwS57SA2BHwXsdNIOl64QeR7xeGdxvdGjgURt22DfsweWLZs6TMv3
|
35
|
+
nRE7Jo9rhqkRdEds65RopsE6AkRq3EfFgxuEy2pQaJi/JIO5A6i0D8sFHwKBgQCI
|
36
|
+
rtDuMO5E1QCXaX+xsLiOve5IggpAz324YUcMM8rN0earMimIkrCggKDtHW3H9c/7
|
37
|
+
sA7EsRQWJWJwNR9v6qOqBdkFm1fY+htZamuyv2EC3/YHmurDHgTEixYjG20mylqq
|
38
|
+
hDAoIAYTbr+aq13+qm6L4VhquVTCiYMHoGA7M62F+QKBgQCfTv5XVu+bEEBKyTkf
|
39
|
+
oVWjaLbO99zrgRYmZ9zhiRtlYFKefQ4kKxr+SRcia2dxQiNVPh5qUkX6ukvgCEVl
|
40
|
+
GoFTlopsX/CbilNarkwa/nvgQQeZAlrFpONifrtfZffV2Cs6wcwYAL8W5qFtl6iy
|
41
|
+
ZpLGJZdEWAPTxB6ppnDC75/KOg==
|
42
|
+
-----END PRIVATE KEY-----
|
43
|
+
SIGNING_KEY
|
44
|
+
|
45
|
+
# Test validation key to enable direct connection code completions
|
46
|
+
# https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist/-/blob/97f54f4b7e43258a39bba7f29f38fe44bd316ce5/example.env#L79
|
47
|
+
TEST_VALIDATION_KEY =
|
48
|
+
<<~VALIDATION_KEY
|
49
|
+
-----BEGIN PRIVATE KEY-----
|
50
|
+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDOAJNEB8EoyCAk
|
51
|
+
acSevXg5md0/JJGxBrHpIHqDuSf5FEENU0eGCc3PLZh5IjFcijGThMy0r/OMQn/n
|
52
|
+
/KAVCLlyPBaLEGsxqXJcW2CmNM24A3zyR4b7ghB+POKJY9lD2JoUWe57+B0IgZuz
|
53
|
+
PQbwRvuO7ULsw4xgGoLcoiscYMzKEWuFKDrteim+2vjCif5DDohKZQc3Ic8dwOtL
|
54
|
+
2C6+dV2TdyK0JPD7Kc1ONnH3S/VWJ8W5DDO1q5MrwJ+CQMaofHRqpbZrc66i5v2y
|
55
|
+
6/ooB0W14D1Qy4GmMIkLnkdP9UcYRHL7cVDv0D+bHs0xIyTXgbZaL78VFUyqeq23
|
56
|
+
qR4opOmFAgMBAAECggEABiJ5lZFkN4ew1VoaUzPclwfgUSy7SKSkuwbkPx9OHm/I
|
57
|
+
+XxHvqkfaj0MXlxzUIiDrhtKpqgwE4w4wjrWtZRQmXif9JI6RFIB0thHH4v7rbAv
|
58
|
+
kgjT7zzSAEBl6qYrkTFWcqa0Sxgkx90RkEaP+gB90KV7fxDaZv5DHrjsRGhpkNbi
|
59
|
+
8qtJOrvY6we6nx/YaD3iK69qQk6ktRg1AYUDH3xjBIIzo6brqlL2NJ+Q4VerrHFU
|
60
|
+
2EhTXto+4Y51Qjpas5B7DHmEhghZtYsMceuqFNvDQgGg1IsBPB4icTIREzHJ0rj3
|
61
|
+
Xgh5DMJGYb0p7Ktm74jciTdFIHeDMUCLoxxSPTZavQKBgQDs1njL0VR1hZKiGihO
|
62
|
+
fP0L3BwNL0H6uqKOlPP+DwdnNv7Q99xMKe9qcGWeiFXrLDkVMkd0M2LfU4SH5XUO
|
63
|
+
mt0YSC7Fn/pwozbk61k9+oEnL9cwDpwFwr46ccY6hmp3iihLTrgDuAi0CMSurZrC
|
64
|
+
mnqOOAxuSq6D7a/yhNKdEvckqwKBgQDeq2tIXlWVPXBY6CgIhUakq0oqHn35lhx4
|
65
|
+
CJuc1cujm1C68/UiZvxRK1LLAcFlDLl7+lnCSKnNn6fwK+jCsEsGT8ZuCJ2FznGH
|
66
|
+
wN6B3qrgEsB+FgC6qLir/o83E8I0tSOITaWHHvIc/l1PuXHJbwfCd2yB1sdeshID
|
67
|
+
x9o38/pKjwKBgH1YQRQ11IpiSCnMyDpKAi7Nrnb35OaK8k+d28hBMfzZaWE1XP1e
|
68
|
+
UFy34cBWjYpqnEdwlcqVC6YAcKrvsNUq9wrL4R0svwHwD7R2LoQT2VjhA/VmNgMC
|
69
|
+
f2U1I+GDlENx9kNtBQzK0Khf36BHNxn5YhV06ndQxS4DlNQ4obMJ/40DAoGBAIWm
|
70
|
+
DfaZ6HRzNAOpFJ5IoGYmCZXOR36PAvdo8z3ndRr2FjagRvonJjrx7fe7TgEA6jPn
|
71
|
+
yAg85O5ubbZSJJr2hZF8QHW65hFyH+KDeQoqRBXKK4+CVV2z92QEnqFIUsCgGHuv
|
72
|
+
XzMC9/8/DXLUs99brSSj2ZT0/SVxbC6ovennnssxAoGALtm2AUBMgsU6b9B+Fp2L
|
73
|
+
ZBQSwkyd3bOD7sFJHhbmiRE/ag2lsaE+dNg9H42fhOV0MXfPkEBWCIaGt931T5+q
|
74
|
+
FVATlTTDAx2CRmJCOyXkQ6mGBFTkQPqDwmWvwjbK9B5r0SnGfCpk4uEYWoYYsX05
|
75
|
+
t14Huwf9VVUTCfEi0+wWcko=
|
76
|
+
-----END PRIVATE KEY-----
|
77
|
+
VALIDATION_KEY
|
78
|
+
|
11
79
|
def name
|
12
80
|
@name ||= 'ai-gateway'
|
13
81
|
end
|
@@ -26,7 +94,9 @@ module Gitlab
|
|
26
94
|
'AIGW_CUSTOMER_PORTAL_URL' => Runtime::Env.customer_portal_url,
|
27
95
|
'AIGW_MOCK_MODEL_RESPONSES' => true,
|
28
96
|
'AIGW_LOGGING__LEVEL' => 'debug',
|
29
|
-
'AIGW_LOGGING__TO_FILE' => "..#{LOG_DIR}/modelgateway_debug.log"
|
97
|
+
'AIGW_LOGGING__TO_FILE' => "..#{LOG_DIR}/modelgateway_debug.log",
|
98
|
+
'AIGW_SELF_SIGNED_JWT__SIGNING_KEY' => TEST_SIGNING_KEY,
|
99
|
+
'AIGW_SELF_SIGNED_JWT__VALIDATION_KEY' => TEST_VALIDATION_KEY
|
30
100
|
}
|
31
101
|
end
|
32
102
|
end
|
@@ -9,7 +9,7 @@ module Gitlab
|
|
9
9
|
using Rainbow
|
10
10
|
|
11
11
|
# Test update from N - 1 (major|minor|patch) version to current release
|
12
|
-
# Run smoke test suite on previous release to populate some data in database before update
|
12
|
+
# Run health check (or smoke if below 17.1.0) test suite on previous release to populate some data in database before update
|
13
13
|
#
|
14
14
|
# @example
|
15
15
|
# perform(gitlab-ee:dev-tag, 15.3.0-pre, major)
|
@@ -24,6 +24,7 @@ module Gitlab
|
|
24
24
|
def perform(release, current_version, semver_component, from_edition = nil, *rspec_args)
|
25
25
|
# When from_edition isn't actually passed but RSpec args arg passed with `-- rspec_args...`,
|
26
26
|
# from_edition is wrongly set to `--`, so we fix that here.
|
27
|
+
|
27
28
|
if from_edition == "--"
|
28
29
|
rspec_args.prepend('--')
|
29
30
|
from_edition = nil
|
@@ -46,15 +47,31 @@ module Gitlab
|
|
46
47
|
|
47
48
|
attr_reader :current_release, :upgrade_path
|
48
49
|
|
50
|
+
# Extract version number from a string, for example: "gitlab/gitlab-ee:15.11.13-ee.0"
|
51
|
+
#
|
52
|
+
# @param [String] version_string version string to extract from
|
53
|
+
# @return [String] extracted version number
|
54
|
+
def extract_version(version_string)
|
55
|
+
QA::Release.new(version_string).tag.split('-').first
|
56
|
+
end
|
57
|
+
|
49
58
|
# Perform update
|
50
59
|
#
|
51
60
|
# @param [Array] rspec_args
|
52
61
|
# @return [void]
|
62
|
+
# rubocop:disable Metrics/AbcSize
|
53
63
|
def update(rspec_args)
|
54
64
|
Docker::Volumes.new.with_temporary_volumes do |volumes|
|
65
|
+
first_release_version = extract_version(upgrade_path.first.release)
|
66
|
+
seeding_suite_args = if Gem::Version.new(first_release_version) < Gem::Version.new("17.1.0")
|
67
|
+
["--", "--tag", "smoke"]
|
68
|
+
else
|
69
|
+
["--", "--tag", "health_check"]
|
70
|
+
end
|
71
|
+
|
55
72
|
# deploy first release in upgrade path and run specs to populate db
|
56
73
|
Runtime::Logger.info("Running the first release in upgrade path: #{upgrade_path.first}")
|
57
|
-
run_gitlab(upgrade_path.first, volumes,
|
74
|
+
run_gitlab(upgrade_path.first, volumes, seeding_suite_args)
|
58
75
|
|
59
76
|
# deploy releases in upgrade path
|
60
77
|
upgrade_path[1..].each do |release|
|
@@ -67,6 +84,7 @@ module Gitlab
|
|
67
84
|
run_gitlab(current_release, volumes, rspec_args, skip_setup: true)
|
68
85
|
end
|
69
86
|
end
|
87
|
+
# rubocop:enable Metrics/AbcSize
|
70
88
|
|
71
89
|
# Deploy gitlab instance and optionally run specs
|
72
90
|
#
|
@@ -100,8 +118,8 @@ module Gitlab
|
|
100
118
|
# @param [Array] rspec_args
|
101
119
|
# @return [void]
|
102
120
|
def run_specs(gitlab, release, rspec_args) # rubocop:disable Metrics/AbcSize
|
103
|
-
Runtime::Logger.info("Running
|
104
|
-
Runtime::Logger.info("Running
|
121
|
+
Runtime::Logger.info("Running test suite to verify update and seed data in environment") unless upgrade_path.first != release
|
122
|
+
Runtime::Logger.info("Running test suite to verify update") unless current_release != release
|
105
123
|
|
106
124
|
Component::Specs.perform do |specs|
|
107
125
|
specs.release = release
|
@@ -119,11 +137,11 @@ module Gitlab
|
|
119
137
|
end
|
120
138
|
rescue Support::ShellCommand::StatusError => e
|
121
139
|
if release == current_release # only fail on current release
|
122
|
-
Runtime::Logger.error("Failed to run
|
140
|
+
Runtime::Logger.error("Failed to run health check after final upgrade to release '#{release}'")
|
123
141
|
raise e
|
124
142
|
end
|
125
143
|
|
126
|
-
Runtime::Logger.warn("
|
144
|
+
Runtime::Logger.warn("Health check verification for release '#{gitlab.release}' finished with errors!")
|
127
145
|
end
|
128
146
|
|
129
147
|
# Run specs on first release to populate database and release being tested
|
@@ -7,6 +7,8 @@ module Gitlab
|
|
7
7
|
VERSION_PATTERN = /^(?<version>\d+\.\d+\.\d+)/
|
8
8
|
COMPONENT_PATTERN = /^(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)/
|
9
9
|
|
10
|
+
VersionNotFoundError = Class.new(RuntimeError)
|
11
|
+
|
10
12
|
# Get previous gitlab version
|
11
13
|
#
|
12
14
|
# @param [String] current_version
|
@@ -101,7 +103,8 @@ module Gitlab
|
|
101
103
|
return fallback_minor unless tags
|
102
104
|
return previous_major if current_minor.zero?
|
103
105
|
|
104
|
-
versions.find { |version| version.to_s.match?(/^#{current_major}\.#{current_minor - 1}/) }
|
106
|
+
versions.find { |version| version.to_s.match?(/^#{current_major}\.#{current_minor - 1}/) } ||
|
107
|
+
raise(VersionNotFoundError, "Previous minor version for current version #{current_version} not available on Dockerhub (yet)")
|
105
108
|
end
|
106
109
|
|
107
110
|
# Previous first minor version
|
data/lib/gitlab/qa/version.rb
CHANGED
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.
|
4
|
+
version: 14.13.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-
|
11
|
+
date: 2024-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: climate_control
|