You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
e2e via tasks: --wait, depends_on graph, install-secrets fix
Three threads, all on the same install-time correctness theme:
(1) install-secrets.sh standalone-invocation fix.
When invoked via `task install`, the script reads
$MARIADB_PASSWORD from Taskfile's `dotenv:`-loaded env. When invoked
directly (CI workflow, manual operator use), the env is empty —
"${VAR:-}" != "CHANGE_ME" matches because both sides are empty
strings, the script silently exits 0, and mariadb starts on the
literal CHANGE_ME password while DATABASE_URL has the would-be-random
hex. Surfaced by PR #29's first e2e run with Doctrine reporting access
denied. Fix: source .env.mariadb at the top of the script.
(2) `compose up --wait` + `depends_on` graph.
Post-install migrations need a connectable database. Previously
`task install` fired `compose up -d` then `sleep 20` to paper over a
race; `task up` returned immediately with no wait at all. B6 wired
healthchecks on every service but only one `depends_on`
(nginx-api → os2display: service_healthy). Now:
- task up / install / update use `compose up -d --wait` — blocks until
every healthcheck passes. install drops its sleep 20 hack.
- os2display.depends_on adds mariadb (service_healthy, required: false
so the dep skips cleanly when an operator runs external db / drops
the mariadb profile) and redis (service_healthy).
- traefik.depends_on adds socket-proxy (service_healthy) — traefik
queries it for docker-label discovery; no point asking before it's
reachable.
(3) E2E workflow rewritten to drive everything through tasks.
Previously the workflow bypassed Taskfile for the install steps and
called docker compose exec ... bin/console directly, because
`task install`'s nested `task: <subtask>` invocations don't pipe
stdin reliably to interactive Symfony prompts (B23 caveat). Now:
- task env:init / env:traefik / dev:cert (was: same)
- ./scripts/install-secrets.sh (script, not a standalone task)
- task up (waits for healthchecks via above)
- task console -- --no-interaction app:update
- task console -- lexik:jwt:generate-keypair --skip-if-exists
- task console -- app:tenant:add e2e 'E2E Tenant' CI
- task console -- app:user:add admin@os2display.localhost ...
- task templates:install
- curl smoke test against the dev cert
- task -y dev:teardown
`task console -- ARGS` proxies bin/console with explicit args, which
sidesteps the chained-subtask stdin issue for tenant:add / user:add.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments