fix deploy #3
Some checks failed
CI pipeline / Test & Code Quality (pull_request) Has been cancelled
CI pipeline / Test & Code Quality (push) Successful in 35s

This commit is contained in:
2026-03-01 00:34:44 +03:00
parent 2ee6ea2b38
commit a5d221ecad

View File

@@ -52,9 +52,9 @@ jobs:
echo "🔍 DRY RUN — no SSH, no changes on server" echo "🔍 DRY RUN — no SSH, no changes on server"
echo "Would run on server:" echo "Would run on server:"
echo " 1. cd /home/prod/bots/telegram-helper-bot" echo " 1. cd /home/prod/bots/telegram-helper-bot"
echo " 2. CURRENT_COMMIT=\$(git rev-parse HEAD); write to .deploy_history_telegram_helper_bot.txt" echo " 2. Backup DB → database/tg-bot-database_YYYYMMDD-HHMMSS.db (удаляется при успехе)"
echo " 3. git fetch origin master && git reset --hard origin/master" echo " 3. CURRENT_COMMIT + history; git fetch origin master && git reset --hard origin/master"
echo " 4. python3 scripts/apply_migrations.py --db ... (if DB exists)" echo " 4. apply_migrations.py (бэкап БД делается в шаге 1, при успехе удаляется в конце)"
echo " 5. docker-compose -f /home/prod/docker-compose.yml config (validate)" echo " 5. docker-compose -f /home/prod/docker-compose.yml config (validate)"
echo " 6. docker-compose stop telegram-bot; build --pull telegram-bot; up -d telegram-bot" echo " 6. docker-compose stop telegram-bot; build --pull telegram-bot; up -d telegram-bot"
echo " 7. sleep 10; check container bots_telegram_bot" echo " 7. sleep 10; check container bots_telegram_bot"
@@ -79,9 +79,21 @@ jobs:
echo "🚀 Starting deployment to production..." echo "🚀 Starting deployment to production..."
DB_PATH="/home/prod/bots/telegram-helper-bot/database/tg-bot-database.db"
DB_DIR="/home/prod/bots/telegram-helper-bot/database"
BACKUP_FILE=""
sudo chown -R deploy:deploy /home/prod/bots/telegram-helper-bot || true sudo chown -R deploy:deploy /home/prod/bots/telegram-helper-bot || true
cd /home/prod/bots/telegram-helper-bot cd /home/prod/bots/telegram-helper-bot
# Бэкап БД в самом начале; при успешном деплое удалим в конце
if [ -f "$DB_PATH" ]; then
echo "💾 Creating database backup (before any changes)..."
BACKUP_NAME="tg-bot-database_$(date +%Y%m%d-%H%M%S).db"
BACKUP_FILE="${DB_DIR}/${BACKUP_NAME}"
cp "$DB_PATH" "$BACKUP_FILE" && echo "✅ Backup: $BACKUP_FILE" || { echo "❌ Backup failed!"; exit 1; }
fi
# Сохраняем информацию о коммите (до pull) — из репо telegram-helper-bot # Сохраняем информацию о коммите (до pull) — из репо telegram-helper-bot
CURRENT_COMMIT=$(git rev-parse HEAD) CURRENT_COMMIT=$(git rev-parse HEAD)
COMMIT_MESSAGE=$(git log -1 --pretty=format:"%s" || echo "Unknown") COMMIT_MESSAGE=$(git log -1 --pretty=format:"%s" || echo "Unknown")
@@ -107,10 +119,8 @@ jobs:
NEW_COMMIT=$(git rev-parse HEAD) NEW_COMMIT=$(git rev-parse HEAD)
echo "✅ Code updated: $CURRENT_COMMIT → $NEW_COMMIT" echo "✅ Code updated: $CURRENT_COMMIT → $NEW_COMMIT"
# Применяем миграции БД перед перезапуском контейнера # Применяем миграции БД
echo "🔄 Applying database migrations..." echo "🔄 Applying database migrations..."
DB_PATH="/home/prod/bots/telegram-helper-bot/database/tg-bot-database.db"
if [ -f "$DB_PATH" ]; then if [ -f "$DB_PATH" ]; then
cd /home/prod/bots/telegram-helper-bot cd /home/prod/bots/telegram-helper-bot
python3 scripts/apply_migrations.py --db "$DB_PATH" || { python3 scripts/apply_migrations.py --db "$DB_PATH" || {
@@ -155,6 +165,10 @@ jobs:
if docker ps | grep -q bots_telegram_bot; then if docker ps | grep -q bots_telegram_bot; then
echo "✅ Container is running" echo "✅ Container is running"
# Успешный деплой — удаляем бэкап (при ошибке на любом шаге бэкап остаётся для rollback)
if [ -n "${BACKUP_FILE:-}" ] && [ -f "$BACKUP_FILE" ]; then
rm -f "$BACKUP_FILE" && echo "✅ Backup removed (deploy success)"
fi
else else
echo "❌ Container failed to start!" echo "❌ Container failed to start!"
docker logs bots_telegram_bot --tail 50 || true docker logs bots_telegram_bot --tail 50 || true