Add GitLab Runner service to GitLab QA
This commit is contained in:
parent
63dbcd2483
commit
d0b08f1c50
9
qa/qa.rb
9
qa/qa.rb
|
|
@ -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
|
||||
|
||||
##
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
Loading…
Reference in New Issue