From 4492ef8da74ae4fab7f09ce61249843515e385f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9=20=D0=9C=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D0=B4=D0=BE=D0=B2?= Date: Wed, 10 Jun 2026 17:40:37 +0300 Subject: [PATCH] replace set -euo pipefail with explicit error handling + stdout checkpoints --- install.sh | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/install.sh b/install.sh index 3013e45..0e487be 100644 --- a/install.sh +++ b/install.sh @@ -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" # Остановить предыдущий процесс, если был