wasrusgen1-crm/deploy.sh
2026-06-01 17:15:13 +03:00

55 lines
2.5 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Автодеплой Elena Consulting на Finnish VPS
# Запускается по cron каждые 2 мин: git pull → деплой при изменениях.
# Защита: проверка синтаксиса backend перед рестартом + Telegram-алерт при сбое.
set -e
REPO=/opt/elena-deploy
APP=/opt/elena-consulting
PY=$APP/venv/bin/python3
TG_TOKEN="8767209545:AAEVgfL-bAhg6j0fHUyKWUze4SLTfJbLklM"
ADMIN_CHAT_ID="$(grep -E '^ADMIN_CHAT_ID=' "$APP/.env" 2>/dev/null | cut -d= -f2)"
alert() {
[ -n "$ADMIN_CHAT_ID" ] || return 0
curl -s "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \
-d chat_id="$ADMIN_CHAT_ID" --data-urlencode text="$1" >/dev/null 2>&1 || true
}
cd "$REPO"
BEFORE=$(git rev-parse HEAD)
if ! git pull --quiet origin main; then
echo "[$(date)] git pull FAILED"
alert "❌ Деплой: git pull упал на сервере консалтинга."
exit 1
fi
AFTER=$(git rev-parse HEAD)
if [ "$BEFORE" != "$AFTER" ]; then
echo "[$(date)] Изменения $BEFORE$AFTER, деплой..."
# Фронтенд — статика, без рисков
cp "$REPO"/docs/cabinet.html "$REPO"/docs/crm.html "$REPO"/docs/elena_live.html "$APP"/static/ 2>/dev/null || true
if [ -f "$REPO/backend/elena_app.py" ]; then
# 1) Проверка синтаксиса ДО замены/рестарта — иначе ошибка уронит прод
if ! "$PY" -m py_compile "$REPO/backend/elena_app.py" 2>/tmp/pycompile.err; then
echo "[$(date)] SYNTAX ERROR — backend НЕ обновлён"
alert "❌ Деплой ОТМЕНЁН: синтаксис elena_app.py (${AFTER:0:8}). Прод не тронут. $(head -c 250 /tmp/pycompile.err)"
exit 1
fi
cp "$REPO/backend/elena_app.py" "$APP/elena_app.py"
mkdir -p "$APP/legal"; cp "$REPO"/backend/legal/*.md "$APP"/legal/ 2>/dev/null || true
systemctl restart elena-consulting
sleep 2
# 2) Проверка, что сервис поднялся
if systemctl is-active --quiet elena-consulting; then
echo "[$(date)] Backend перезапущен и активен"
else
echo "[$(date)] BACKEND DOWN после рестарта"
alert "🔴 СРОЧНО: backend консалтинга НЕ запустился после деплоя (${AFTER:0:8}). journalctl -u elena-consulting -n50"
exit 1
fi
fi
echo "[$(date)] Деплой завершён"
alert "✅ Деплой применён: ${AFTER:0:8}"
fi