name: 🚀 Деплой Nanaxe Server on: push: branches: [main] paths: - 'server/**' - '.github/workflows/deploy-server.yml' workflow_dispatch: jobs: deploy: runs-on: self-hosted name: Деплой сервера майндкарт steps: - name: 📥 Скачать код uses: actions/checkout@v4 - name: 🔄 Синхронизация файлов run: | SERVER_PATH="/opt/nanaxe-server" mkdir -p $SERVER_PATH/api mkdir -p $SERVER_PATH/nginx/html mkdir -p $SERVER_PATH/nginx/conf.d mkdir -p $SERVER_PATH/scripts # Синхронизация docker-compose cp -f server/docker-compose.yml $SERVER_PATH/docker-compose.yml # Синхронизация API rsync -av --delete server/api/ $SERVER_PATH/api/ # Синхронизация nginx cp -f server/nginx/nginx.conf $SERVER_PATH/nginx/nginx.conf cp -f server/nginx/html/* $SERVER_PATH/nginx/html/ # Синхронизация скриптов cp -f server/scripts/* $SERVER_PATH/scripts/ 2>/dev/null || true # Копировать .env если не существует if [ ! -f $SERVER_PATH/.env ]; then cp -f server/.env.example $SERVER_PATH/.env echo "⚠️ Создан .env из примера - ОБНОВИТЕ ДЛЯ PRODUCTION!" fi echo "✅ Файлы синхронизированы" - name: 🐳 Пересборка и перезапуск run: | cd /opt/nanaxe-server # Пересобрать API docker compose build nanaxe-api # Перезапустить все сервисы docker compose down docker compose up -d echo "✅ Сервисы перезапущены" - name: ✅ Проверка здоровья run: | sleep 10 # Проверка API API_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8082/health 2>/dev/null || echo "000") if [ "$API_STATUS" = "200" ]; then echo "✅ API работает" else echo "⚠️ API статус: $API_STATUS" fi # Проверка Gitea GITEA_STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:3001 2>/dev/null || echo "000") if [ "$GITEA_STATUS" = "200" ]; then echo "✅ Gitea работает" else echo "⚠️ Gitea статус: $GITEA_STATUS" fi # Список контейнеров docker compose -f /opt/nanaxe-server/docker-compose.yml ps echo "✅ ДЕПЛОЙ ЗАВЕРШЁН УСПЕШНО!"