ci
This commit is contained in:
parent
008be49c51
commit
c4d2391604
4 changed files with 249 additions and 0 deletions
203
.forgejo/workflows/FIX_FLUTTER_GIT.md
Normal file
203
.forgejo/workflows/FIX_FLUTTER_GIT.md
Normal 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, чтобы обеспечить единообразие и избежать подобных проблем в будущем.
|
||||||
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue