aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd
diff options
context:
space:
mode:
authorXu Cheng2015-09-18 20:28:36 +0800
committerXu Cheng2015-09-18 21:54:02 +0800
commit82289936247b97855878fb4ce2841b35d13d466f (patch)
tree731a1225e619da415825488f3b62cc10890769a6 /Library/Homebrew/cmd
parent70d31838c61b0aaeb76827b26cb461069c9dff8c (diff)
downloadbrew-82289936247b97855878fb4ce2841b35d13d466f.tar.bz2
test-bot: make ci-upload a standalone method
Diffstat (limited to 'Library/Homebrew/cmd')
-rw-r--r--Library/Homebrew/cmd/test-bot.rb219
1 files changed, 110 insertions, 109 deletions
diff --git a/Library/Homebrew/cmd/test-bot.rb b/Library/Homebrew/cmd/test-bot.rb
index 837091be2..b426b3662 100644
--- a/Library/Homebrew/cmd/test-bot.rb
+++ b/Library/Homebrew/cmd/test-bot.rb
@@ -735,9 +735,114 @@ module Homebrew
exec "brew", "update"
end
+ def test_ci_upload
+ tap = resolve_test_tap
+
+ jenkins = ENV["JENKINS_HOME"]
+ job = ENV["UPSTREAM_JOB_NAME"]
+ id = ENV["UPSTREAM_BUILD_ID"]
+ raise "Missing Jenkins variables!" if !jenkins || !job || !id
+
+ bintray_user = ENV["BINTRAY_USER"]
+ bintray_key = ENV["BINTRAY_KEY"]
+ if !bintray_user || !bintray_key
+ raise "Missing BINTRAY_USER or BINTRAY_KEY variables!"
+ end
+
+ # Don't pass keys/cookies to subprocesses..
+ ENV["BINTRAY_KEY"] = nil
+ ENV["HUDSON_SERVER_COOKIE"] = nil
+ ENV["JENKINS_SERVER_COOKIE"] = nil
+ ENV["HUDSON_COOKIE"] = nil
+
+ ARGV << "--verbose"
+ ARGV << "--keep-old" if ENV["UPSTREAM_BOTTLE_KEEP_OLD"]
+
+ bottles = Dir["#{jenkins}/jobs/#{job}/configurations/axis-version/*/builds/#{id}/archive/*.bottle*.*"]
+ return if bottles.empty?
+ FileUtils.cp bottles, Dir.pwd, :verbose => true
+
+ ENV["GIT_AUTHOR_NAME"] = ENV["GIT_COMMITTER_NAME"] = "BrewTestBot"
+ ENV["GIT_AUTHOR_EMAIL"] = ENV["GIT_COMMITTER_EMAIL"] = "brew-test-bot@googlegroups.com"
+ ENV["GIT_WORK_TREE"] = Homebrew.homebrew_git_repo(tap)
+ ENV["GIT_DIR"] = "#{ENV["GIT_WORK_TREE"]}/.git"
+
+ pr = ENV["UPSTREAM_PULL_REQUEST"]
+ number = ENV["UPSTREAM_BUILD_NUMBER"]
+
+ quiet_system "git", "am", "--abort"
+ quiet_system "git", "rebase", "--abort"
+ safe_system "git", "checkout", "-f", "master"
+ safe_system "git", "reset", "--hard", "origin/master"
+ safe_system "brew", "update"
+
+ if pr
+ pull_pr = if tap
+ "https://github.com/#{tap.user}/homebrew-#{tap.repo}/pull/#{pr}"
+ else
+ pr
+ end
+ safe_system "brew", "pull", "--clean", pull_pr
+ end
+
+ bottle_args = ["--merge", "--write", *Dir["*.bottle.rb"]]
+ bottle_args << "--tap=#{tap}" if tap
+ bottle_args << "--keep-old" if ARGV.include? "--keep-old"
+ safe_system "brew", "bottle", *bottle_args
+
+ remote_repo = tap ? "homebrew-#{tap.repo}" : "homebrew"
+ remote = "git@github.com:BrewTestBot/#{remote_repo}.git"
+ tag = pr ? "pr-#{pr}" : "testing-#{number}"
+ safe_system "git", "push", "--force", remote, "master:master", ":refs/tags/#{tag}"
+
+ bintray_repo = Bintray.repository(tap.name)
+ bintray_repo_url = "https://api.bintray.com/packages/homebrew/#{bintray_repo}"
+ formula_packaged = {}
+
+ Dir.glob("*.bottle*.tar.gz") do |filename|
+ formula_name, canonical_formula_name = bottle_resolve_formula_names filename
+ formula = Formulary.factory canonical_formula_name
+ version = formula.pkg_version
+ bintray_package = Bintray.package formula_name
+
+ if system "curl", "-I", "--silent", "--fail", "--output", "/dev/null",
+ "#{BottleSpecification::DEFAULT_DOMAIN}/#{bintray_repo}/#{filename}"
+ raise <<-EOS.undent
+ #{filename} is already published. Please remove it manually from
+ https://bintray.com/homebrew/#{bintray_repo}/#{bintray_package}/view#files
+ EOS
+ end
+
+ unless formula_packaged[formula_name]
+ package_url = "#{bintray_repo_url}/#{bintray_package}"
+ unless system "curl", "--silent", "--fail", "--output", "/dev/null", package_url
+ curl "--silent", "--fail", "-u#{bintray_user}:#{bintray_key}",
+ "-H", "Content-Type: application/json",
+ "-d", "{\"name\":\"#{bintray_package}\"}", bintray_repo_url
+ puts
+ end
+ formula_packaged[formula_name] = true
+ end
+
+ content_url = "https://api.bintray.com/content/homebrew"
+ content_url += "/#{bintray_repo}/#{bintray_package}/#{version}/#{filename}"
+ content_url += "?override=1"
+ curl "--silent", "--fail", "-u#{bintray_user}:#{bintray_key}",
+ "-T", filename, content_url
+ puts
+ end
+
+ safe_system "git", "tag", "--force", tag
+ safe_system "git", "push", "--force", remote, "refs/tags/#{tag}"
+ end
+
def test_bot
tap = resolve_test_tap
- repository = Homebrew.homebrew_git_repo tap
+ # Tap repository if required, this is done before everything else
+ # because Formula parsing and/or git commit hash lookup depends on it.
+ if tap && !tap.installed?
+ safe_system "brew", "tap", tap.name
+ end
if Pathname.pwd == HOMEBREW_PREFIX && ARGV.include?("--cleanup")
odie "cannot use --cleanup from HOMEBREW_PREFIX as it will delete all output."
@@ -771,114 +876,10 @@ module Homebrew
ENV["HOMEBREW_LOGS"] = "#{Dir.pwd}/logs"
end
- test_bot_ci_reset_and_update if ARGV.include? "--ci-reset-and-update"
-
- # Tap repository if required, this is done before everything else
- # because Formula parsing and/or git commit hash lookup depends on it.
- if tap && !tap.installed?
- safe_system "brew", "tap", tap.name
- end
-
- if ARGV.include? "--ci-upload"
- jenkins = ENV["JENKINS_HOME"]
- job = ENV["UPSTREAM_JOB_NAME"]
- id = ENV["UPSTREAM_BUILD_ID"]
- raise "Missing Jenkins variables!" if !jenkins || !job || !id
-
- bintray_user = ENV["BINTRAY_USER"]
- bintray_key = ENV["BINTRAY_KEY"]
- if !bintray_user || !bintray_key
- raise "Missing BINTRAY_USER or BINTRAY_KEY variables!"
- end
-
- # Don't pass keys/cookies to subprocesses..
- ENV["BINTRAY_KEY"] = nil
- ENV["HUDSON_SERVER_COOKIE"] = nil
- ENV["JENKINS_SERVER_COOKIE"] = nil
- ENV["HUDSON_COOKIE"] = nil
-
- ARGV << "--verbose"
- ARGV << "--keep-old" if ENV["UPSTREAM_BOTTLE_KEEP_OLD"]
-
- bottles = Dir["#{jenkins}/jobs/#{job}/configurations/axis-version/*/builds/#{id}/archive/*.bottle*.*"]
- return if bottles.empty?
- FileUtils.cp bottles, Dir.pwd, :verbose => true
-
- ENV["GIT_COMMITTER_NAME"] = "BrewTestBot"
- ENV["GIT_COMMITTER_EMAIL"] = "brew-test-bot@googlegroups.com"
- ENV["GIT_WORK_TREE"] = repository
- ENV["GIT_DIR"] = "#{ENV["GIT_WORK_TREE"]}/.git"
-
- pr = ENV["UPSTREAM_PULL_REQUEST"]
- number = ENV["UPSTREAM_BUILD_NUMBER"]
-
- system "git am --abort 2>/dev/null"
- system "git rebase --abort 2>/dev/null"
- safe_system "git", "checkout", "-f", "master"
- safe_system "git", "reset", "--hard", "origin/master"
- safe_system "brew", "update"
-
- if pr
- pull_pr = if tap
- "https://github.com/#{tap.user}/homebrew-#{tap.repo}/pull/#{pr}"
- else
- pr
- end
- safe_system "brew", "pull", "--clean", pull_pr
- end
-
- ENV["GIT_AUTHOR_NAME"] = ENV["GIT_COMMITTER_NAME"]
- ENV["GIT_AUTHOR_EMAIL"] = ENV["GIT_COMMITTER_EMAIL"]
- bottle_args = ["--merge", "--write", *Dir["*.bottle.rb"]]
- bottle_args << "--tap=#{tap}" if tap
- bottle_args << "--keep-old" if ARGV.include? "--keep-old"
- safe_system "brew", "bottle", *bottle_args
-
- remote_repo = tap ? "homebrew-#{tap.repo}" : "homebrew"
- remote = "git@github.com:BrewTestBot/#{remote_repo}.git"
- tag = pr ? "pr-#{pr}" : "testing-#{number}"
- safe_system "git", "push", "--force", remote, "master:master", ":refs/tags/#{tag}"
-
- bintray_repo = Bintray.repository(tap.name)
- bintray_repo_url = "https://api.bintray.com/packages/homebrew/#{bintray_repo}"
- formula_packaged = {}
-
- Dir.glob("*.bottle*.tar.gz") do |filename|
- formula_name, canonical_formula_name = bottle_resolve_formula_names filename
- formula = Formulary.factory canonical_formula_name
- version = formula.pkg_version
- bintray_package = Bintray.package formula_name
-
- if system "curl", "-I", "--silent", "--fail", "--output", "/dev/null",
- "#{BottleSpecification::DEFAULT_DOMAIN}/#{bintray_repo}/#{filename}"
- raise <<-EOS.undent
- #{filename} is already published. Please remove it manually from
- https://bintray.com/homebrew/#{bintray_repo}/#{bintray_package}/view#files
- EOS
- end
-
- unless formula_packaged[formula_name]
- package_url = "#{bintray_repo_url}/#{bintray_package}"
- unless system "curl", "--silent", "--fail", "--output", "/dev/null", package_url
- curl "--silent", "--fail", "-u#{bintray_user}:#{bintray_key}",
- "-H", "Content-Type: application/json",
- "-d", "{\"name\":\"#{bintray_package}\"}", bintray_repo_url
- puts
- end
- formula_packaged[formula_name] = true
- end
-
- content_url = "https://api.bintray.com/content/homebrew"
- content_url += "/#{bintray_repo}/#{bintray_package}/#{version}/#{filename}"
- content_url += "?override=1"
- curl "--silent", "--fail", "-u#{bintray_user}:#{bintray_key}",
- "-T", filename, content_url
- puts
- end
-
- safe_system "git", "tag", "--force", tag
- safe_system "git", "push", "--force", remote, "refs/tags/#{tag}"
- return
+ if ARGV.include? "--ci-reset-and-update"
+ return test_bot_ci_reset_and_update
+ elsif ARGV.include? "--ci-upload"
+ return test_ci_upload
end
tests = []