From 93c95824c754384f12891f1c8daf527e178a2bff Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 21 Sep 2010 15:54:34 -0700 Subject: s4: Add script for landing a branch through a remote server, such as sn. --- source4/script/land-remote.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 source4/script/land-remote.py (limited to 'source4/script') diff --git a/source4/script/land-remote.py b/source4/script/land-remote.py new file mode 100755 index 0000000000..2ac1eb6c1a --- /dev/null +++ b/source4/script/land-remote.py @@ -0,0 +1,40 @@ +#!/usr/bin/python +# Land a branch by building and testing it on sn-104 before landing it on master. +# Copyright (C) 2010 Jelmer Vernooij +# Published under the GPL, v3 or later + +import os +import optparse +import subprocess +import sys + +parser = optparse.OptionParser("land-remote [options]") +parser.add_option("--host", help="Host to land on (SSH connection string)", type=str, default="sn-devel-104.sn.samba.org") +parser.add_option("--dry-run", help="Dry run (don't actually land)", action="store_true", default=False) +parser.add_option("--foreground", help="Don't daemonize", action="store_true", default=False) +parser.add_option("--mail-to", help="Email address to send build/test output to", type=str, default=None, metavar="MAIL-TO") + +(opts, args) = parser.parse_args() + +f = subprocess.Popen(["ssh", opts.host, "mktemp", "-d"], stdout=subprocess.PIPE) +(stdout, stderr) = f.communicate() +remote_tmpdir = stdout.rstrip() + +print "Remote tempdir: %s" % remote_tmpdir + +if subprocess.call(["ssh", opts.host, "git", "clone", "git://git.samba.org/samba.git", "%s/repo" % remote_tmpdir]) != 0: + sys.exit(1) + +print "Pushing local branch" +subprocess.call(["git", "push", "--force", "git+ssh://%s/%s/repo" % (opts.host, remote_tmpdir), "HEAD:refs/heads/land"]) +args = ["ssh", "-A", opts.host, "python", "%s/repo/source4/script/land.py" % remote_tmpdir] +if opts.mail_to: + args.append("--mail-to=%s" % opts.mail_to) +if not opts.foreground: + args.append("--daemon") +if opts.dry_run: + args.append("--dry-run") +args.append("--branch=land") +args.append(os.path.join(remote_tmpdir, "repo")) +print "Running remotely: %s" % " ".join(args) +sys.exit(subprocess.call(args)) -- cgit