class JenkinsCentaur::Centaur
Public Class Methods
new(resource)
click to toggle source
# File lib/jenkins-centaur/centaur.rb, line 8 def initialize(resource) raise "File '#{resource}' doesn't exist!" unless File.exist?(resource) @config = YAML::load(File.open(resource)) raise "Invalid yaml file: '#{resource}'" unless @config @client = JenkinsApi::Client.new(server_url: @config['server_url']) @client.logger = Logger.new('jenkins_api_client.log', 10, 10_024_000) end
Public Instance Methods
start()
click to toggle source
# File lib/jenkins-centaur/centaur.rb, line 18 def start println "Started at: #{Time.now}." build_info = Concurrent::Array.new threads = [] @config['jobs'].each do |job| threads << Thread.new do println "Creating build for job #{job['name']} with parameters: #{job['params']}" params = {} job['params'].each do |key, value| if value.include?('ENV') params[key] = eval(value) else params[key] = value end end build_num = @client.job.build(job['name'], params, 'build_start_timeout' => 300, 'poll_interval' => 10) println "Created build #{build_num} for job #{job['name']} with parameters: #{job['params']}" build_info << {build_num: build_num, job_name: job['name']} end end threads.each(&:join) overall_status = 0 build_info.each do |build| build_num = build[:build_num] job_name = build[:job_name] build_details = nil loop do println "Checking build #{build_num}..." begin Timeout.timeout(10) do build_details = @client.job.get_build_details(job_name, build_num) end rescue StandardError => e println "Exception occured while trying to check the result, will check again soon. #{e.message}" sleep 5 end break if build_details['result'] sleep(2) end println "Results for build #{build_num}: #{build_details['result']}. See more at: #{build_details['url']}" overall_status = 1 if build_details['result'] != 'SUCCESS' end println "All done at #{Time.now}." overall_status end
Private Instance Methods
println(text)
click to toggle source
# File lib/jenkins-centaur/centaur.rb, line 79 def println(text) puts text STDOUT.flush end