mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-10-05 18:50:09 +02:00
Merge branch 'destroy_vm' into 'master'
build: close ssh_channel upon timeout See merge request fdroid/fdroidserver!1287
This commit is contained in:
commit
b285603e43
@ -49,6 +49,7 @@ except ImportError:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
buildserverid = None
|
buildserverid = None
|
||||||
|
ssh_channel = None
|
||||||
|
|
||||||
|
|
||||||
# Note that 'force' here also implies test mode.
|
# Note that 'force' here also implies test mode.
|
||||||
@ -68,7 +69,7 @@ def build_server(app, build, vcs, build_dir, output_dir, log_dir, force):
|
|||||||
target folder for the build result
|
target folder for the build result
|
||||||
force
|
force
|
||||||
"""
|
"""
|
||||||
global buildserverid
|
global buildserverid, ssh_channel
|
||||||
|
|
||||||
try:
|
try:
|
||||||
paramiko
|
paramiko
|
||||||
@ -223,8 +224,8 @@ def build_server(app, build, vcs, build_dir, output_dir, log_dir, force):
|
|||||||
|
|
||||||
# Execute the build script...
|
# Execute the build script...
|
||||||
logging.info("Starting build...")
|
logging.info("Starting build...")
|
||||||
chan = sshs.get_transport().open_session()
|
ssh_channel = sshs.get_transport().open_session()
|
||||||
chan.get_pty()
|
ssh_channel.get_pty()
|
||||||
cmdline = posixpath.join(homedir, 'fdroidserver', 'fdroid')
|
cmdline = posixpath.join(homedir, 'fdroidserver', 'fdroid')
|
||||||
cmdline += ' build --on-server'
|
cmdline += ' build --on-server'
|
||||||
if force:
|
if force:
|
||||||
@ -238,14 +239,14 @@ def build_server(app, build, vcs, build_dir, output_dir, log_dir, force):
|
|||||||
if (options.scan_binary or config.get('scan_binary')) and not options.skipscan:
|
if (options.scan_binary or config.get('scan_binary')) and not options.skipscan:
|
||||||
cmdline += ' --scan-binary'
|
cmdline += ' --scan-binary'
|
||||||
cmdline += " %s:%s" % (app.id, build.versionCode)
|
cmdline += " %s:%s" % (app.id, build.versionCode)
|
||||||
chan.exec_command('bash --login -c "' + cmdline + '"') # nosec B601 inputs are sanitized
|
ssh_channel.exec_command('bash --login -c "' + cmdline + '"') # nosec B601 inputs are sanitized
|
||||||
|
|
||||||
# Fetch build process output ...
|
# Fetch build process output ...
|
||||||
try:
|
try:
|
||||||
cmd_stdout = chan.makefile('rb', 1024)
|
cmd_stdout = ssh_channel.makefile('rb', 1024)
|
||||||
output = bytes()
|
output = bytes()
|
||||||
output += common.get_android_tools_version_log().encode()
|
output += common.get_android_tools_version_log().encode()
|
||||||
while not chan.exit_status_ready():
|
while not ssh_channel.exit_status_ready():
|
||||||
line = cmd_stdout.readline()
|
line = cmd_stdout.readline()
|
||||||
if line:
|
if line:
|
||||||
if options.verbose:
|
if options.verbose:
|
||||||
@ -262,7 +263,7 @@ def build_server(app, build, vcs, build_dir, output_dir, log_dir, force):
|
|||||||
|
|
||||||
# Check build process exit status ...
|
# Check build process exit status ...
|
||||||
logging.info("...getting exit status")
|
logging.info("...getting exit status")
|
||||||
returncode = chan.recv_exit_status()
|
returncode = ssh_channel.recv_exit_status()
|
||||||
if returncode != 0:
|
if returncode != 0:
|
||||||
if timeout_event.is_set():
|
if timeout_event.is_set():
|
||||||
message = "Timeout exceeded! Build VM force-stopped for {0}:{1}"
|
message = "Timeout exceeded! Build VM force-stopped for {0}:{1}"
|
||||||
@ -892,6 +893,8 @@ def force_halt_build(timeout):
|
|||||||
"""Halt the currently running Vagrant VM, to be called from a Timer."""
|
"""Halt the currently running Vagrant VM, to be called from a Timer."""
|
||||||
logging.error(_('Force halting build after {0} sec timeout!').format(timeout))
|
logging.error(_('Force halting build after {0} sec timeout!').format(timeout))
|
||||||
timeout_event.set()
|
timeout_event.set()
|
||||||
|
if ssh_channel:
|
||||||
|
ssh_channel.close()
|
||||||
vm = vmtools.get_build_vm('builder')
|
vm = vmtools.get_build_vm('builder')
|
||||||
vm.destroy()
|
vm.destroy()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user