Add GitLab Runner service to GitLab QA

This commit is contained in:
Grzegorz Bizon 2018-01-22 09:59:55 +01:00
parent 63dbcd2483
commit d0b08f1c50
5 changed files with 77 additions and 42 deletions

View File

@ -126,10 +126,13 @@ module QA
end
##
# Classes describing shell interaction with GitLab
# Classes describing services being part of GitLab and how we can interact
# with these services, like through the shell.
#
module Shell
autoload :Omnibus, 'qa/shell/omnibus'
module Service
autoload :Shellable, 'qa/service/shellable'
autoload :Omnibus, 'qa/service/omnibus'
autoload :Runner, 'qa/service/runner'
end
##

20
qa/qa/service/omnibus.rb Normal file
View File

@ -0,0 +1,20 @@
module QA
module Service
class Omnibus
include Scenario::Actable
include Service::Shellout
def initialize(container)
@name = container
end
def gitlab_ctl(command, input: nil)
if input.nil?
shell "docker exec #{@name} gitlab-ctl #{command}"
else
shell "docker exec #{@name} bash -c '#{input} | gitlab-ctl #{command}'"
end
end
end
end
end

28
qa/qa/service/runner.rb Normal file
View File

@ -0,0 +1,28 @@
module QA
module Service
class Runner
include Scenario::Actable
include Service::Shellout
def initialize(image)
@image = image
end
def pull
shell "docker pull #{@image}"
end
def register(token)
raise NotImplementedError
end
def run
raise NotImplementedError
end
def remove
raise NotImplementedError
end
end
end
end

23
qa/qa/service/shellout.rb Normal file
View File

@ -0,0 +1,23 @@
require 'open3'
module QA
module Service
module Shellout
##
# TODO, make it possible to use generic QA framework classes
# as a library - gitlab-org/gitlab-qa#94
#
def shell(command)
puts "Executing `#{command}`"
Open3.popen2e(command) do |_in, out, wait|
out.each { |line| puts line }
if wait.value.exited? && wait.value.exitstatus.nonzero?
raise "Command `#{command}` failed!"
end
end
end
end
end
end

View File

@ -1,39 +0,0 @@
require 'open3'
module QA
module Shell
class Omnibus
include Scenario::Actable
def initialize(container)
@name = container
end
def gitlab_ctl(command, input: nil)
if input.nil?
shell "docker exec #{@name} gitlab-ctl #{command}"
else
shell "docker exec #{@name} bash -c '#{input} | gitlab-ctl #{command}'"
end
end
private
##
# TODO, make it possible to use generic QA framework classes
# as a library - gitlab-org/gitlab-qa#94
#
def shell(command)
puts "Executing `#{command}`"
Open3.popen2e(command) do |_in, out, wait|
out.each { |line| puts line }
if wait.value.exited? && wait.value.exitstatus.nonzero?
raise "Docker command `#{command}` failed!"
end
end
end
end
end
end