name: Deploy to Production on: push: branches: [main, master] workflow_dispatch: jobs: deploy: runs-on: self-hosted steps: - name: Checkout code uses: actions/checkout@v4 - name: Show structure run: | echo "Структура проекта:" ls -la echo "Текущая директория: $(pwd)" - name: Prepare for deployment run: | echo "Проверяем права на целевой директории..." ls -la /var/www/arseny.ahtamov.ru/ echo "Пользователь: $(whoami)" - name: Backup current site (optional) run: | # Создаем бэкап во временной директории BACKUP_DIR="/tmp/backups/arseny.ahtamov.ru/$(date +%Y%m%d-%H%M%S)" mkdir -p "$BACKUP_DIR" if [ -d "/var/www/arseny.ahtamov.ru/html" ]; then cp -r /var/www/arseny.ahtamov.ru/html/* "$BACKUP_DIR/" 2>/dev/null || true echo "Backup создан в: $BACKUP_DIR" else echo "Целевая директория не существует, бэкап пропущен" fi - name: Deploy files run: | echo "Деплой файлов в /var/www/arseny.ahtamov.ru/html/" # Создаем целевую директорию если нет mkdir -p /var/www/arseny.ahtamov.ru/html # Копируем файлы (без удаления существующих скрытых файлов) # Используем rsync для более безопасного копирования rsync -av --exclude='.*' --exclude='.git*' ./html/ /var/www/arseny.ahtamov.ru/html/ - name: Set correct permissions run: | # Меняем владельца на www-data для веб-сервера chown -R www-data:www-data /var/www/arseny.ahtamov.ru/html/ || true # Устанавливаем безопасные права find /var/www/arseny.ahtamov.ru/html/ -type d -exec chmod 755 {} \; || true find /var/www/arseny.ahtamov.ru/html/ -type f -exec chmod 644 {} \; || true # Для PHP/CGI скриптов (если есть) даем права на выполнение 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: 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/