Uploading files to Jenkins build from Ruby script

17 views
Skip to first unread message

Andrew Moore

unread,
May 25, 2016, 10:42:29 AM5/25/16
to Jenkins Users
I have a ruby script to upload files to a Jenkins job but for some reason they don't appear in the job's workspace.

def jenkins_get_attempt(credentials, uri,payload)

    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE

    headers = {'Content-Type' => "application/json", 'Accept-Encoding'=> "gzip,deflate",'Accept' => "application/json" }

    request = Net::HTTP::Post.new(uri.request_uri,headers)
    request.basic_auth credentials.username, credentials.password
    request.body = payload.to_json

    begin
        response = http.request(request)
        puts response.body
        puts response.code
    rescue StandardError, Timeout::Error => e
        puts "Failed to get the resource: " + e.message
    end

   return response.is_a?(Net::HTTPSuccess)
end


###############################################################################
# Deploy a build file to Jenkins
#
# @param credentials  [in] Jenkins credentials
# @param fileName     [in] name of the file to deploy
#
###############################################################################
def deploy_jenkins_ininspotability_ion_build(credentials,binZip, staticMediaZip)

    host = our_jenkins_host:8443
    token = "token"

    job = "/job/{our job}/build"

    uri= "https://" + host
    uri << job
    uri << "?token=" + token
    uri << "&SERVICE_BIN="
    uri << File.basename(binZip)
    uri << "&SHARED_RESOURCES="
    uri << File.basename(staticMediaZip)
    uri << "&file0="
    uri << binZip
    uri << "&file1="
    uri << staticMediaZip

     payload = {
                  :parameter => [{:name => "binary_zip", :file => "file0"},{:name => "resources_zip",:file => "file1"}, {:name => "SERVICE_BIN", :value => File.basename(binZip)}, {:name => "SHARED_RESOURCES", :value => staticMediaZip }]
                
               }

    puts "URI = " + uri;

    #uri = URI.parse(uri)

    attempt = 0
    maxAttempts = 10

    begin
        if jenkins_get_attempt(credentials, uri, payload, binZip, staticMediaZip)
            return true
        end
       
        attempt += 1

        puts "attempt #{attempt} failed"

    end while attempt < maxAttempts

    return false
end

The SERVICE_BIN and SHARED_RESOURCES values are populated, but the zip files don't get uploaded.
Reply all
Reply to author
Forward
0 new messages