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 <noreply@anthropic.com>
This commit is contained in:
@@ -37,7 +37,8 @@ apk add \
|
|||||||
wget \
|
wget \
|
||||||
curl \
|
curl \
|
||||||
tar \
|
tar \
|
||||||
xz
|
xz \
|
||||||
|
screen
|
||||||
|
|
||||||
# --- audit runtime packages (verify they exist in Alpine repos) ---
|
# --- audit runtime packages (verify they exist in Alpine repos) ---
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
@@ -35,9 +35,10 @@ echo "=== bee builder ==="
|
|||||||
echo "Builder: ${BUILDER_HOST}"
|
echo "Builder: ${BUILDER_HOST}"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
ssh -o StrictHostKeyChecking=no root@"${BUILDER_HOST}" /bin/sh <<EOF
|
ssh -o StrictHostKeyChecking=no root@"${BUILDER_HOST}" /bin/sh <<ENDSSH
|
||||||
set -e
|
set -e
|
||||||
REPO=/root/bee
|
REPO=/root/bee
|
||||||
|
LOG=/var/log/bee-build.log
|
||||||
|
|
||||||
if [ ! -d "\$REPO/.git" ]; then
|
if [ ! -d "\$REPO/.git" ]; then
|
||||||
echo "--- cloning bee repo ---"
|
echo "--- cloning bee repo ---"
|
||||||
@@ -48,9 +49,27 @@ cd "\$REPO"
|
|||||||
echo "--- pulling latest ---"
|
echo "--- pulling latest ---"
|
||||||
git pull --ff-only
|
git pull --ff-only
|
||||||
|
|
||||||
echo "--- running build ---"
|
# Kill any previous build session
|
||||||
sh iso/builder/build-debug.sh ${EXTRA_ARGS}
|
screen -S bee-build -X quit 2>/dev/null || true
|
||||||
EOF
|
|
||||||
|
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 ""
|
||||||
echo "=== downloading ISO ==="
|
echo "=== downloading ISO ==="
|
||||||
|
|||||||
Reference in New Issue
Block a user