gitlab-qa 6.21.3 → 7.0.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 +3 -2
- data/docs/configuring_omnibus.md +208 -0
- data/docs/run_qa_against_gdk.md +4 -0
- data/docs/what_tests_can_be_run.md +34 -0
- data/gitlab-qa.gemspec +1 -1
- data/lib/gitlab/qa.rb +7 -0
- data/lib/gitlab/qa/component/gitlab.rb +37 -30
- data/lib/gitlab/qa/component/minio.rb +2 -10
- data/lib/gitlab/qa/component/specs.rb +10 -9
- data/lib/gitlab/qa/docker/engine.rb +36 -5
- data/lib/gitlab/qa/report/test_result.rb +5 -1
- data/lib/gitlab/qa/runner.rb +57 -5
- data/lib/gitlab/qa/runtime/env.rb +6 -0
- data/lib/gitlab/qa/runtime/omnibus_configuration.rb +69 -0
- data/lib/gitlab/qa/runtime/omnibus_configurations/default.rb +25 -0
- data/lib/gitlab/qa/runtime/omnibus_configurations/object_storage.rb +48 -0
- data/lib/gitlab/qa/runtime/omnibus_configurations/packages.rb +17 -0
- data/lib/gitlab/qa/scenario/cli_commands.rb +3 -3
- data/lib/gitlab/qa/scenario/test/instance/relative_url.rb +1 -3
- data/lib/gitlab/qa/scenario/test/instance/repository_storage.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/actioncable.rb +1 -3
- data/lib/gitlab/qa/scenario/test/integration/geo.rb +4 -5
- data/lib/gitlab/qa/scenario/test/integration/gitaly_cluster.rb +3 -3
- data/lib/gitlab/qa/scenario/test/integration/group_saml.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/instance_saml.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/kubernetes.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/ldap_no_server.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/ldap_no_tls.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/ldap_tls.rb +1 -2
- data/lib/gitlab/qa/scenario/test/integration/mattermost.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/mtls.rb +3 -7
- data/lib/gitlab/qa/scenario/test/integration/smtp.rb +1 -1
- data/lib/gitlab/qa/scenario/test/integration/ssh_tunnel.rb +1 -1
- data/lib/gitlab/qa/version.rb +1 -1
- data/tls_certificates/authority/ca.crt +32 -0
- data/tls_certificates/authority/ca.key +51 -0
- data/tls_certificates/authority/ca.pem +83 -0
- data/tls_certificates/gitaly/gitaly.test.crt +30 -0
- data/tls_certificates/gitaly/gitaly.test.csr +28 -0
- data/tls_certificates/gitaly/gitaly.test.key +51 -0
- data/tls_certificates/gitlab/gitlab.test.crt +28 -29
- data/tls_certificates/gitlab/gitlab.test.csr +28 -0
- data/tls_certificates/gitlab/gitlab.test.key +51 -52
- metadata +16 -10
- data/lib/gitlab/qa/scenario/test/integration/object_storage.rb +0 -64
- data/lib/gitlab/qa/scenario/test/integration/packages.rb +0 -36
- data/tls_certificates/gitaly/ssl/gitaly.test.crt +0 -33
- data/tls_certificates/gitaly/ssl/gitaly.test.key +0 -52
- data/tls_certificates/gitaly/trusted-certs/gitaly.test.crt +0 -33
- data/tls_certificates/gitaly/trusted-certs/gitlab.test.crt +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce83d37d177260e577ff1ffbc8e606eab4bc449953d8fc9de669404371433014
|
4
|
+
data.tar.gz: ef2a8ba114e9799c4d8b4cc71f3c098ac708b79e8573486305b9802d6bdf1826
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22d88835fee7158e9e5829e5d5e415abfa85d157148514c21eb904eecf69a8e8c4a49dc6e3aaae0e35824fc8f3a2be2d0c983f2f8057c915bcd0332a2fbea41f
|
7
|
+
data.tar.gz: 6e8007813c6258741ba516b011b8a5fc7efa1ee1ada5c385580477a18b02c35ac8e232370a80395fd3259f98058abaaffe11941c7ec9f8108a19dd36aafa4df3
|
data/.gitlab-ci.yml
CHANGED
@@ -12,13 +12,14 @@ 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
|
21
|
+
- bundle config path vendor
|
22
|
+
- bundle install --jobs=$(nproc) --retry=3 --quiet && bundle check
|
22
23
|
- if [ -n "$TRIGGERED_USER" ] && [ -n "$TRIGGER_SOURCE" ]; then
|
23
24
|
echo "Pipeline triggered by $TRIGGERED_USER at $TRIGGER_SOURCE";
|
24
25
|
fi
|
@@ -0,0 +1,208 @@
|
|
1
|
+
# Configuring Omnibus
|
2
|
+
|
3
|
+
Omnibus will, by default, contain the configuration specified in `Gitlab::QA::Runtime::OmnibusConfigurations::Default`.
|
4
|
+
|
5
|
+
Omnibus can be configured from two places:
|
6
|
+
|
7
|
+
1. Within a custom `Scenario::Template`.
|
8
|
+
1. Represented as a `Gitlab::QA::Runtime::OmnibusConfiguration` class.
|
9
|
+
|
10
|
+
## Adding an Omnibus Configurator
|
11
|
+
|
12
|
+
All configurators are held within `Gitlab::QA::Runtime::OmnibusConfigurations` and represented as separate classes.
|
13
|
+
|
14
|
+
Notes:
|
15
|
+
|
16
|
+
- If it is required that more than one GitLab instance is configured,
|
17
|
+
you may skip adding an Omnibus Configurator. In this case, it should be handled by a separate `Scenario::Template`.
|
18
|
+
An example of this would be a Geo Primary and Secondary.
|
19
|
+
- All classes should be a type of `Runtime::OmnibusConfiguration`.
|
20
|
+
|
21
|
+
### Add the Configurator Class
|
22
|
+
|
23
|
+
Create a new file in `lib/gitlab/qa/runtime/omnibus_configurations` called `registry.rb`.
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
# frozen_string_literal: true
|
27
|
+
|
28
|
+
module Gitlab
|
29
|
+
module QA
|
30
|
+
module Runtime
|
31
|
+
module OmnibusConfigurations
|
32
|
+
class Registry < Default
|
33
|
+
def configuration
|
34
|
+
<<~OMNIBUS
|
35
|
+
gitlab_rails['registry_enabled'] = true
|
36
|
+
OMNIBUS
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
45
|
+
Notes:
|
46
|
+
|
47
|
+
- Refrain from adding unnecessary statement terminations (`;`).
|
48
|
+
|
49
|
+
### Prepare Sidecar Container
|
50
|
+
|
51
|
+
If the tests require an additional container to be spun up adjacent to GitLab, you may override the `prepare` method.
|
52
|
+
|
53
|
+
```ruby
|
54
|
+
#=> lib/gitlab/qa/runtime/omnibus_configurations/registry.rb
|
55
|
+
|
56
|
+
# frozen_string_literal: true
|
57
|
+
|
58
|
+
module Gitlab
|
59
|
+
module QA
|
60
|
+
module Runtime
|
61
|
+
module OmnibusConfigurations
|
62
|
+
class Registry < Default
|
63
|
+
def configuration
|
64
|
+
<<~OMNIBUS
|
65
|
+
gitlab_rails['registry_enabled'] = true
|
66
|
+
OMNIBUS
|
67
|
+
end
|
68
|
+
|
69
|
+
def prepare
|
70
|
+
Component::Sidecar.new
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
```
|
78
|
+
|
79
|
+
Notes:
|
80
|
+
|
81
|
+
- `prepare` **must** return an instance of `Component::Base`.
|
82
|
+
- The sidecar container will be prepared before the test runs, and will run the tests after it is running.
|
83
|
+
- Extending the class from `Default` is only a nicety that adds a singleton method called `Registry.configuration` and returns the configuration.
|
84
|
+
It is recommended to extend from `Default`, but you may also extend from any other Omnibus Configuration class, including `Runtime::OmnibusConfiguration`.
|
85
|
+
|
86
|
+
## Running tests with Omnibus Configured
|
87
|
+
|
88
|
+
All Omnibus Configurators can be called by passing arguments into the `gitlab-qa` executable.
|
89
|
+
|
90
|
+
```shell
|
91
|
+
exe/gitlab-qa Test::Instance::Image EE --omnibus-config registry
|
92
|
+
```
|
93
|
+
|
94
|
+
Notes:
|
95
|
+
|
96
|
+
- `--omnibus-config registry` must match the name of the Omnibus Configurator Class name (`Runtime::OmnibusConfigurations::Registry`), but lowercase.
|
97
|
+
- If the Configurator Class name contains several words, the argument will be named the same, but snake cased. E.g. `--omnibus-config some_class` matches `SomeClass`, `--omnibus-config some_other_class` matches `SomeOtherClass`.
|
98
|
+
- The Omnibus GitLab Instance will have the configuration from `Default` and `Registry` (in that order) put into `/etc/gitlab/gitlab.rb` and GitLab QA will proceed to run the tests.
|
99
|
+
- If a specified Omnibus Configuration does not exist, GitLab QA will raise an error and fail immediately.
|
100
|
+
|
101
|
+
## Further reading
|
102
|
+
|
103
|
+
### Multiple Configurators
|
104
|
+
|
105
|
+
Multiple Configurators may be specified and the order will be preserved in which the arguments were passed.
|
106
|
+
|
107
|
+
E.g., given the arguments:
|
108
|
+
|
109
|
+
```
|
110
|
+
exe/gitlab-qa Test::Instance::Image EE --omnibus-config packages,registry
|
111
|
+
# or
|
112
|
+
exe/gitlab-qa Test::Instance::Image EE --omnibus-config packages --omnibus-config registry
|
113
|
+
```
|
114
|
+
|
115
|
+
Omnibus will be configured in the order they appear.
|
116
|
+
|
117
|
+
```ruby
|
118
|
+
# /etc/gitlab/gitlab.rb
|
119
|
+
#=> Runtime::OmnibusConfiguration::Default#configuration
|
120
|
+
#=> Runtime::OmnibusConfiguration::Packages#configuration
|
121
|
+
#=> Runtime::OmnibusConfiguration::Registry#configuration
|
122
|
+
```
|
123
|
+
|
124
|
+
The order is also preserved for Sidecar containers. If the `Packages` and `Registry` Configurators each prepare a sidecar container, they will be spun up in order from first to last.
|
125
|
+
|
126
|
+
### Adding one-off configurations
|
127
|
+
|
128
|
+
#### From a new Scenario::Template
|
129
|
+
|
130
|
+
If it is required to create a new `Scenario::Template`, you may add new Configurations to the respective GitLab Instances by invoking `omnibus_configuration#<<`
|
131
|
+
|
132
|
+
```ruby
|
133
|
+
# Geo example
|
134
|
+
|
135
|
+
Component::Gitlab.perform do |primary|
|
136
|
+
primary.omnibus_configuration << <<~OMNIBUS
|
137
|
+
geo_primary_role['enable'] = true
|
138
|
+
OMNIBUS
|
139
|
+
|
140
|
+
primary.instance do
|
141
|
+
Component::Gitlab.perform do |secondary|
|
142
|
+
secondary.omnibus_configuration << <<~OMNIBUS
|
143
|
+
geo_secondary_role['enable'] = true
|
144
|
+
OMNIBUS
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
```
|
149
|
+
|
150
|
+
Notes:
|
151
|
+
|
152
|
+
- The `primary` instance will be configured using the `Runtime::OmnibusConfigurations::Default` configuration, *then* `geo_primary_role['enable'] = true` will be affixed afterwards.
|
153
|
+
- The `secondary` instance will be configured using the `Runtime::OmnibusConfigurations::Default` configuration, *then* `geo_secondary_role['enable'] = true` will be affixed afterwards.
|
154
|
+
|
155
|
+
#### From Component::Gitlab
|
156
|
+
|
157
|
+
Any additional one-off configurations needing to be added may be directly appended to `@omnibus_configuration` as such:
|
158
|
+
|
159
|
+
```ruby
|
160
|
+
disable_animations = true
|
161
|
+
|
162
|
+
@omnibus_configuration << "gitlab_rails['gitlab_disable_animations'] = true" if disable_animations
|
163
|
+
```
|
164
|
+
|
165
|
+
This will add the specified configuration **after** what has already been specified beforehand (Configurators or Default configurations).
|
166
|
+
|
167
|
+
Note:
|
168
|
+
|
169
|
+
- If there is no issue appending this configuration to the **rest** of the GitLab Instances that might be spun up, you can add this
|
170
|
+
to the global Omnibus Configuration. E.g., use `Runtime::Scenario.omnibus_configuration << ...` instead of `@omnibus_configuration << ...`
|
171
|
+
|
172
|
+
#### Difference between Runtime::Scenario.omnibus_configuration and Gitlab#omnibus_configuration
|
173
|
+
|
174
|
+
Generally, while running GitLab QA, only one GitLab instance is necessary. `Runtime::Scenario.omnibus_configuration` contains all of the global
|
175
|
+
Omnibus configurations required for this one environment. This also contains the configuration for any other GitLab instance.
|
176
|
+
|
177
|
+
When multiple GitLab Instances are required, `@omnibus_configuration#<<` is preferred over `Runtime::Scenario.omnibus_configuration#<<` since the First Instance might require
|
178
|
+
one Omnibus configuration that might be unneccesary or Invalid for the Second Instance.
|
179
|
+
|
180
|
+
#### Load order and precedence
|
181
|
+
|
182
|
+
1. `Runtime::OmnibusConfigurations::Default`
|
183
|
+
1. `Runtime::OmnibusConfigurations::[A,B,...]` where `A` and `B` are Configurators specified through the positional arguments `--a --b`
|
184
|
+
1. Custom written `Scenario::Template` (such as `Test::Integation::Geo`)
|
185
|
+
1. `lib/gitlab/qa/component/gitlab.rb`
|
186
|
+
|
187
|
+
From top to bottom, configurations will be loaded and any configurations that are superceded, will take precedence over the one before it, and so on.
|
188
|
+
|
189
|
+
### Executing arbitrary shell commands within the GitLab Instance
|
190
|
+
|
191
|
+
Sometimes it's necessary to execute arbitrary commands within the GitLab instance before the tests start.
|
192
|
+
|
193
|
+
You may specify these commands by overriding the `exec_commands` method within the Configurator.
|
194
|
+
|
195
|
+
```ruby
|
196
|
+
class Registry < Default
|
197
|
+
def configuration
|
198
|
+
# configuration
|
199
|
+
end
|
200
|
+
|
201
|
+
def exec_commands
|
202
|
+
[
|
203
|
+
'cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.bak.rb',
|
204
|
+
'rm /etc/gitlab/gitlab.bak.rb'
|
205
|
+
]
|
206
|
+
end
|
207
|
+
end
|
208
|
+
```
|
data/docs/run_qa_against_gdk.md
CHANGED
@@ -37,6 +37,10 @@ make a few changes to your `gdk/gitlab/config/gitlab.yml` file.
|
|
37
37
|
# build the QA image first
|
38
38
|
# In gdk/gitlab:
|
39
39
|
$ docker build -t gitlab/gitlab-ce-qa:your-custom-tag --file ./qa/Dockerfile ./
|
40
|
+
|
41
|
+
# Note: You will also need a corresponding GitLab image.
|
42
|
+
# For example, if you haven't changed any application code (e.g., no new elements), you could tag the current nightly build:
|
43
|
+
$ docker tag gitlab/gitlab-ce:nightly gitlab/gitlab-ce:your-custom-tag
|
40
44
|
|
41
45
|
# Then in gitlab-qa:
|
42
46
|
$ exe/gitlab-qa Test::Instance::Any gitlab/gitlab-ce:your-custom-tag http://192.168.0.12:3000 -- qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb
|
@@ -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
|
data/gitlab-qa.gemspec
CHANGED
@@ -31,5 +31,5 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_runtime_dependency 'gitlab', '~> 4.16.1'
|
32
32
|
spec.add_runtime_dependency 'http', '4.3.0'
|
33
33
|
spec.add_runtime_dependency 'nokogiri', '~> 1.10'
|
34
|
-
spec.add_runtime_dependency 'table_print', '1.5.
|
34
|
+
spec.add_runtime_dependency 'table_print', '1.5.7'
|
35
35
|
end
|
data/lib/gitlab/qa.rb
CHANGED
@@ -8,6 +8,13 @@ module Gitlab
|
|
8
8
|
autoload :Env, 'gitlab/qa/runtime/env'
|
9
9
|
autoload :Scenario, 'gitlab/qa/runtime/scenario'
|
10
10
|
autoload :TokenFinder, 'gitlab/qa/runtime/token_finder'
|
11
|
+
autoload :OmnibusConfiguration, 'gitlab/qa/runtime/omnibus_configuration'
|
12
|
+
|
13
|
+
module OmnibusConfigurations
|
14
|
+
autoload :Default, 'gitlab/qa/runtime/omnibus_configurations/default'
|
15
|
+
autoload :Packages, 'gitlab/qa/runtime/omnibus_configurations/packages'
|
16
|
+
autoload :ObjectStorage, 'gitlab/qa/runtime/omnibus_configurations/object_storage'
|
17
|
+
end
|
11
18
|
end
|
12
19
|
|
13
20
|
module Scenario
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'securerandom'
|
2
4
|
require 'net/http'
|
3
5
|
require 'uri'
|
@@ -10,38 +12,36 @@ module Gitlab
|
|
10
12
|
class Gitlab < Base
|
11
13
|
extend Forwardable
|
12
14
|
|
13
|
-
attr_reader :release
|
14
|
-
attr_accessor :tls, :
|
15
|
+
attr_reader :release, :omnibus_configuration
|
16
|
+
attr_accessor :tls, :skip_availability_check, :runner_network
|
15
17
|
attr_writer :name, :relative_path
|
16
18
|
|
17
19
|
def_delegators :release, :tag, :image, :edition
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
-
|
21
|
+
AUTHORITY_CERTIFICATES_PATH = File.expand_path('../../../../tls_certificates/authority', __dir__)
|
22
|
+
GITLAB_CERTIFICATES_PATH = File.expand_path('../../../../tls_certificates/gitlab', __dir__)
|
23
|
+
GITALY_CERTIFICATES_PATH = File.expand_path('../../../../tls_certificates/gitaly', __dir__)
|
22
24
|
|
23
|
-
SSL_PATH = '/etc/gitlab/ssl'
|
24
|
-
TRUSTED_PATH = '/etc/gitlab/trusted-certs'
|
25
|
+
SSL_PATH = '/etc/gitlab/ssl'
|
26
|
+
TRUSTED_PATH = '/etc/gitlab/trusted-certs'
|
25
27
|
|
26
28
|
def initialize
|
27
29
|
super
|
28
30
|
|
29
|
-
@disable_animations = true
|
30
31
|
@skip_availability_check = false
|
31
32
|
|
32
33
|
@volumes[GITLAB_CERTIFICATES_PATH] = SSL_PATH
|
34
|
+
@volumes[AUTHORITY_CERTIFICATES_PATH] = TRUSTED_PATH
|
33
35
|
|
34
|
-
|
35
|
-
end
|
36
|
+
@omnibus_configuration ||= OmnibusConfiguration.new
|
36
37
|
|
37
|
-
|
38
|
-
@environment['GITLAB_OMNIBUS_CONFIG'] = config.tr("\n", ' ')
|
38
|
+
self.release = 'CE'
|
39
39
|
end
|
40
40
|
|
41
41
|
def set_formless_login_token
|
42
42
|
return if Runtime::Env.gitlab_qa_formless_login_token.to_s.strip.empty?
|
43
43
|
|
44
|
-
@
|
44
|
+
@omnibus_configuration << "gitlab_rails['env'] = { 'GITLAB_QA_FORMLESS_LOGIN_TOKEN' => '#{Runtime::Env.gitlab_qa_formless_login_token}' }"
|
45
45
|
end
|
46
46
|
|
47
47
|
def elastic_url=(url)
|
@@ -68,14 +68,9 @@ module Gitlab
|
|
68
68
|
tls ? '443' : '80'
|
69
69
|
end
|
70
70
|
|
71
|
-
def
|
71
|
+
def gitaly_tls
|
72
72
|
@volumes.delete(GITLAB_CERTIFICATES_PATH)
|
73
73
|
@volumes[GITALY_CERTIFICATES_PATH] = SSL_PATH
|
74
|
-
set_trusted_certificates
|
75
|
-
end
|
76
|
-
|
77
|
-
def set_trusted_certificates
|
78
|
-
@volumes[TRUSTED_CERTIFICATES_PATH] = TRUSTED_PATH
|
79
74
|
end
|
80
75
|
|
81
76
|
def relative_path
|
@@ -99,17 +94,7 @@ module Gitlab
|
|
99
94
|
end
|
100
95
|
|
101
96
|
def prepare_gitlab_omnibus_config
|
102
|
-
setup_disable_animations if disable_animations
|
103
97
|
set_formless_login_token
|
104
|
-
setup_application_settings_cache_expiry
|
105
|
-
end
|
106
|
-
|
107
|
-
def setup_disable_animations
|
108
|
-
@environment['GITLAB_OMNIBUS_CONFIG'] = "gitlab_rails['gitlab_disable_animations'] = true; #{@environment['GITLAB_OMNIBUS_CONFIG'] || ''}"
|
109
|
-
end
|
110
|
-
|
111
|
-
def setup_application_settings_cache_expiry
|
112
|
-
@environment['GITLAB_OMNIBUS_CONFIG'] = "gitlab_rails['application_settings_cache_seconds'] = 0; #{@environment['GITLAB_OMNIBUS_CONFIG'] || ''}"
|
113
98
|
end
|
114
99
|
|
115
100
|
def start # rubocop:disable Metrics/AbcSize
|
@@ -139,6 +124,8 @@ module Gitlab
|
|
139
124
|
end
|
140
125
|
|
141
126
|
def reconfigure
|
127
|
+
setup_omnibus
|
128
|
+
|
142
129
|
@docker.attach(name) do |line, wait|
|
143
130
|
puts line
|
144
131
|
# TODO, workaround which allows to detach from the container
|
@@ -150,7 +137,7 @@ module Gitlab
|
|
150
137
|
def wait_until_ready
|
151
138
|
return if skip_availability_check
|
152
139
|
|
153
|
-
if Availability.new(name, relative_path: relative_path, scheme: scheme, protocol_port: port.to_i).check(
|
140
|
+
if Availability.new(name, relative_path: relative_path, scheme: scheme, protocol_port: port.to_i).check(Runtime::Env.gitlab_availability_timeout)
|
154
141
|
sleep 12 # TODO, handle that better
|
155
142
|
puts ' -> GitLab is available.'
|
156
143
|
else
|
@@ -174,6 +161,12 @@ module Gitlab
|
|
174
161
|
raise 'Please configure an instance first!' unless [name, release, network].all?
|
175
162
|
end
|
176
163
|
|
164
|
+
def setup_omnibus
|
165
|
+
@docker.write_files(name) do |f|
|
166
|
+
f.write('/etc/gitlab/gitlab.rb', @omnibus_configuration.to_s)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
177
170
|
class Availability
|
178
171
|
def initialize(name, relative_path: '', scheme: 'http', protocol_port: 80)
|
179
172
|
@docker = Docker::Engine.new
|
@@ -213,6 +206,20 @@ module Gitlab
|
|
213
206
|
@uri.scheme == 'https' ? { use_ssl: true, verify_mode: OpenSSL::SSL::VERIFY_NONE } : {}
|
214
207
|
end
|
215
208
|
end
|
209
|
+
|
210
|
+
class OmnibusConfiguration
|
211
|
+
def initialize
|
212
|
+
@config = Runtime::Scenario.attributes[:omnibus_configuration] || []
|
213
|
+
end
|
214
|
+
|
215
|
+
def <<(configuration)
|
216
|
+
@config << configuration
|
217
|
+
end
|
218
|
+
|
219
|
+
def to_s
|
220
|
+
@config.to_s
|
221
|
+
end
|
222
|
+
end
|
216
223
|
end
|
217
224
|
end
|
218
225
|
end
|