--- okf: "0.1" type: decision visibility: private status: active updated: 2026-08-03 links: - ../phases/backlog.md --- ## deploy-runner: instalacja na węzłach + E2E redeployu (2026-08-03) **Data**: 2026-08-03 **Źródło**: sesja `task/redeploy-fix` — recon D14/D15 + OPEN QUESTION 4 (nieopróżniona kolejka akcji). **Było**: `redeploy` nie mógł się wykonać nigdy. Executor odpalał `scripts/deploy/deploy-node.sh ` **wewnątrz swojego kontenera** — skrypt ignoruje oba argumenty i wymaga repo w `${HOME}/homelab-codex-ws` (w kontenerze `HOME=/home/homelab`, katalog nie istnieje) → `exit 1` w 18. linii. Za tym stały jeszcze trzy blokady: brak `git`, brak klienta `docker` w obrazie oraz — gdyby przeszedł — deploy **całego zestawu usług hosta executora**, nie węzła z akcji. Stąd `healthcheck_failed` przekierowany 2026-07-29 na `container_restart` i 18 pending / 0 completed. **Zrobione w repo (ta sesja)**: `scripts/deploy/deploy-service.sh` (deploy jednej usługi, wspólny z `deploy-node.sh` — ta sama inwokacja compose, więc ta sama nazwa projektu), `jobs/deploy-runner/` (systemd na hoście: rsync-pull akcji, walidacja, deploy, `action_result` z powrotem), executor dispatchuje `redeploy` do `actions/deploy//` i rozlicza je jak `container_restart` (`REDEPLOY_TIMEOUT_SECS=900`). 248 testów zielonych. **Do zrobienia (runtime, wymaga operatora)**: 1. Deploy control-plane na VPS (nowy executor + `../..:/repo:ro`). 2. Instalacja `jobs/deploy-runner/` na vps, piha, solaria — patrz README („Install (per node)"). Na VPS `VPS_EVENTS_HOST` musi zostać puste. 3. E2E na benignej usłudze na PIHA (wzorzec `test-e2e-b` z 2026-07-23), potem opróżnienie kolejki 18 pending — w tym `redeploy-vps-gokapi`. 4. SOLARIA: `group_add: "996"` dla node-agenta wciąż niewdrożony (recon 641-649) — dopóki nie wejdzie, `container_restart` tam nie działa (redeploy działa, bo nie idzie przez node-agenta). ---