diff options
Diffstat (limited to 'qa/qa/service/runner.rb')
-rw-r--r-- | qa/qa/service/runner.rb | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/qa/qa/service/runner.rb b/qa/qa/service/runner.rb index a6a60f53787..a9906b8627a 100644 --- a/qa/qa/service/runner.rb +++ b/qa/qa/service/runner.rb @@ -1,27 +1,38 @@ +require 'securerandom' + module QA module Service class Runner include Scenario::Actable include Service::Shellout - def initialize(image) - @image = image + attr_writer :token, :address, :tags, :image, :name + + def initialize + @image = 'gitlab/gitlab-runner:alpine' + @name = "gitlab-runner-qa-#{SecureRandom.hex(4)}" end def pull shell "docker pull #{@image}" end - def register(token) - raise NotImplementedError - end - - def run - raise NotImplementedError + def register! + shell <<~CMD.tr("\n", ' ') + docker run -d --rm --entrypoint=/bin/sh + --network test --name #{@name} + -e CI_SERVER_URL=#{@address} + -e REGISTER_NON_INTERACTIVE=true + -e REGISTRATION_TOKEN=#{@token} + -e RUNNER_EXECUTOR=shell + -e RUNNER_TAG_LIST=#{@tags.to_a.join(',')} + -e RUNNER_NAME=#{@name} + #{@image} -c 'gitlab-runner register && gitlab-runner run' + CMD end - def remove - raise NotImplementedError + def remove! + shell "docker rm -f #{@name}" end end end |