replace set -euo pipefail with explicit error handling + stdout checkpoints

This commit is contained in:
Дмитрий Мамедов
2026-06-10 17:40:37 +03:00
parent 17ef7c7c08
commit 4492ef8da7

View File

@@ -1,6 +1,11 @@
#!/usr/bin/env bash
set -euo pipefail
trap 'echo -e "\033[0;31m✘\033[0m ERROR on line $LINENO: exit code $?" >&2; exit 1' ERR
set -u
error_handler() {
local line=$1 code=$2
echo -e "\033[0;31m✘\033[0m ERROR on line $line: exit code $code"
exit 1
}
trap 'error_handler $LINENO $?' ERR
REPO="lendry/sso-mvk"
GIT_HOST="git.lendry.ru"
@@ -264,12 +269,11 @@ for i in $(seq 1 30); do
fi
sleep 2
done
echo "DBG: after postgres loop" >&2
echo "DBG: before redis wait" >&2
echo "=== CHECKPOINT: after postgres loop ==="
info "Waiting for Redis..."
for i in $(seq 1 15); do
echo "DBG: redis attempt $i" >&2
for ((i=1; i<=15; i++)); do
if $SUDO docker compose exec -T redis redis-cli ping 2>/dev/null | grep -q PONG; then
info "Redis is ready"
break
@@ -279,41 +283,41 @@ for i in $(seq 1 15); do
fi
sleep 2
done
echo "DBG: after redis wait" >&2
echo "=== CHECKPOINT: after redis loop ==="
# ─── 6. Dependencies & Prisma ────────────────────────────────────
echo "DBG: step 6" >&2
echo "=== CHECKPOINT: step 6 ==="
step "6/8 Installing dependencies"
echo "DBG: npm ci" >&2
echo "=== CHECKPOINT: npm ci ==="
npm ci --no-audit --no-fund || error "'npm ci' failed. Check network / ${INSTALL_DIR}/package-lock.json"
echo "DBG: npm ci done" >&2
echo "=== CHECKPOINT: npm ci done ==="
info "npm dependencies installed"
echo "DBG: prisma generate" >&2
echo "=== CHECKPOINT: prisma generate ==="
npx prisma generate || error "'prisma generate' failed."
echo "DBG: prisma generate done" >&2
echo "=== CHECKPOINT: prisma generate done ==="
info "Prisma client generated"
export DATABASE_URL
echo "DBG: prisma db push" >&2
echo "=== CHECKPOINT: prisma db push ==="
npx prisma db push --skip-generate || error "'prisma db push' failed. Is PostgreSQL accessible? Check ${INSTALL_DIR}/.env DATABASE_URL"
echo "DBG: prisma db push done" >&2
echo "=== CHECKPOINT: prisma db push done ==="
info "Database schema applied"
# ─── 7. Seed ─────────────────────────────────────────────────────
echo "DBG: step 7" >&2
echo "=== CHECKPOINT: step 7 ==="
step "7/8 Seeding database"
echo "DBG: seed" >&2
echo "=== CHECKPOINT: seed ==="
npx ts-node -P tsconfig.json prisma/seed.ts || error "Seed failed."
echo "DBG: seed done" >&2
echo "=== CHECKPOINT: seed done ==="
info "Seed data created"
# ─── 8. Build & Start ────────────────────────────────────────────
echo "DBG: step 8" >&2
echo "=== CHECKPOINT: step 8 ==="
step "8/8 Building and starting SSO Service"
echo "DBG: build" >&2
echo "=== CHECKPOINT: build ==="
npm run build || error "'npm run build' failed. Check TypeScript errors above."
echo "DBG: build done" >&2
echo "=== CHECKPOINT: build done ==="
info "Application built"
# Остановить предыдущий процесс, если был