gitlab-qa 6.22.1 → 6.23.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/docs/what_tests_can_be_run.md +34 -0
- data/lib/gitlab/qa/component/specs.rb +10 -2
- data/lib/gitlab/qa/docker/engine.rb +10 -4
- data/lib/gitlab/qa/runner.rb +5 -0
- data/lib/gitlab/qa/runtime/env.rb +1 -0
- 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: be38f6268c3a91ecdeee390c040f658e07194eb1e3d5f99694d50c68540a5461
|
4
|
+
data.tar.gz: bb9fd66f54e18792a9d5a8bb445fefe7cc63d824ef445b61b60f2c7ef378422f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54f0d06a51b27c5e4ea0c1352ca01f634d8e7bc00475345c87650beaf783e7f4dcc4cc53828d54e75b01ada167f002c1a51451147afac400a27ae9132008ee30
|
7
|
+
data.tar.gz: a651ecb24eb49d6e3997c5c6abfef1048900f760d81374e35b9104b05b25210f94c0ecf4de65e5e79c710ca7552153da7aab36e765b5e1acd9c829cf6feb36c1
|
data/.gitlab-ci.yml
CHANGED
@@ -12,13 +12,13 @@ default:
|
|
12
12
|
cache:
|
13
13
|
key:
|
14
14
|
files:
|
15
|
-
- Gemfile
|
15
|
+
- Gemfile.lock
|
16
16
|
- gitlab-qa.gemspec
|
17
17
|
paths:
|
18
18
|
- vendor/ruby
|
19
19
|
before_script:
|
20
20
|
- bundle version
|
21
|
-
- bundle install --
|
21
|
+
- bundle install --jobs=$(nproc) --path=vendor --retry=3 --quiet && bundle check
|
22
22
|
- if [ -n "$TRIGGERED_USER" ] && [ -n "$TRIGGER_SOURCE" ]; then
|
23
23
|
echo "Pipeline triggered by $TRIGGERED_USER at $TRIGGER_SOURCE";
|
24
24
|
fi
|
@@ -143,6 +143,40 @@ To run EE tests, the `EE_LICENSE` environment variable needs to be set:
|
|
143
143
|
|
144
144
|
`$ export EE_LICENSE=$(cat /path/to/GitLab.gitlab_license)`
|
145
145
|
|
146
|
+
## Specifying the GitLab QA image to use
|
147
|
+
|
148
|
+
By default, `gitlab-qa` infers the QA image to use based on the GitLab image.
|
149
|
+
For instance, if you run the following:
|
150
|
+
|
151
|
+
```
|
152
|
+
$ gitlab-qa Test::Instance::Image gitlab/gitlab-ee:12.4.0-ee.0
|
153
|
+
```
|
154
|
+
|
155
|
+
Then, `gitlab-qa` would infer `gitlab/gitlab-ee-qa:12.4.0-ee.0` as the QA image
|
156
|
+
based on the GitLab image (note the `-qa` suffix in the image name).
|
157
|
+
|
158
|
+
In some cases, you'll want to use a specific QA image instead of letting
|
159
|
+
`gitlab-qa` infer the QA image name from the GitLab image. Such cases can be
|
160
|
+
when you're doing local debugging/testing and you want to control the QA image
|
161
|
+
name, or in the CI where the QA image might be built by a project (e.g.
|
162
|
+
`gitlab-org/gitlab`, and the GitLab image might be built by another project
|
163
|
+
(e.g. `gitlab-org/omnibus-gitlab-mirror`).
|
164
|
+
|
165
|
+
To specify the QA image to use, pass the `--qa-image QA_IMAGE` option,
|
166
|
+
as follows:
|
167
|
+
|
168
|
+
```
|
169
|
+
$ gitlab-qa Test::Instance::Image --qa-image registry.gitlab.com/gitlab-org/gitlab/gitlab-ee-qa:branch-name EE
|
170
|
+
```
|
171
|
+
|
172
|
+
Additionally, setting the `$QA_IMAGE` environment variable achieve the same result,
|
173
|
+
without needing to pass the `--qa-image` option:
|
174
|
+
|
175
|
+
```
|
176
|
+
$ export QA_IMAGE="registry.gitlab.com/gitlab-org/gitlab/gitlab-ee-qa:branch-name"
|
177
|
+
$ gitlab-qa Test::Instance::Image EE
|
178
|
+
```
|
179
|
+
|
146
180
|
## Running a specific test (or set of tests)
|
147
181
|
|
148
182
|
In most of the scenarios listed below, if you don't want to run all the tests
|
@@ -23,7 +23,7 @@ module Gitlab
|
|
23
23
|
|
24
24
|
@docker.login(**release.login_params) if release.login_params
|
25
25
|
|
26
|
-
@docker.pull(
|
26
|
+
@docker.pull(qa_image) unless Runtime::Env.skip_pull?
|
27
27
|
|
28
28
|
puts "Running test suite `#{suite}` for #{release.project_name}"
|
29
29
|
|
@@ -43,7 +43,7 @@ module Gitlab
|
|
43
43
|
feature_flag_sets << [] unless feature_flag_sets.any?
|
44
44
|
|
45
45
|
feature_flag_sets.each do |feature_flag_set|
|
46
|
-
@docker.run(
|
46
|
+
@docker.run(qa_image, nil, suite, *args_with_flags(args, feature_flag_set)) do |command|
|
47
47
|
command << "-t --rm --net=#{network || 'bridge'}"
|
48
48
|
|
49
49
|
env.merge(Runtime::Env.variables).each do |key, value|
|
@@ -76,6 +76,14 @@ module Gitlab
|
|
76
76
|
def skip_tests?
|
77
77
|
Runtime::Scenario.attributes.include?(:run_tests) && !Runtime::Scenario.run_tests
|
78
78
|
end
|
79
|
+
|
80
|
+
def qa_image
|
81
|
+
if Runtime::Scenario.attributes.include?(:qa_image)
|
82
|
+
Runtime::Scenario.qa_image
|
83
|
+
else
|
84
|
+
"#{release.qa_image}:#{release.qa_tag}"
|
85
|
+
end
|
86
|
+
end
|
79
87
|
end
|
80
88
|
end
|
81
89
|
end
|
@@ -13,15 +13,15 @@ module Gitlab
|
|
13
13
|
Docker::Command.execute(%(login --username "#{username}" --password "#{password}" #{registry}), mask_secrets: password)
|
14
14
|
end
|
15
15
|
|
16
|
-
def pull(image, tag)
|
17
|
-
Docker::Command.execute("pull #{image
|
16
|
+
def pull(image, tag = nil)
|
17
|
+
Docker::Command.execute("pull #{full_image_name(image, tag)}")
|
18
18
|
end
|
19
19
|
|
20
20
|
def run(image, tag, *args)
|
21
21
|
Docker::Command.new('run').tap do |command|
|
22
22
|
yield command if block_given?
|
23
23
|
|
24
|
-
command <<
|
24
|
+
command << full_image_name(image, tag)
|
25
25
|
command << args if args.any?
|
26
26
|
|
27
27
|
command.execute!
|
@@ -43,7 +43,7 @@ module Gitlab
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def read_file(image, tag, path, &block)
|
46
|
-
cat_file = "run --rm --entrypoint /bin/cat #{image
|
46
|
+
cat_file = "run --rm --entrypoint /bin/cat #{full_image_name(image, tag)} #{path}"
|
47
47
|
Docker::Command.execute(cat_file, &block)
|
48
48
|
end
|
49
49
|
|
@@ -94,6 +94,12 @@ module Gitlab
|
|
94
94
|
def ps(name = nil)
|
95
95
|
Docker::Command.execute(['ps', name].compact.join(' '))
|
96
96
|
end
|
97
|
+
|
98
|
+
private
|
99
|
+
|
100
|
+
def full_image_name(image, tag)
|
101
|
+
[image, tag].compact.join(':')
|
102
|
+
end
|
97
103
|
end
|
98
104
|
end
|
99
105
|
end
|
data/lib/gitlab/qa/runner.rb
CHANGED
@@ -7,6 +7,7 @@ module Gitlab
|
|
7
7
|
def self.run(args)
|
8
8
|
Runtime::Scenario.define(:teardown, true)
|
9
9
|
Runtime::Scenario.define(:run_tests, true)
|
10
|
+
Runtime::Scenario.define(:qa_image, Runtime::Env.qa_image) if Runtime::Env.qa_image
|
10
11
|
|
11
12
|
@options = OptionParser.new do |opts|
|
12
13
|
opts.banner = 'Usage: gitlab-qa [options] Scenario URL [[--] path] [rspec_options]'
|
@@ -20,6 +21,10 @@ module Gitlab
|
|
20
21
|
Runtime::Scenario.define(:teardown, false)
|
21
22
|
end
|
22
23
|
|
24
|
+
opts.on('--qa-image QA_IMAGE', String, 'Specifies a QA image to be used instead of inferring it from the GitLab image. See Gitlab::QA::Release#qa_image') do |value|
|
25
|
+
Runtime::Scenario.define(:qa_image, value)
|
26
|
+
end
|
27
|
+
|
23
28
|
opts.on_tail('-v', '--version', 'Show the version') do
|
24
29
|
require 'gitlab/qa/version'
|
25
30
|
puts "#{$PROGRAM_NAME} : #{VERSION}"
|
@@ -10,6 +10,7 @@ module Gitlab
|
|
10
10
|
# These variables should be listed in /docs/what_tests_can_be_run.md#supported-gitlab-environment-variables
|
11
11
|
# unless they're defined elsewhere (e.g.: https://docs.gitlab.com/ee/ci/variables/predefined_variables.html)
|
12
12
|
ENV_VARIABLES = {
|
13
|
+
'QA_IMAGE' => :qa_image,
|
13
14
|
'QA_REMOTE_GRID' => :remote_grid,
|
14
15
|
'QA_REMOTE_GRID_USERNAME' => :remote_grid_username,
|
15
16
|
'QA_REMOTE_GRID_ACCESS_KEY' => :remote_grid_access_key,
|
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: 6.
|
4
|
+
version: 6.23.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Grzegorz Bizon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: climate_control
|