CluPilotCloud/deploy
nexxo 35307e64cc
tests / pest (push) Successful in 6m55s Details
tests / assets (push) Successful in 22s Details
tests / release (push) Successful in 5s Details
fix(deploy): the installer could never finish, twice over
Found by running it on a fresh Debian 12 with systemd, no docker, no git and no
users — which is the first time it has ever been run anywhere.

`optional_env` ended in `[[ -n "$2" ]] && set_env …`. With an empty value the
function returns 1, and under `set -e` that ends the install, silently, with a
half-written root-owned .env. Absent is the NORMAL case for those variables —
they are the optional ones — so this killed every installation that did not
happen to supply a Hetzner token. An `if` returns 0 and does not.

Then it waited for `php -v` before migrating. PHP answers in seconds; the
entrypoint is still running `composer install` on a fresh checkout, which takes
minutes. So `artisan migrate` ran against a checkout with no vendor/ and died
on a missing autoload.php. It now waits for vendor/autoload.php, exactly as the
dependent containers already do, and says where to look if it never appears.

After both: exit 0, 59 migrations applied, the plan catalogue seeded and
consistent, the Owner account created with its role, and the portal answering
200 while the console redirects to login and the unconfigured Stripe webhook
fails closed with 400.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 17:42:26 +02:00
..
lib feat(deploy): releases you can pin to, and a version that tells the truth 2026-07-26 15:21:38 +02:00
clupilot.env.example feat(deploy): unattended install from a single answers file 2026-07-26 00:40:33 +02:00
install.sh fix(deploy): the installer could never finish, twice over 2026-07-26 17:42:26 +02:00
update.sh feat(deploy): releases you can pin to, and a version that tells the truth 2026-07-26 15:21:38 +02:00