gitlab-qa 0.4.0 → 0.5.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 +4 -4
- data/.gitlab-ci.yml +17 -12
- data/README.md +9 -3
- data/docs/README.md +4 -0
- data/docs/trainings.md +8 -0
- data/lib/gitlab/qa.rb +2 -0
- data/lib/gitlab/qa/component/specs.rb +2 -3
- data/lib/gitlab/qa/docker/volumes.rb +26 -0
- data/lib/gitlab/qa/release.rb +18 -3
- data/lib/gitlab/qa/runtime/env.rb +5 -1
- data/lib/gitlab/qa/scenario/test/integration/geo.rb +1 -3
- data/lib/gitlab/qa/scenario/test/omnibus/update.rb +30 -0
- data/lib/gitlab/qa/scenario/test/omnibus/upgrade.rb +8 -14
- data/lib/gitlab/qa/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c2b6de72f64ffc8c5b1400cb9a96ddf6734ca74
|
4
|
+
data.tar.gz: da79c5ba4b2e2c6b2113213fce6ea51810979508
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8aa3ad66f489c2c4996e4dba9f937b6fef4fceced5ae2b4b2f2f9d25c5ff2b8d48d3ecf71ead553ded3e1efe8e7a632cbbf28063f5338b830e08e117d61c1572
|
7
|
+
data.tar.gz: 463dbd089d21e6b49627b40b7cbbe04ecbd6f961e6605f90ef2ab0cc2066eb79118f4efee447ac627de3187f3e772a8f07fe4f23713f1cf09f4fb09f4e57bfc8
|
data/.gitlab-ci.yml
CHANGED
@@ -11,6 +11,7 @@ variables:
|
|
11
11
|
DOCKER_DRIVER: overlay
|
12
12
|
DOCKER_HOST: tcp://docker:2375
|
13
13
|
QA_SCREENSHOTS_DIR: $CI_PROJECT_DIR/screenshots
|
14
|
+
QA_LOGS_DIR: $CI_PROJECT_DIR/logs
|
14
15
|
|
15
16
|
before_script:
|
16
17
|
- bundle install
|
@@ -61,43 +62,47 @@ ee:version:
|
|
61
62
|
expire_in: 30d
|
62
63
|
paths:
|
63
64
|
- screenshots/*.png
|
65
|
+
- logs/*.log
|
64
66
|
|
65
67
|
ce:instance:
|
66
|
-
script: bin/qa Test::Instance::Image CE
|
68
|
+
script: bin/qa Test::Instance::Image ${RELEASE:=CE}
|
67
69
|
<<: *test
|
68
70
|
|
69
71
|
ee:instance:
|
70
|
-
script: bin/qa Test::Instance::Image EE
|
72
|
+
script: bin/qa Test::Instance::Image ${RELEASE:=EE}
|
71
73
|
<<: *test
|
72
74
|
|
73
75
|
ce:image:
|
74
|
-
script: bin/qa Test::Omnibus::Image CE
|
76
|
+
script: bin/qa Test::Omnibus::Image ${RELEASE:=CE}
|
75
77
|
<<: *test
|
76
78
|
|
77
79
|
ee:image:
|
78
|
-
script: bin/qa Test::Omnibus::Image EE
|
80
|
+
script: bin/qa Test::Omnibus::Image ${RELEASE:=EE}
|
79
81
|
<<: *test
|
80
82
|
|
81
|
-
ce:
|
82
|
-
script: bin/qa Test::Omnibus::
|
83
|
+
ce:update:
|
84
|
+
script: bin/qa Test::Omnibus::Update ${RELEASE:=CE}
|
83
85
|
<<: *test
|
84
86
|
|
85
|
-
ee:
|
86
|
-
script: bin/qa Test::Omnibus::
|
87
|
+
ee:update:
|
88
|
+
script: bin/qa Test::Omnibus::Update ${RELEASE:=EE}
|
89
|
+
<<: *test
|
90
|
+
|
91
|
+
ce:upgrade:
|
92
|
+
script: bin/qa Test::Omnibus::Upgrade
|
87
93
|
<<: *test
|
88
94
|
|
89
95
|
ce:mattermost:
|
90
|
-
script: bin/qa Test::Integration::Mattermost CE
|
96
|
+
script: bin/qa Test::Integration::Mattermost ${RELEASE:=CE}
|
91
97
|
<<: *test
|
92
98
|
|
93
99
|
ee:mattermost:
|
94
|
-
script: bin/qa Test::Integration::Mattermost EE
|
100
|
+
script: bin/qa Test::Integration::Mattermost ${RELEASE:=EE}
|
95
101
|
<<: *test
|
96
102
|
|
97
103
|
ee:geo:
|
98
|
-
script: bin/qa Test::Integration::Geo EE
|
104
|
+
script: bin/qa Test::Integration::Geo ${RELEASE:=EE}
|
99
105
|
<<: *test
|
100
|
-
allow_failure: true
|
101
106
|
tags:
|
102
107
|
- docker
|
103
108
|
- 7gb
|
data/README.md
CHANGED
@@ -33,9 +33,13 @@ command in your system.
|
|
33
33
|
|
34
34
|
`gitlab-qa Test::Integration::Mattermost CE|EE|<full image address>`
|
35
35
|
|
36
|
-
1. Test
|
36
|
+
1. Test update process between two CE or EE subsequent versions:
|
37
37
|
|
38
|
-
`gitlab-qa Test::Omnibus::
|
38
|
+
`gitlab-qa Test::Omnibus::Update CE|EE|<full image address>`
|
39
|
+
|
40
|
+
1. Test upgrade process from CE to EE:
|
41
|
+
|
42
|
+
`gitlab-qa Test::Omnibus::Upgrade CE|<full CE image address>`
|
39
43
|
|
40
44
|
1. Run tests against any existing instance:
|
41
45
|
|
@@ -93,7 +97,9 @@ tests against it (see `Test::Instance::Image` above).
|
|
93
97
|
* `GITLAB_PASSWORD` - password to use when signing in to GitLab
|
94
98
|
* `EE_LICENSE` - Enterprise Edition license
|
95
99
|
* `QA_SCREENSHOTS_DIR` - Path to a directory where screenshots for failing tests
|
96
|
-
will be saved (default: `/tmp/gitlab-qa
|
100
|
+
will be saved (default: `/tmp/gitlab-qa/screenshots`)
|
101
|
+
* `QA_LOGS_DIR` - Path to a directory where logs will be saved (default:
|
102
|
+
`/tmp/gitlab-qa/logs`)
|
97
103
|
* `DOCKER_HOST` - Docker host to run tests against (default: `http://localhost`)
|
98
104
|
|
99
105
|
## Contributing
|
data/docs/README.md
ADDED
data/docs/trainings.md
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
# GitLab QA trainings
|
2
|
+
|
3
|
+
## Build team training on GitLab QA
|
4
|
+
|
5
|
+
A great introduction to the GitLab QA project, its internal structure, how it's
|
6
|
+
used, and how to start contributing to it. Check out the
|
7
|
+
[video](https://youtu.be/Ym159ATYN_g) and
|
8
|
+
[slides](https://docs.google.com/presentation/d/1-3YlYTIBzd2kSjGVYGPq1xqz4O7qtfABhoZRi_PcGRg/edit?usp=sharing).
|
data/lib/gitlab/qa.rb
CHANGED
@@ -20,6 +20,7 @@ module Gitlab
|
|
20
20
|
|
21
21
|
module Omnibus
|
22
22
|
autoload :Image, 'qa/scenario/test/omnibus/image'
|
23
|
+
autoload :Update, 'qa/scenario/test/omnibus/update'
|
23
24
|
autoload :Upgrade, 'qa/scenario/test/omnibus/upgrade'
|
24
25
|
end
|
25
26
|
|
@@ -43,6 +44,7 @@ module Gitlab
|
|
43
44
|
autoload :Engine, 'qa/docker/engine'
|
44
45
|
autoload :Command, 'qa/docker/command'
|
45
46
|
autoload :Shellout, 'qa/docker/shellout'
|
47
|
+
autoload :Volumes, 'qa/docker/volumes'
|
46
48
|
end
|
47
49
|
end
|
48
50
|
end
|
@@ -6,8 +6,6 @@ module Gitlab
|
|
6
6
|
# the `qa/` directory located in GitLab CE / EE repositories.
|
7
7
|
#
|
8
8
|
class Specs < Scenario::Template
|
9
|
-
IMAGE = 'gitlab/gitlab-qa'.freeze
|
10
|
-
|
11
9
|
attr_accessor :suite, :release, :network, :args
|
12
10
|
|
13
11
|
def initialize
|
@@ -19,7 +17,7 @@ module Gitlab
|
|
19
17
|
|
20
18
|
puts "Running test suite `#{suite}` for #{release.project_name}"
|
21
19
|
|
22
|
-
@docker.run(
|
20
|
+
@docker.run(release.qa_image, release.tag, suite, *args) do |command|
|
23
21
|
command << "-t --rm --net=#{network || 'bridge'}"
|
24
22
|
|
25
23
|
Runtime::Env.delegated.each do |env|
|
@@ -27,6 +25,7 @@ module Gitlab
|
|
27
25
|
end
|
28
26
|
|
29
27
|
command.volume('/var/run/docker.sock', '/var/run/docker.sock')
|
28
|
+
command.volume(Runtime::Env.logs_dir, '/var/log/gitlab')
|
30
29
|
command.volume(Runtime::Env.screenshots_dir, '/home/qa/tmp')
|
31
30
|
command.name("gitlab-specs-#{Time.now.to_i}")
|
32
31
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
|
3
|
+
module Gitlab
|
4
|
+
module QA
|
5
|
+
module Docker
|
6
|
+
class Volumes
|
7
|
+
VOLUMES = { 'config' => '/etc/gitlab',
|
8
|
+
'logs' => '/var/log/gitlab',
|
9
|
+
'data' => '/var/opt/gitlab' }.freeze
|
10
|
+
|
11
|
+
def initialize(volumes = VOLUMES)
|
12
|
+
@volumes = volumes
|
13
|
+
end
|
14
|
+
|
15
|
+
def with_temporary_volumes
|
16
|
+
# macOS's tmpdir is a symlink /var/folders -> /private/var/folders
|
17
|
+
# but Docker on macOS exposes /private and disallow exposing /var/
|
18
|
+
# so we need to get the real tmpdir path
|
19
|
+
Dir.mktmpdir('gitlab-qa-', File.realpath(Dir.tmpdir)).tap do |dir|
|
20
|
+
yield Hash[@volumes.map { |k, v| ["#{dir}/#{k}", v] }]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/gitlab/qa/release.rb
CHANGED
@@ -3,7 +3,8 @@ module Gitlab
|
|
3
3
|
class Release
|
4
4
|
CANONICAL_REGEX = /\A(?<edition>ce|ee):?(?<tag>.+)?/i
|
5
5
|
CUSTOM_GITLAB_IMAGE_REGEX = %r{/gitlab-(?<edition>[ce]e):(?<tag>.+)\z}
|
6
|
-
DEFAULT_TAG = '
|
6
|
+
DEFAULT_TAG = 'latest'.freeze
|
7
|
+
DEFAULT_CANONICAL_TAG = 'nightly'.freeze
|
7
8
|
|
8
9
|
attr_reader :release
|
9
10
|
attr_writer :tag
|
@@ -31,6 +32,16 @@ module Gitlab
|
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
35
|
+
def ee?
|
36
|
+
edition == :ee
|
37
|
+
end
|
38
|
+
|
39
|
+
def to_ee
|
40
|
+
return self if ee?
|
41
|
+
|
42
|
+
self.class.new(to_s.sub('ce:', 'ee:'))
|
43
|
+
end
|
44
|
+
|
34
45
|
def image
|
35
46
|
@image ||=
|
36
47
|
if canonical?
|
@@ -40,6 +51,10 @@ module Gitlab
|
|
40
51
|
end
|
41
52
|
end
|
42
53
|
|
54
|
+
def qa_image
|
55
|
+
"#{image}-qa"
|
56
|
+
end
|
57
|
+
|
43
58
|
def project_name
|
44
59
|
@project_name ||= image.sub(%r{^gitlab\/}, '')
|
45
60
|
end
|
@@ -47,9 +62,9 @@ module Gitlab
|
|
47
62
|
def tag
|
48
63
|
@tag ||=
|
49
64
|
if canonical?
|
50
|
-
release.match(CANONICAL_REGEX)[:tag] ||
|
65
|
+
release.match(CANONICAL_REGEX)[:tag] || DEFAULT_CANONICAL_TAG
|
51
66
|
else
|
52
|
-
release.match(CUSTOM_GITLAB_IMAGE_REGEX)[:tag
|
67
|
+
release.match(CUSTOM_GITLAB_IMAGE_REGEX)&.[](:tag) || DEFAULT_TAG
|
53
68
|
end
|
54
69
|
end
|
55
70
|
|
@@ -10,7 +10,11 @@ module Gitlab
|
|
10
10
|
EE_LICENSE].freeze
|
11
11
|
|
12
12
|
def screenshots_dir
|
13
|
-
ENV['QA_SCREENSHOTS_DIR'] || '/tmp/gitlab-qa
|
13
|
+
ENV['QA_SCREENSHOTS_DIR'] || '/tmp/gitlab-qa/screenshots'
|
14
|
+
end
|
15
|
+
|
16
|
+
def logs_dir
|
17
|
+
ENV['QA_LOGS_DIR'] || '/tmp/gitlab-qa/logs'
|
14
18
|
end
|
15
19
|
|
16
20
|
def delegated
|
@@ -11,9 +11,7 @@ module Gitlab
|
|
11
11
|
def perform(release)
|
12
12
|
release = Release.new(release)
|
13
13
|
|
14
|
-
unless release.
|
15
|
-
raise ArgumentError, 'Geo is EE only!'
|
16
|
-
end
|
14
|
+
raise ArgumentError, 'Geo is EE only!' unless release.ee?
|
17
15
|
|
18
16
|
Component::Gitlab.perform do |primary|
|
19
17
|
primary.release = release
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
module Gitlab
|
5
|
+
module QA
|
6
|
+
module Scenario
|
7
|
+
module Test
|
8
|
+
module Omnibus
|
9
|
+
class Update < Scenario::Template
|
10
|
+
def perform(next_release)
|
11
|
+
next_release = Release.new(next_release)
|
12
|
+
|
13
|
+
Docker::Volumes.new.with_temporary_volumes do |volumes|
|
14
|
+
Scenario::Test::Instance::Image
|
15
|
+
.perform(next_release.previous_stable) do |scenario|
|
16
|
+
scenario.volumes = volumes
|
17
|
+
end
|
18
|
+
|
19
|
+
Scenario::Test::Instance::Image
|
20
|
+
.perform(next_release) do |scenario|
|
21
|
+
scenario.volumes = volumes
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -7,31 +7,25 @@ module Gitlab
|
|
7
7
|
module Test
|
8
8
|
module Omnibus
|
9
9
|
class Upgrade < Scenario::Template
|
10
|
-
|
11
|
-
|
12
|
-
'data' => '/var/opt/gitlab' }.freeze
|
10
|
+
def perform(image = 'CE')
|
11
|
+
ce_release = Release.new(image)
|
13
12
|
|
14
|
-
|
15
|
-
|
13
|
+
if ce_release.ee?
|
14
|
+
raise ArgumentError, 'Only CE can be upgraded to EE!'
|
15
|
+
end
|
16
16
|
|
17
|
-
with_temporary_volumes do |volumes|
|
17
|
+
Docker::Volumes.new.with_temporary_volumes do |volumes|
|
18
18
|
Scenario::Test::Instance::Image
|
19
|
-
.perform(
|
19
|
+
.perform(ce_release) do |scenario|
|
20
20
|
scenario.volumes = volumes
|
21
21
|
end
|
22
22
|
|
23
23
|
Scenario::Test::Instance::Image
|
24
|
-
.perform(
|
24
|
+
.perform(ce_release.to_ee) do |scenario|
|
25
25
|
scenario.volumes = volumes
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
30
|
-
def with_temporary_volumes
|
31
|
-
Dir.mktmpdir('gitlab-qa-').tap do |dir|
|
32
|
-
yield Hash[VOLUMES.map { |k, v| ["#{dir}/#{k}", v] }]
|
33
|
-
end
|
34
|
-
end
|
35
29
|
end
|
36
30
|
end
|
37
31
|
end
|
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: 0.
|
4
|
+
version: 0.5.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: 2017-
|
11
|
+
date: 2017-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -102,7 +102,9 @@ files:
|
|
102
102
|
- bin/console
|
103
103
|
- bin/qa
|
104
104
|
- bin/setup
|
105
|
+
- docs/README.md
|
105
106
|
- docs/architecture.md
|
107
|
+
- docs/trainings.md
|
106
108
|
- exe/gitlab-qa
|
107
109
|
- gitlab-qa.gemspec
|
108
110
|
- lib/gitlab/qa.rb
|
@@ -111,6 +113,7 @@ files:
|
|
111
113
|
- lib/gitlab/qa/docker/command.rb
|
112
114
|
- lib/gitlab/qa/docker/engine.rb
|
113
115
|
- lib/gitlab/qa/docker/shellout.rb
|
116
|
+
- lib/gitlab/qa/docker/volumes.rb
|
114
117
|
- lib/gitlab/qa/release.rb
|
115
118
|
- lib/gitlab/qa/runtime/env.rb
|
116
119
|
- lib/gitlab/qa/scenario/actable.rb
|
@@ -120,6 +123,7 @@ files:
|
|
120
123
|
- lib/gitlab/qa/scenario/test/integration/geo.rb
|
121
124
|
- lib/gitlab/qa/scenario/test/integration/mattermost.rb
|
122
125
|
- lib/gitlab/qa/scenario/test/omnibus/image.rb
|
126
|
+
- lib/gitlab/qa/scenario/test/omnibus/update.rb
|
123
127
|
- lib/gitlab/qa/scenario/test/omnibus/upgrade.rb
|
124
128
|
- lib/gitlab/qa/scenario/test/sanity/version.rb
|
125
129
|
- lib/gitlab/qa/version.rb
|