| name |
description |
| deploy |
Deploy, redeploy, or ship homelab services to a target node. Trigger on any request containing deploy / redeploy / wdróż / zredeployuj / ship for targets control-plane, vps, piha, solaria, or chelsty-infra. |
Always invoke scripts/deploy/deploy.sh <target> [--dry-run] [--no-gate] as the sole entry point.
Never call deploy-control-plane.sh, deploy-node.sh, or deploy-local.sh directly.
Targets
| Target |
What it deploys |
control-plane |
observer, supervisor, executor, operator-ui on VPS |
vps |
all VPS GitOps services (node-agent, npm, outline, joplin, ai-cluster, …) |
piha |
PIHA services (ha-diag-agent, node-agent, redis, …) |
solaria |
SOLARIA compute services |
chelsty-infra |
CHELSTY LTE edge node (30 s SSH timeout) |
Invocation
scripts/deploy/deploy.sh <target> # full pipeline
scripts/deploy/deploy.sh <target> --dry-run # preflight + gate only
scripts/deploy/deploy.sh <target> --no-gate # emergency: bypass tests
Exit Code Handling
| Code |
Meaning |
Required action |
| 0 |
Success |
Report: target, commit hash, gate status, verify status, elapsed time |
| 1 |
Preflight failed |
Fix the upstream issue (push commits, wake node, switch to master). Never bypass. |
| 2 |
Gate failed |
Show exactly which test/build failed. Do not deploy. Fix the failure first. |
| 3 |
Execute failed |
Show full deploy output. Ask user whether to investigate or rollback. |
| 4 |
Verify failed |
Show docker ps output. Discuss rollback with the user. |
| 5 |
Sudo handoff |
Print the exact manual command from stderr verbatim and stop. User must run it. |
Rules
- Never pass
--no-gate unless the user explicitly requests emergency/bypass mode.
- Never deploy uncommitted or unpushed code — preflight enforces this; do not help circumvent it.
- Canonical branch is
master — preflight enforces this.
- For exit 5: reproduce the handoff command exactly as printed to stderr, then stop.