diff --git a/scripts/ci-deploy.sh b/scripts/ci-deploy.sh index 8a9a1c80..9bf6973b 100644 --- a/scripts/ci-deploy.sh +++ b/scripts/ci-deploy.sh @@ -92,6 +92,18 @@ for managed_name in epicnext-cms epicnext-cms-app; do docker inspect --format '{{.Name}} running={{.State.Running}} pid={{.State.Pid}} image={{.Image}}' "$managed_name" 2>/dev/null || true done [ "$deploy_dir/.env" -ef .env ] || cp "$deploy_dir/.env" .env + +# De migraties draaien op de host tegen DATABASE_URL, niet in de container. Die +# waarde staat alleen in $deploy_dir/.env, dus controleer hem hier: anders +# bouwen we eerst een image en doorlopen we de browsergate voordat `db:migrate` +# op een lege DATABASE_URL stukloopt. Dat is een halve release voor niets. +if ! grep -qs '^DATABASE_URL=' .env; then + echo "Error: DATABASE_URL ontbreekt in $deploy_dir/.env" >&2 + echo " Zet daar een DATABASE_URL (mysql://user:pass@host:3306/db) en draai opnieuw." >&2 + echo " De live release is niet aangeraakt; deze release is niet uitgerold." >&2 + exit 1 +fi + pnpm install --frozen-lockfile pnpm exec playwright install chromium diff --git a/src/lib/ci-deploy.test.ts b/src/lib/ci-deploy.test.ts index ee7112e5..0eb76b15 100644 --- a/src/lib/ci-deploy.test.ts +++ b/src/lib/ci-deploy.test.ts @@ -33,7 +33,12 @@ function simulate( const dir = mkdtempSync(join(tmpdir(), "cms-deploy-test-")); try { mkdirSync(join(dir, "production")); - writeFileSync(join(dir, "production", ".env"), 'HOTEL_NAME="Test Hotel"\n'); + // Een werkende deploymap heeft een DATABASE_URL; die gebruikt + // scripts/ci-deploy.sh voor de migraties op de host. + writeFileSync( + join(dir, "production", ".env"), + 'HOTEL_NAME="Test Hotel"\nDATABASE_URL="mysql://test:test@127.0.0.1:3306/test"\n', + ); if (previous) writeFileSync(join(dir, previous), "old\n"); if (both) writeFileSync(join(dir, "epicnext-cms-app"), "old\n"); const result = spawnSync(bash, [resolve(root, "scripts/ci-deploy.sh")], {