lib/gitlab/qa/component/pipeline_ops.rb (48 lines of code) (raw):

# frozen_string_literal: true module Gitlab module QA module Component class PipelineOps < Base def start(gitlab, project_name) create_and_execute_pipeline_script(gitlab, project_name) end def check_status(gitlab) pipeline_status = gitlab.docker.exec( gitlab.name, wait_for_pipeline) case pipeline_status when 'success' puts "Pipeline succeeded!" nil when 'failed' raise StandardError, "Pipeline failed." else puts "Pipeline is currently #{pipeline_status}" end end private def create_and_execute_pipeline_script(gitlab, project_name) setup_src_path = File.expand_path('../../../../support/pipeline', __dir__) setup_dest_path = '/tmp/setup-scripts' gitlab.docker.copy(gitlab.name, setup_src_path, setup_dest_path) gitlab.docker.exec( gitlab.name, "PROJECT_NAME='#{project_name}' gitlab-rails runner #{setup_dest_path}/create_for_projectname.rb" ) end def wait_for_pipeline <<~SHELL gitlab-rails runner " latest_pipeline = Ci::Pipeline.last # wait for the pipeline to complete loop do latest_pipeline.reload break if latest_pipeline.complete? sleep 1 end puts latest_pipeline.status " SHELL end end end end end