From 83feac4a799448b3cf5b174f37756da23d2c160d Mon Sep 17 00:00:00 2001 From: sascha Date: Wed, 12 Aug 2026 13:01:47 +0200 Subject: [PATCH] Stage BW Manager files separately to avoid argv limit --- app.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/app.py b/app.py index d3abe66..9f30e11 100644 --- a/app.py +++ b/app.py @@ -1210,21 +1210,28 @@ def _deploy_bw_manager_compose(files: dict[str, str]) -> dict: backup = f"/app-config/deployment-backups/bw-manager-{timestamp}" image = "bw-manager-bw-manager" rollback_image = f"{image}:rollback-{timestamp}" - script = f"""from pathlib import Path + init_script = f"""from pathlib import Path import shutil candidate = Path({candidate!r}) if candidate.exists(): shutil.rmtree(candidate) candidate.mkdir(parents=True) -for relative, content in {files!r}.items(): - target = candidate / relative - target.parent.mkdir(parents=True, exist_ok=True) - target.write_text(content) live_env = Path({working_dir!r}) / '.env' if live_env.exists(): shutil.copy2(live_env, candidate / '.env') """ - rc, _out, err = _remote_python(script) + rc, _out, err = _remote_python(init_script) if rc != 0: - raise RuntimeError(f"BW Manager candidate staging failed: {err[-300:]}") + raise RuntimeError(f"BW Manager candidate initialization failed: {err[-300:]}") + # Stage one file per SSH call. Sending the complete repository in one + # command exceeds Linux's argv limit once app.py and templates are encoded. + for relative, content in files.items(): + file_script = f"""from pathlib import Path +target = Path({candidate!r}) / {relative!r} +target.parent.mkdir(parents=True, exist_ok=True) +target.write_text({content!r}) +""" + rc, _out, err = _remote_python(file_script) + if rc != 0: + raise RuntimeError(f"BW Manager staging failed for {relative}: {err[-300:]}") rc, _out, err = _ssh(VPS_SSH, f"cd {candidate} && docker compose config -q && docker compose build --pull", timeout=600) if rc != 0: raise RuntimeError(f"BW Manager candidate build failed: {err[-500:]}") -- 2.49.1