From: Marcus Hoffmann Date: Tue, 5 Dec 2017 20:31:55 +0000 (+0100) Subject: build: better logging output on rsync failures X-Git-Tag: 1.0.0~45^2~1 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=fdroidserver.git;a=commitdiff_plain;h=e12e1b6a5ccb681f97991e14481dac2f8bb0d7e6 build: better logging output on rsync failures Save rsync error output and combine that with the command invocation into an FDroidException which can be logged to the wiki. This additionally sets -q for rsync to only print errors. --- diff --git a/fdroidserver/build.py b/fdroidserver/build.py index 2bacd555..b1b74464 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -100,18 +100,22 @@ def build_server(app, build, vcs, build_dir, output_dir, log_dir, force): # Helper to copy the contents of a directory to the server... def send_dir(path): logging.debug("rsyncing " + path + " to " + ftp.getcwd()) - subprocess.check_call(['rsync', '-rple', - 'ssh -o StrictHostKeyChecking=no' + - ' -o UserKnownHostsFile=/dev/null' + - ' -o LogLevel=FATAL' + - ' -o IdentitiesOnly=yes' + - ' -o PasswordAuthentication=no' + - ' -p ' + str(sshinfo['port']) + - ' -i ' + sshinfo['idfile'], - path, - sshinfo['user'] + - "@" + sshinfo['hostname'] + - ":" + ftp.getcwd()]) + try: + subprocess.check_output(['rsync', '-rplqe', + 'ssh -o StrictHostKeyChecking=no' + + ' -o UserKnownHostsFile=/dev/null' + + ' -o LogLevel=FATAL' + + ' -o IdentitiesOnly=yes' + + ' -o PasswordAuthentication=no' + + ' -p ' + str(sshinfo['port']) + + ' -i ' + sshinfo['idfile'], + path, + sshinfo['user'] + + "@" + sshinfo['hostname'] + + ":" + ftp.getcwd()], + stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as e: + raise FDroidException(str(e), e.output.decode()) logging.info("Preparing server for build...") serverpath = os.path.abspath(os.path.dirname(__file__))