class Autodeploy::Job
Public Class Methods
new(configfile)
click to toggle source
# File lib/autodeploy.rb, line 23 def initialize(configfile) @config = YAML.load_file(configfile) @client = JenkinsApi::Client.new(@config) unless Dir.exist? @config['download_dir'] Autodeploy.log "Creating #{@config['download_dir']} in #{Dir.pwd}" Dir.mkdir @config['download_dir'] end ActiveRecord::Base.establish_connection(@config['database']) end
Public Instance Methods
daemonize(time=10)
click to toggle source
# File lib/autodeploy.rb, line 84 def daemonize(time=10) loop do run sleep time end end
job()
click to toggle source
# File lib/autodeploy.rb, line 39 def job @job ||= @client.job.get_build_details(@config['job'], job_number) end
job_number()
click to toggle source
# File lib/autodeploy.rb, line 35 def job_number @job_number ||= @client.job.get_current_build_number(@config['job']) end
run()
click to toggle source
# File lib/autodeploy.rb, line 43 def run @deployer = Autodeploy::Deployer.new(@config, job) @deployer.run() return unless job['result'] == 'SUCCESS' build_action = job['actions'].detect{|action| action.include?('lastBuiltRevision')} sha = build_action.nil? ? nil : build_action['lastBuiltRevision']['SHA1'] filename = [job_number, sha, job['artifacts'][0]['fileName']].compact.join('-') filepath = File.join(@config['download_dir'], filename) if File.exists?(filepath) Autodeploy.log "#{filepath} already exists" return end uri = URI("#{job['url']}artifact/#{job['artifacts'][0]['relativePath']}") Autodeploy.log "Starting download: #{uri.path}" Net::HTTP.start(uri.host, uri.port, use_ssl: true, verify_mode: OpenSSL::SSL::VERIFY_NONE) do |http| request = Net::HTTP::Get.new uri.request_uri request.basic_auth @config['username'], @config['password'] resp = http.request(request) if resp.code != "200" Autodeploy.log "Error downloading artifact: #{resp.code} - #{resp.message}" return end Autodeploy.log "Saving #{filename}" open("downloads/#{filename}", "wb") do |file| file.write(resp.body) Autodeploy.log "Completed download - #{filename}" end end end