| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #!/bin/bash
- # Скрипт автоматического обновления сайта
- set -e # Останавливаемся при любой ошибке
- PROJECT_DIR="/var/www/radionica3d"
- echo "==== DEPLOY STARTING: $(date) ===="
- cd $PROJECT_DIR
- # 1. Забираем код
- echo "git pull..."
- # Force clean generated files and lockfile to avoid conflicts
- git checkout package-lock.json src/locales/translations.admin.json src/locales/translations.user.json
- git pull origin master
- # 2. Обновляем зависимости
- echo "installing dependencies..."
- npm install --legacy-peer-deps
- # 3. Синхронизируем переводы
- echo "generating translations..."
- npm run i18n:generate
- # 4. Собираем фронтенд
- echo "building frontend..."
- TIMESTAMP=$(date +%Y%m%d_%H%M%S)
- NEW_DIST_DIR="dist_$TIMESTAMP"
- # Строим сразу в новую папку через переменную окружения
- VITE_OUT_DIR=$NEW_DIST_DIR npm run build
- # Обработка перехода от папки к симлинку (на случай если 'dist' еще папка)
- if [ -d "dist" ] && [ ! -L "dist" ]; then
- echo "Found legacy dist directory, backing it up..."
- mv dist dist_legacy_backup
- fi
- # Атомарно переключаем симлинк 'dist' на новую папку
- ln -sfn $NEW_DIST_DIR dist_tmp
- mv -T dist_tmp dist
- # Удаляем старые сборки (оставляем 5 последних)
- ls -dt dist_* | grep -E '^dist_[0-9]{8}_[0-9]{6}$' | tail -n +6 | xargs -r rm -rf || true
- # 5. Обновляем бэкенд
- echo "updating backend..."
- ./backend/venv/bin/pip install -r backend/requirements.txt
- echo "running database migrations..."
- mkdir -p backups
- mysqldump --no-tablespaces -h ${DB_HOST:-localhost} -u ${DB_USER:-radionica} -p${DB_PASS:-NY9B9VLifDC9ehZ} ${DB_NAME:-radionica3d} > backups/db_pre_migration_$(date +%Y%m%d_%H%M%S).sql
- ./backend/venv/bin/python3 backend/run_migrations.py
- # 6. Перезапуск
- echo "restarting services..."
- sudo chown -R www-data:www-data $PROJECT_DIR
- sudo systemctl restart radionica-backend
- cp /var/www/radionica3d/nginx.conf /etc/nginx/sites-available/radionica3d
- sudo systemctl reload nginx
- echo "==== DEPLOY FINISHED: $(date) ===="
|