Class: Gitlab::QA::Component::Specs
- Inherits:
-
Scenario::Template
- Object
- Scenario::Template
- Gitlab::QA::Component::Specs
- Defined in:
- lib/gitlab/qa/component/specs.rb
Overview
This class represents GitLab QA specs image that is implemented in the ‘qa/` directory located in GitLab CE / EE repositories.
Instance Attribute Summary collapse
-
#args ⇒ Object
Returns the value of attribute args.
-
#env ⇒ Object
Returns the value of attribute env.
-
#network ⇒ Object
Returns the value of attribute network.
-
#release ⇒ Object
Returns the value of attribute release.
-
#suite ⇒ Object
Returns the value of attribute suite.
-
#volumes ⇒ Object
Returns the value of attribute volumes.
Instance Method Summary collapse
-
#initialize ⇒ Specs
constructor
A new instance of Specs.
-
#perform ⇒ Object
rubocop:disable Metrics/AbcSize.
Methods inherited from Scenario::Template
Constructor Details
Instance Attribute Details
#args ⇒ Object
Returns the value of attribute args.
11 12 13 |
# File 'lib/gitlab/qa/component/specs.rb', line 11 def args @args end |
#env ⇒ Object
Returns the value of attribute env.
11 12 13 |
# File 'lib/gitlab/qa/component/specs.rb', line 11 def env @env end |
#network ⇒ Object
Returns the value of attribute network.
11 12 13 |
# File 'lib/gitlab/qa/component/specs.rb', line 11 def network @network end |
#release ⇒ Object
Returns the value of attribute release.
11 12 13 |
# File 'lib/gitlab/qa/component/specs.rb', line 11 def release @release end |
#suite ⇒ Object
Returns the value of attribute suite.
11 12 13 |
# File 'lib/gitlab/qa/component/specs.rb', line 11 def suite @suite end |
#volumes ⇒ Object
Returns the value of attribute volumes.
11 12 13 |
# File 'lib/gitlab/qa/component/specs.rb', line 11 def volumes @volumes end |
Instance Method Details
#perform ⇒ Object
rubocop:disable Metrics/AbcSize
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/gitlab/qa/component/specs.rb', line 19 def perform # rubocop:disable Metrics/AbcSize raise ArgumentError unless [suite, release].all? if release.dev_gitlab_org? Docker::Command.execute( [ 'login', '--username gitlab-qa-bot', %(--password "#{Runtime::Env.dev_access_token_variable}"), Release::DEV_REGISTRY ] ) end puts "Running test suite `#{suite}` for #{release.project_name}" name = "#{release.project_name}-qa-#{SecureRandom.hex(4)}" @docker.run(release.qa_image, release.qa_tag, suite, *args) do |command| command << "-t --rm --net=#{network || 'bridge'}" env.merge(Runtime::Env.variables).each do |key, value| command.env(key, value) end command.volume('/var/run/docker.sock', '/var/run/docker.sock') command.volume(File.join(Runtime::Env.host_artifacts_dir, name), File.join(Docker::Volumes::QA_CONTAINER_WORKDIR, 'tmp')) @volumes.to_h.each do |to, from| command.volume(to, from) end command.name(name) end end |