in lib/omnibus/publishers/artifactory_publisher.rb [21:78]
def publish(&block)
log.info(log_key) { "Starting artifactory publisher" }
safe_require("artifactory")
packages.each do |package|
log.debug(log_key) { "Validating '#{package.name}'" }
package.validate!
retries = Config.publish_retries
begin
upload_time = Benchmark.realtime do
remote_path = remote_path_for(package)
properties = default_properties.merge(metadata_properties_for(package))
log.info(log_key) { "Uploading '#{package.name}'" }
artifact_for(package).upload(
repository,
remote_path,
properties
)
log.info(log_key) { "Uploading '#{package.name}.metadata.json'" }
artifact_for(package.metadata).upload(
repository,
"#{remote_path}.metadata.json",
properties.dup.delete_if { |k, v| k =~ /^omnibus\.(md5|sha)/ }
)
end
rescue Artifactory::Error::HTTPError => e
if (retries -= 1) != 0
log.info(log_key) { "Upload failed with exception: #{e}" }
log.info(log_key) { "Retrying failed publish #{retries} more time(s)..." }
retry
else
raise e
end
end
log.debug(log_key) { "Elapsed time to publish #{package.name}: #{1000 * upload_time} ms" }
yield(package) if block
end
if build_record?
if packages.empty?
log.warn(log_key) { "No packages were uploaded, build record will not be created." }
else
build_for(packages).save
end
end
end