v0.22.0
New Features
-
Multi-host topology mapping (#104) — Define
[hosts]and[stacks]sections instrut.confto map stacks to hosts. Env files only need secrets, not host config. -
BUILD_MODE=local(#99) — Build images directly on the target host instead of pulling from a registry. Set inservices.conf. -
strut rebuild(#103) — New command that forces a build + deploy cycle for stacks with Dockerfiles. -
strut remote:init(#95) — Bootstrap strut on a remote VPS in one command.
Bug Fixes
-
Audit format strings over SSH (#100) — Replaced Go template
{{json .}}with--format jsonto prevent mangling in SSH batch mode. -
VPS hostname detection (#102) —
is_running_on_vpsnow checks hostname match (not just IP), and--force-localflag added todeploy. -
Engine/project separation (#101) —
deploy.shnow resolves lib files fromSTRUT_HOMEinstead of the project root. -
COMPOSE_PROJECT_NAMEsupport (#96) —resolve_compose_cmdrespectsCOMPOSE_PROJECT_NAMEfrom env files for stack takeover. -
SSH
IdentitiesOnly=yes(#93) —build_ssh_optsaddsIdentitiesOnly=yeswhen a key is specified.
Install / Upgrade
curl -fsSL https://raw.githubusercontent.com/gfargo/strut/main/install.sh | bash