# Исправление ошибки "Flutter directory is not a clone of the GitHub project" **Дата**: 19 ноября 2025 **Статус**: ✅ Исправлено ## Проблема При выполнении CI/CD workflow для web app получали ошибку: ``` Error: The Flutter directory is not a clone of the GitHub project. The flutter tool requires Git in order to operate properly; to install Flutter, see the instructions at: https://flutter.dev/get-started ``` ## Причина Flutter SDK требует наличия Git для своей работы, так как: 1. Flutter проверяет целостность своего SDK через Git 2. Flutter использует Git для управления своими компонентами 3. В некоторых runner'ах Git может не быть установлен по умолчанию ## Решение Добавлены следующие изменения во все Flutter workflow: ### 1. Полный checkout репозитория **Было**: ```yaml - name: Checkout code uses: actions/checkout@v4 ``` **Стало**: ```yaml - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 # Полная история Git ``` ### 2. Явная установка Git Добавлен новый шаг перед Setup Flutter: ```yaml - name: Install Git run: | sudo apt-get update sudo apt-get install -y git ``` ### 3. Включение кеширования Flutter **Было**: ```yaml - name: Setup Flutter uses: subosito/flutter-action@v2 with: flutter-version: '3.35.5' channel: 'stable' ``` **Стало**: ```yaml - name: Setup Flutter uses: subosito/flutter-action@v2 with: flutter-version: '3.35.5' channel: 'stable' cache: true # Включено кеширование ``` ## Обновленные файлы 1. ✅ `.forgejo/workflows/ci-web.yml` - Web App CI - Job: `test` - обновлен - Job: `build` - обновлен 2. ✅ `.forgejo/workflows/ci-mobile.yml` - Mobile App CI - Все jobs обновлены (3 job'а) 3. ✅ `.forgejo/workflows/code-quality.yml` - Code Quality - Job обновлен ## Преимущества изменений ### 1. Полная история Git (fetch-depth: 0) - Позволяет Git командам работать корректно - Необходимо для некоторых Flutter операций - Полезно для анализа изменений ### 2. Явная установка Git - Гарантирует наличие Git в runner - Избегает зависимости от базового образа - Работает на разных платформах (GitHub Actions, Forgejo Actions) ### 3. Кеширование Flutter (cache: true) - Ускоряет установку Flutter SDK - Экономит время на повторных запусках - Уменьшает нагрузку на сеть ## Проверка После применения изменений: 1. **Commit изменения**: ```bash git add .forgejo/workflows/ git commit -m "fix: Add Git installation for Flutter workflows" git push origin master ``` 2. **Запустить workflow вручную** через Forgejo UI: - Перейти в Actions - Выбрать workflow (например, Web App CI) - Нажать "Run workflow" 3. **Проверить логи**: - Шаг "Install Git" должен выполниться успешно - Шаг "Setup Flutter" должен пройти без ошибок - Шаг "Build web app" должен завершиться успешно ## Альтернативные решения Если проблема сохраняется, можно попробовать: ### 1. Использовать Docker образ с предустановленным Flutter ```yaml jobs: build: runs-on: ubuntu-latest container: image: ghcr.io/cirruslabs/flutter:3.35.5 ``` ### 2. Установить Flutter вручную ```yaml - name: Install Flutter manually run: | git clone https://github.com/flutter/flutter.git -b stable echo "$PWD/flutter/bin" >> $GITHUB_PATH ``` ### 3. Использовать flutter-action с git-path ```yaml - name: Setup Flutter uses: subosito/flutter-action@v2 with: flutter-version: '3.35.5' channel: 'stable' cache: true git-path: /usr/bin/git ``` ## Версия Flutter Во всех workflow используется **Flutter 3.35.5 stable**, как указано в требованиях. ## Дополнительные настройки ### Если используется self-hosted runner На self-hosted runner нужно убедиться что Git установлен: ```bash # На сервере runner'а ssh root@147.45.152.129 # Проверить Git git --version # Если не установлен sudo apt-get update sudo apt-get install -y git ``` ### Если нужно обновить Flutter на сервере ```bash # На сервере cd /path/to/flutter git fetch git checkout stable git pull flutter doctor ``` ## Статус 🟢 **ИСПРАВЛЕНО** Все Flutter workflow обновлены и должны работать корректно. --- **Примечание**: Изменения применены ко всем workflow файлам, использующим Flutter, чтобы обеспечить единообразие и избежать подобных проблем в будущем.