name: Deploy to Production on: push: branches: [main, master] workflow_dispatch: # Ручной запуск из интерфейса jobs: deploy: runs-on: self-hosted # Используем ваш act_runner без Docker steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Show structure run: | echo "Структура проекта:" ls -la echo "Текущая директория: $(pwd)" - name: Backup current site run: | BACKUP_DIR="/var/backups/arseny-site/$(date +%Y%m%d-%H%M%S)" mkdir -p $BACKUP_DIR cp -r /var/www/arseny.ahtamov.ru/html/* $BACKUP_DIR/ 2>/dev/null || true echo "Backup создан в: $BACKUP_DIR" - name: Deploy files run: | echo "Деплой файлов в /var/www/arseny.ahtamov.ru/html/" # Удаляем старые файлы (кроме скрытых системных) find /var/www/arseny.ahtamov.ru/html/ -type f \ ! -name '.htaccess' \ ! -name '.user.ini' \ ! -name '.well-known' \ -delete 2>/dev/null || true # Копируем новые файлы cp -r ./* /var/www/arseny.ahtamov.ru/html/ # Устанавливаем правильные права chown -R www-data:www-data /var/www/arseny.ahtamov.ru/html/ find /var/www/arseny.ahtamov.ru/html/ -type d -exec chmod 755 {} \; find /var/www/arseny.ahtamov.ru/html/ -type f -exec chmod 644 {} \; # Для скриптов (если есть) даем права на выполнение find /var/www/arseny.ahtamov.ru/html/ -name "*.php" -exec chmod 755 {} \; 2>/dev/null || true find /var/www/arseny.ahtamov.ru/html/ -name "*.cgi" -exec chmod 755 {} \; 2>/dev/null || true - name: Restart nginx run: | echo "Проверяем конфигурацию nginx" nginx -t echo "Перезагружаем nginx" systemctl reload nginx || nginx -s reload echo "Проверяем статус nginx" systemctl status nginx --no-pager || true - name: Verify deployment run: | echo "Проверка деплоя:" echo "Количество файлов в целевой директории:" find /var/www/arseny.ahtamov.ru/html/ -type f | wc -l echo "Размер директории:" du -sh /var/www/arseny.ahtamov.ru/html/ echo "Последние измененные файлы:" ls -lht /var/www/arseny.ahtamov.ru/html/ | head -10