5.6 KiB
Исправление ошибки "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 для своей работы, так как:
- Flutter проверяет целостность своего SDK через Git
- Flutter использует Git для управления своими компонентами
- В некоторых runner'ах Git может не быть установлен по умолчанию
Решение
Добавлены следующие изменения во все Flutter workflow:
1. Полный checkout репозитория
Было:
- name: Checkout code
uses: actions/checkout@v4
Стало:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Полная история Git
2. Явная установка Git
Добавлен новый шаг перед Setup Flutter:
- name: Install Git
run: |
sudo apt-get update
sudo apt-get install -y git
3. Включение кеширования Flutter
Было:
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.35.5'
channel: 'stable'
Стало:
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.35.5'
channel: 'stable'
cache: true # Включено кеширование
Обновленные файлы
-
✅
.forgejo/workflows/ci-web.yml- Web App CI- Job:
test- обновлен - Job:
build- обновлен
- Job:
-
✅
.forgejo/workflows/ci-mobile.yml- Mobile App CI- Все jobs обновлены (3 job'а)
-
✅
.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
- Экономит время на повторных запусках
- Уменьшает нагрузку на сеть
Проверка
После применения изменений:
-
Commit изменения:
git add .forgejo/workflows/ git commit -m "fix: Add Git installation for Flutter workflows" git push origin master -
Запустить workflow вручную через Forgejo UI:
- Перейти в Actions
- Выбрать workflow (например, Web App CI)
- Нажать "Run workflow"
-
Проверить логи:
- Шаг "Install Git" должен выполниться успешно
- Шаг "Setup Flutter" должен пройти без ошибок
- Шаг "Build web app" должен завершиться успешно
Альтернативные решения
Если проблема сохраняется, можно попробовать:
1. Использовать Docker образ с предустановленным Flutter
jobs:
build:
runs-on: ubuntu-latest
container:
image: ghcr.io/cirruslabs/flutter:3.35.5
2. Установить Flutter вручную
- 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
- 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 установлен:
# На сервере runner'а
ssh root@147.45.152.129
# Проверить Git
git --version
# Если не установлен
sudo apt-get update
sudo apt-get install -y git
Если нужно обновить Flutter на сервере
# На сервере
cd /path/to/flutter
git fetch
git checkout stable
git pull
flutter doctor
Статус
🟢 ИСПРАВЛЕНО
Все Flutter workflow обновлены и должны работать корректно.
Примечание: Изменения применены ко всем workflow файлам, использующим Flutter, чтобы обеспечить единообразие и избежать подобных проблем в будущем.