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
# File lib/test/drive/jenkins_client.rb, line 30 def print_output(build_number, target_job, sleep_interval=5) offset = 0 loop do job_output = @client.job.get_console_output(target_job, build_number, offset) print job_output['output'] break unless job_output['more'] offset = job_output['size'] sleep sleep_interval end end
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