diff --git a/.forgejo/workflows/deploy.yaml b/.forgejo/workflows/deploy.yaml index 74fa654..8cf7299 100644 --- a/.forgejo/workflows/deploy.yaml +++ b/.forgejo/workflows/deploy.yaml @@ -279,7 +279,7 @@ jobs: runs-on: ubuntu-latest container: image: ghcr.io/cirruslabs/flutter:3.35.5 - options: --memory=1536m --memory-swap=2048m + options: --memory=1280m --memory-swap=1024m needs: deploy-backend if: always() && needs.deploy-backend.result == 'success' steps: @@ -294,8 +294,8 @@ jobs: apt-get install -y nodejs echo "Node.js version: $(node --version)" echo "NPM version: $(npm --version)" - # Set Node.js memory limits for dart2js compilation (512MB to fit in 1.5GB container) - echo "NODE_OPTIONS=--max-old-space-size=512" >> $GITHUB_ENV || echo "NODE_OPTIONS=--max-old-space-size=512" >> ~/.bashrc || true + # Set minimal Node.js memory limits for low-memory environment (256MB) + echo "NODE_OPTIONS=--max-old-space-size=256" >> $GITHUB_ENV || echo "NODE_OPTIONS=--max-old-space-size=256" >> ~/.bashrc || true - name: Setup SSH run: | @@ -319,10 +319,10 @@ jobs: - name: Build Web App working-directory: mnemo_cards_web_v2 env: - # Optimized Dart VM memory usage (896MB for Dart, 512MB for Node.js) - DART_VM_OPTIONS: "--old-gen-heap-size=896 --max-old-space-size=896" - # Node.js memory for dart2js compilation - NODE_OPTIONS: "--max-old-space-size=512" + # Ultra-aggressive memory optimization for low-memory environment + DART_VM_OPTIONS: "--old-gen-heap-size=512 --max-old-space-size=512 --gc-on-threshold --low-memory-mode --enable-isolate-groups --use-slow-path --no-lazy-dispatchers" + # Minimal Node.js memory + NODE_OPTIONS: "--max-old-space-size=256" # Limit parallel compilation to reduce memory pressure FLUTTER_BUILD_PARALLEL: "1" # Disable analytics to save memory @@ -382,20 +382,32 @@ jobs: echo "🔨 Собираем веб-приложение (оптимизировано для 1.5GB памяти)..." # Try multiple build strategies, starting with most memory-efficient - echo "🌐 Стратегия 1: WASM сборка с минимальными опциями..." + echo "🌐 Стратегия 1: WASM сборка с HTML renderer..." if timeout 1800 flutter build web --release \ --dart-define=API_BASE_URL=https://api.mnemo-cards.online \ --wasm \ - --no-tree-shake-icons \ - --dart2js-optimization=O1; then + --web-renderer html \ + --no-tree-shake-icons; then echo "✅ WASM сборка успешна" else - echo "⚠️ WASM не удался, стратегия 2: dart2js с максимальной оптимизацией..." + echo "⚠️ WASM не удался, стратегия 2: dart2js с HTML renderer..." + + # Try dart2js with html renderer (less memory than canvaskit) + if timeout 1800 flutter build web --release \ + --dart-define=API_BASE_URL=https://api.mnemo-cards.online \ + --web-renderer html \ + --dart2js-optimization=O1 \ + --no-tree-shake-icons \ + --no-pub \ + --suppress-analytics; then + echo "✅ dart2js с HTML renderer успешна" + else + echo "⚠️ dart2js тоже провалился, стратегия 3: profile mode..." - # Aggressive memory optimization for dart2js export DART_VM_OPTIONS="$DART_VM_OPTIONS --gc-on-threshold --low-memory-mode --enable-isolate-groups --use-slow-path" - echo "🔧 Используем агрессивные настройки памяти: $DART_VM_OPTIONS" - timeout 1800 bash -c ' + echo "🔧 Финальные настройки памяти: $DART_VM_OPTIONS" + + timeout 2400 bash -c ' # Monitor memory usage during build ( while true; do @@ -405,29 +417,29 @@ jobs: ) & MONITOR_PID=$! - # Build with memory monitoring - flutter build web --release \ + # Try profile mode instead of release - much less memory intensive + flutter build web --profile \ --dart-define=API_BASE_URL=https://api.mnemo-cards.online \ - --dart2js-optimization=O1 \ + --web-renderer html \ --no-tree-shake-icons \ - --split-debug-info=/tmp/debug-info \ --no-pub \ - --suppress-analytics + --suppress-analytics \ + --no-sound-null-safety BUILD_RESULT=$? kill $MONITOR_PID 2>/dev/null || true if [ $BUILD_RESULT -eq 0 ]; then - echo "✅ dart2js сборка успешна" + echo "✅ Profile сборка успешна (используем profile вместо release для экономии памяти)" echo "📊 Лог использования памяти:" cat /tmp/memory.log || true else - echo "❌ Flutter build failed" + echo "❌ Все стратегии сборки провалились!" echo "📊 Лог использования памяти:" cat /tmp/memory.log || true exit 1 fi - ' || (echo "❌ Flutter build failed" && exit 1) + ' || (echo "❌ Все стратегии сборки провалились!" && exit 1) fi echo "✅ Сборка завершена" @@ -519,3 +531,4 @@ jobs: echo "" echo "🎉 Проверка завершена!" ENDSSH +