This commit is contained in:
Dmitry 2025-11-19 23:46:22 +03:00
parent 008be49c51
commit c4d2391604
4 changed files with 249 additions and 0 deletions

View file

@ -0,0 +1,203 @@
# Исправление ошибки "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, чтобы обеспечить единообразие и избежать подобных проблем в будущем.

View file

@ -27,12 +27,20 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Git
run: |
sudo apt-get update
sudo apt-get install -y git
- name: Setup Flutter - name: Setup Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
flutter-version: '3.35.5' flutter-version: '3.35.5'
channel: 'stable' channel: 'stable'
cache: true
- name: Setup Java - name: Setup Java
uses: actions/setup-java@v4 uses: actions/setup-java@v4
@ -109,12 +117,20 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Git
run: |
sudo apt-get update
sudo apt-get install -y git
- name: Setup Flutter - name: Setup Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
flutter-version: '3.35.5' flutter-version: '3.35.5'
channel: 'stable' channel: 'stable'
cache: true
- name: Setup Java - name: Setup Java
uses: actions/setup-java@v4 uses: actions/setup-java@v4
@ -170,12 +186,20 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Git
run: |
sudo apt-get update
sudo apt-get install -y git
- name: Setup Flutter - name: Setup Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
flutter-version: '3.35.5' flutter-version: '3.35.5'
channel: 'stable' channel: 'stable'
cache: true
- name: Cache Flutter dependencies - name: Cache Flutter dependencies
uses: actions/cache@v4 uses: actions/cache@v4

View file

@ -25,12 +25,20 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Git
run: |
sudo apt-get update
sudo apt-get install -y git
- name: Setup Flutter - name: Setup Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
flutter-version: '3.35.5' flutter-version: '3.35.5'
channel: 'stable' channel: 'stable'
cache: true
- name: Cache Flutter dependencies - name: Cache Flutter dependencies
uses: actions/cache@v4 uses: actions/cache@v4
@ -95,12 +103,20 @@ jobs:
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Git
run: |
sudo apt-get update
sudo apt-get install -y git
- name: Setup Flutter - name: Setup Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
flutter-version: '3.35.5' flutter-version: '3.35.5'
channel: 'stable' channel: 'stable'
cache: true
- name: Cache Flutter dependencies - name: Cache Flutter dependencies
uses: actions/cache@v4 uses: actions/cache@v4

View file

@ -17,11 +17,17 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Install Git
run: |
sudo apt-get update
sudo apt-get install -y git
- name: Setup Flutter - name: Setup Flutter
uses: subosito/flutter-action@v2 uses: subosito/flutter-action@v2
with: with:
flutter-version: '3.35.5' flutter-version: '3.35.5'
channel: 'stable' channel: 'stable'
cache: true
- name: Cache dependencies - name: Cache dependencies
uses: actions/cache@v4 uses: actions/cache@v4