diff --git a/Library/Homebrew/cmd/test-bot.rb b/Library/Homebrew/cmd/test-bot.rb index d91601b2991a1a38bf9e5f06f073b49b59ef7d0d..21d328eaae0e36e44a722b7bc68da48be0df0cd4 100644 --- a/Library/Homebrew/cmd/test-bot.rb +++ b/Library/Homebrew/cmd/test-bot.rb @@ -664,11 +664,14 @@ module Homebrew jenkins = ENV['JENKINS_HOME'] job = ENV['UPSTREAM_JOB_NAME'] id = ENV['UPSTREAM_BUILD_ID'] - raise "Missing Jenkins variables!" unless jenkins and job and id + raise "Missing Jenkins variables!" if !jenkins || !job || !id - user = ENV["BINTRAY_USER"] - key = ENV["BINTRAY_KEY"] - raise "Missing Bintray variables!" unless user && key + bintray_user = ENV["BINTRAY_USER"] + bintray_key = ENV["BINTRAY_KEY"] + # Skip taps for now until we're using Bintray for Homebrew/homebrew + if !tap && (!bintray_user || !bintray_key) + raise "Missing BINTRAY_USER or BINTRAY_KEY variables!" + end ARGV << '--verbose' @@ -700,6 +703,14 @@ module Homebrew safe_system "brew", "pull", "--clean", pull_pr end + existing_bottles = {} + Dir.glob("*.bottle*.tar.gz") do |filename| + # Skip taps for now until we're using Bintray for Homebrew/homebrew + next if tap + formula = bottle_filename_formula_name filename + existing_bottles[formula.name] = !!formula.bottle + end + ENV["GIT_AUTHOR_NAME"] = ENV["GIT_COMMITTER_NAME"] ENV["GIT_AUTHOR_EMAIL"] = ENV["GIT_COMMITTER_EMAIL"] safe_system "brew", "bottle", "--merge", "--write", *Dir["*.bottle.rb"] @@ -710,19 +721,6 @@ module Homebrew tag = pr ? "pr-#{pr}" : "testing-#{number}" safe_system "git", "push", "--force", remote, "master:master", ":refs/tags/#{tag}" - # SourceForge upload (will be removed soon) - path = "/home/frs/project/m/ma/machomebrew/Bottles/" - if tap - tap_user, tap_repo = tap.split "/" - path += "#{tap_repo}/" - end - url = "BrewTestBot,machomebrew@frs.sourceforge.net:#{path}" - - rsync_args = %w[--partial --progress --human-readable --compress] - rsync_args += Dir["*.bottle*.tar.gz"] + [url] - - safe_system "rsync", *rsync_args - # Bintray upload (will take over soon) repo = if tap tap.sub("/", "-") + "-bottles" @@ -735,22 +733,38 @@ module Homebrew next if tap version = BottleVersion.parse(filename).to_s formula = bottle_filename_formula_name filename + existing_bottle = existing_bottles[formula.name] repo_url = "https://api.bintray.com/packages/homebrew/#{repo}" package_url = "#{repo_url}/#{formula}" unless system "curl", "--silent", "--fail", "--output", "/dev/null", package_url - safe_system "curl", "--silent", "--fail", "-u#{user}:#{key}", + safe_system "curl", "--silent", "--fail", + "-u#{bintray_user}:#{bintray_key}", "-H", "Content-Type: application/json", "-d", "{\"name\":\"#{formula}\"}", repo_url puts end content_url = "https://api.bintray.com/content/homebrew/#{repo}/#{formula}/#{version}/#{filename}" - safe_system "curl", "--silent", "--fail", "-u#{user}:#{key}", - "-T", filename, content_url + content_url += "?publish=1&override=1" if existing_bottle + safe_system "curl", "--silent", "--fail", + "-u#{bintray_user}:#{bintray_key}", "-T", filename, content_url puts end + # SourceForge upload (will be removed soon) + path = "/home/frs/project/m/ma/machomebrew/Bottles/" + if tap + tap_user, tap_repo = tap.split "/" + path += "#{tap_repo}/" + end + url = "BrewTestBot,machomebrew@frs.sourceforge.net:#{path}" + + rsync_args = %w[--partial --progress --human-readable --compress] + rsync_args += Dir["*.bottle*.tar.gz"] + [url] + + safe_system "rsync", *rsync_args + safe_system "git", "tag", "--force", tag safe_system "git", "push", "--force", remote, "refs/tags/#{tag}" return