diff --git a/.forgejo/workflows/deploy.yaml b/.forgejo/workflows/deploy.yaml index de006be..7445f4c 100644 --- a/.forgejo/workflows/deploy.yaml +++ b/.forgejo/workflows/deploy.yaml @@ -384,64 +384,43 @@ jobs: echo "🔨 Собираем веб-приложение (оптимизировано для 1.5GB памяти)..." - # Try multiple build strategies, starting with most memory-efficient - echo "🌐 Стратегия 1: WASM сборка..." - if timeout 1800 flutter build web --release \ - --dart-define=API_BASE_URL=https://api.mnemo-cards.online \ - --wasm \ - --no-tree-shake-icons; then - echo "✅ WASM сборка успешна" - else - echo "⚠️ WASM не удался, стратегия 2: dart2js..." + # Use only profile mode - most memory efficient + echo "⚡ Используем profile mode (наиболее эффективный по памяти)..." - # Try dart2js (less memory than canvaskit) - if timeout 1800 flutter build web --release \ + export DART_VM_OPTIONS="$DART_VM_OPTIONS --gc-on-threshold --low-memory-mode --enable-isolate-groups --use-slow-path" + echo "🔧 Настройки памяти: $DART_VM_OPTIONS" + + timeout 2400 bash -c ' + # Monitor memory usage during build + ( + while true; do + echo "$(date +%H:%M:%S) Memory: $(free -m | grep Mem: | awk '\''{printf "%.1fGB", $3/1024}'\'')" >> /tmp/memory.log + sleep 10 + done + ) & + MONITOR_PID=$! + + # Build with profile mode - much less memory intensive than release + flutter build web --profile \ --dart-define=API_BASE_URL=https://api.mnemo-cards.online \ - --dart2js-optimization=O1 \ --no-tree-shake-icons \ --no-pub \ - --suppress-analytics; then - echo "✅ dart2js с HTML renderer успешна" + --suppress-analytics + + BUILD_RESULT=$? + kill $MONITOR_PID 2>/dev/null || true + + if [ $BUILD_RESULT -eq 0 ]; then + echo "✅ Profile сборка успешна!" + echo "📊 Лог использования памяти:" + cat /tmp/memory.log || true else - echo "⚠️ dart2js тоже провалился, стратегия 3: profile mode..." - - export DART_VM_OPTIONS="$DART_VM_OPTIONS --gc-on-threshold --low-memory-mode --enable-isolate-groups --use-slow-path" - echo "🔧 Финальные настройки памяти: $DART_VM_OPTIONS" - - timeout 2400 bash -c ' - # Monitor memory usage during build - ( - while true; do - echo "$(date +%H:%M:%S) Memory: $(free -m | grep Mem: | awk '\''{printf "%.1fGB", $3/1024}'\'')" >> /tmp/memory.log - sleep 10 - done - ) & - MONITOR_PID=$! - - # Try profile mode instead of release - much less memory intensive - flutter build web --profile \ - --dart-define=API_BASE_URL=https://api.mnemo-cards.online \ - --no-tree-shake-icons \ - --no-pub \ - --suppress-analytics \ - --no-sound-null-safety - - BUILD_RESULT=$? - kill $MONITOR_PID 2>/dev/null || true - - if [ $BUILD_RESULT -eq 0 ]; then - echo "✅ Profile сборка успешна (используем profile вместо release для экономии памяти)" - echo "📊 Лог использования памяти:" - cat /tmp/memory.log || true - else - echo "❌ Все стратегии сборки провалились!" - echo "📊 Лог использования памяти:" - cat /tmp/memory.log || true - exit 1 - fi - ' || (echo "❌ Все стратегии сборки провалились!" && exit 1) + echo "❌ Profile сборка провалилась!" + echo "📊 Лог использования памяти:" + cat /tmp/memory.log || true + exit 1 fi - fi + ' || (echo "❌ Сборка провалилась!" && exit 1) echo "✅ Сборка завершена"