class Test::Drive::JenkinsClient

Attributes

client[RW]

Public Class Methods

new(jenkins_url, user, api_key) click to toggle source
# File lib/test/drive/jenkins_client.rb, line 8
def initialize jenkins_url, user, api_key
  @server_url = jenkins_url
  @user = user
  @api_key = api_key

  @client = JenkinsApi::Client.new :server_url => jenkins_url,
                         :username => user,
                         :password => api_key,
                         :log_level => 1
end

Public Instance Methods

get_build_number(target_job, tracking_id, timeout_in_seconds, sleep_interval=10) click to toggle source
# File lib/test/drive/jenkins_client.rb, line 19
def get_build_number(target_job, tracking_id, timeout_in_seconds, sleep_interval=10)
  (timeout_in_seconds/10).times do
    sleep sleep_interval
    build_details = @client.job.get_build_details(target_job, 0)
    if build_details['actions'][0]['parameters'].include?(tracking_id)
      return build_details['number']
    end
  end
  raise 'Build number not found within the time specified!'
end
print_output(build_number, target_job, sleep_interval=5) click to toggle source
upload_file_to_job(target_job, tracking_id, path_to_file) click to toggle source
# File lib/test/drive/jenkins_client.rb, line 51
def upload_file_to_job(target_job, tracking_id, path_to_file)
  res = `curl -i #{@server_url}/job/#{target_job}/build -F file0=@#{path_to_file} -F json='{"parameter": [{"name":"#{path_to_file}", "file":"file0"}, {"name":"TRACKING_ID", "value":"#{tracking_id}"}]}' --user '#{@user}':'#{@api_key}'`
  raise "Failed to send patch to Jenkins: \n#{res}" unless $? == 0
end
wait_for_job_status(target_job, build_number) click to toggle source
# File lib/test/drive/jenkins_client.rb, line 43
def wait_for_job_status(target_job, build_number)
  loop do
    details = @client.job.get_build_details(target_job, build_number)
    return details['result'] if details['result']
    sleep 5
  end
end