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