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 |   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 |   module Service | ||||||
|     autoload :Omnibus, 'qa/shell/omnibus' |     autoload :Shellable, 'qa/service/shellable' | ||||||
|  |     autoload :Omnibus, 'qa/service/omnibus' | ||||||
|  |     autoload :Runner, 'qa/service/runner' | ||||||
|   end |   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