From e5c1ef2c333f1ceb60f3fa506bd6117397d928cb Mon Sep 17 00:00:00 2001 From: Michael Chus Date: Thu, 5 Mar 2026 18:07:17 +0300 Subject: [PATCH] fix: run build in screen session to survive SSH disconnects Long builds (NVIDIA driver download+compile) would abort on SSH timeout. Now build runs in a detached screen session on the VM, run-builder.sh streams the log and waits for completion safely. Co-Authored-By: Claude Sonnet 4.6 --- iso/builder/setup-builder.sh | 3 ++- scripts/run-builder.sh | 27 +++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/iso/builder/setup-builder.sh b/iso/builder/setup-builder.sh index e1d9565..e593f70 100644 --- a/iso/builder/setup-builder.sh +++ b/iso/builder/setup-builder.sh @@ -37,7 +37,8 @@ apk add \ wget \ curl \ tar \ - xz + xz \ + screen # --- audit runtime packages (verify they exist in Alpine repos) --- echo "" diff --git a/scripts/run-builder.sh b/scripts/run-builder.sh index 7c56f5f..687b9b6 100755 --- a/scripts/run-builder.sh +++ b/scripts/run-builder.sh @@ -35,9 +35,10 @@ echo "=== bee builder ===" echo "Builder: ${BUILDER_HOST}" echo "" -ssh -o StrictHostKeyChecking=no root@"${BUILDER_HOST}" /bin/sh </dev/null || true + +echo "--- starting build in screen session (survives SSH disconnect) ---" +echo "--- log: \$LOG ---" +screen -dmS bee-build sh -c "sh iso/builder/build-debug.sh ${EXTRA_ARGS} > \$LOG 2>&1; echo \$? > /tmp/bee-build-exit" + +# Stream log until build finishes +echo "--- streaming build log (Ctrl+C safe — build continues on VM) ---" +while screen -list | grep -q bee-build; do + tail -n +1 -f "\$LOG" 2>/dev/null & TAIL_PID=\$! + sleep 1 + while screen -list | grep -q bee-build; do sleep 2; done + kill \$TAIL_PID 2>/dev/null || true + break +done +tail -n 20 "\$LOG" 2>/dev/null || true + +EXIT_CODE=\$(cat /tmp/bee-build-exit 2>/dev/null || echo 1) +exit \$EXIT_CODE +ENDSSH echo "" echo "=== downloading ISO ==="