From d8487b568acd544cdae94eabb23143581c73eb40 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Sat, 4 Jul 2026 15:34:08 +0100 Subject: [PATCH] Tighten demo backup cleanup headroom --- .github/workflows/update-demo-server.yml | 15 +++++++++++++++ scripts/installtests/build_release_assets_test.go | 1 + 2 files changed, 16 insertions(+) diff --git a/.github/workflows/update-demo-server.yml b/.github/workflows/update-demo-server.yml index da8af0c52..b81af271f 100644 --- a/.github/workflows/update-demo-server.yml +++ b/.github/workflows/update-demo-server.yml @@ -364,6 +364,21 @@ jobs: config_kb="$(sudo du -sk "$CONFIG_DIR" | awk 'NR == 1 {print $1}')" free_kb="$(df -Pk "$BACKUP_PARENT" | awk 'NR == 2 {print $4}')" required_kb=$((config_kb + BACKUP_MARGIN_KB)) + if ((free_kb < required_kb)); then + mapfile -t remaining_backups < <( + sudo find "$BACKUP_PARENT" -maxdepth 1 -type d -name "${BACKUP_BASENAME}.backup.*" -printf '%T@ %p\n' 2>/dev/null \ + | sort -n \ + | awk '{sub(/^[^ ]+ /, ""); print}' + ) + for backup_dir in "${remaining_backups[@]}"; do + printf 'Removing demo backup to restore install headroom: %s\n' "$backup_dir" + sudo rm -rf -- "$backup_dir" + free_kb="$(df -Pk "$BACKUP_PARENT" | awk 'NR == 2 {print $4}')" + if ((free_kb >= required_kb)); then + break + fi + done + fi if ((free_kb < required_kb)); then echo "::error::Demo host does not have enough free space to back up $CONFIG_DIR before install." echo "Config: ${config_kb}KB, available: ${free_kb}KB, required: ${required_kb}KB" diff --git a/scripts/installtests/build_release_assets_test.go b/scripts/installtests/build_release_assets_test.go index e38036134..ec132329f 100644 --- a/scripts/installtests/build_release_assets_test.go +++ b/scripts/installtests/build_release_assets_test.go @@ -759,6 +759,7 @@ func TestUpdateDemoWorkflowUsesGovernedNetworkPath(t *testing.T) { `Demo environment points at host $REMOTE_HOSTNAME but expected $DEMO_EXPECTED_HOSTNAME.`, `Prepare demo host storage`, `KEEP_BACKUPS=2`, + `Removing demo backup to restore install headroom: %s`, `Demo host does not have enough free space to back up $CONFIG_DIR before install.`, `Verify public browser smoke`, `./scripts/run_demo_public_browser_smoke.sh`,