Merge pull request #7714 from jonchang/bintray-check-upload-publish

bintray: stricter checking of upload results
This commit is contained in:
Jonathan Chang 2020-06-10 19:35:38 +10:00 committed by GitHub
commit 5511dfc526
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -34,7 +34,6 @@ class Bintray
def open_api(url, *extra_curl_args, auth: true)
args = extra_curl_args
args += ["--user", "#{@bintray_user}:#{@bintray_key}"] if auth
args += ["--output", "/dev/null"] unless Homebrew.args.verbose?
curl(*args, url,
show_output: Homebrew.args.verbose?,
secrets: @bintray_key)
@ -44,12 +43,23 @@ class Bintray
url = "#{API_URL}/content/#{@bintray_org}/#{repo}/#{package}/#{version}/#{remote_file}"
args = ["--upload-file", local_file]
args += ["--header", "X-Checksum-Sha2: #{sha256}"] unless sha256.blank?
open_api url, *args
result = open_api url, *args
json = JSON.parse(result.stdout)
raise "Bottle upload failed: #{json["message"]}" if json["message"] != "success"
result
end
def publish(repo:, package:, version:)
def publish(repo:, package:, version:, file_count:)
url = "#{API_URL}/content/#{@bintray_org}/#{repo}/#{package}/#{version}/publish"
open_api url, "--request", "POST"
result = open_api url, "--request", "POST"
json = JSON.parse(result.stdout)
if file_count.present? && json["files"] != file_count
raise "Bottle publish failed: expected #{file_count} bottles, but published #{json["files"]} instead."
end
odebug "Published #{json["files"]} bottles"
result
end
def official_org?(org: @bintray_org)
@ -67,7 +77,7 @@ class Bintray
def package_exists?(repo:, package:)
url = "#{API_URL}/packages/#{@bintray_org}/#{repo}/#{package}"
begin
open_api url, "--fail", "--silent", auth: false
open_api url, "--fail", "--silent", "--output", "/dev/null", auth: false
rescue ErrorDuringExecution => e
stderr = e.output
.select { |type,| type == :stderr }
@ -140,10 +150,11 @@ class Bintray
remote_file: filename,
sha256: sha256)
end
if publish_package
odebug "Publishing #{@bintray_org}/#{bintray_repo}/#{bintray_package}/#{version}"
publish repo: bintray_repo, package: bintray_package, version: version
end
next unless publish_package
bottle_count = bottle_hash["bottle"]["tags"].length
odebug "Publishing #{@bintray_org}/#{bintray_repo}/#{bintray_package}/#{version}"
publish repo: bintray_repo, package: bintray_package, version: version, file_count: bottle_count
end
end
end