From c4d23916049d56b84f6a19c90f6ae586126a1690 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Wed, 19 Nov 2025 23:46:22 +0300 Subject: [PATCH] ci --- .forgejo/workflows/FIX_FLUTTER_GIT.md | 203 ++++++++++++++++++++++++++ .forgejo/workflows/ci-mobile.yml | 24 +++ .forgejo/workflows/ci-web.yml | 16 ++ .forgejo/workflows/code-quality.yml | 6 + 4 files changed, 249 insertions(+) create mode 100644 .forgejo/workflows/FIX_FLUTTER_GIT.md diff --git a/.forgejo/workflows/FIX_FLUTTER_GIT.md b/.forgejo/workflows/FIX_FLUTTER_GIT.md new file mode 100644 index 0000000..b4291a6 --- /dev/null +++ b/.forgejo/workflows/FIX_FLUTTER_GIT.md @@ -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, чтобы обеспечить единообразие и избежать подобных проблем в будущем. + diff --git a/.forgejo/workflows/ci-mobile.yml b/.forgejo/workflows/ci-mobile.yml index acc340e..fbf4fbb 100644 --- a/.forgejo/workflows/ci-mobile.yml +++ b/.forgejo/workflows/ci-mobile.yml @@ -27,12 +27,20 @@ jobs: steps: - name: Checkout code 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 uses: subosito/flutter-action@v2 with: flutter-version: '3.35.5' channel: 'stable' + cache: true - name: Setup Java uses: actions/setup-java@v4 @@ -109,12 +117,20 @@ jobs: steps: - name: Checkout code 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 uses: subosito/flutter-action@v2 with: flutter-version: '3.35.5' channel: 'stable' + cache: true - name: Setup Java uses: actions/setup-java@v4 @@ -170,12 +186,20 @@ jobs: steps: - name: Checkout code 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 uses: subosito/flutter-action@v2 with: flutter-version: '3.35.5' channel: 'stable' + cache: true - name: Cache Flutter dependencies uses: actions/cache@v4 diff --git a/.forgejo/workflows/ci-web.yml b/.forgejo/workflows/ci-web.yml index eb79855..b44f9a5 100644 --- a/.forgejo/workflows/ci-web.yml +++ b/.forgejo/workflows/ci-web.yml @@ -25,12 +25,20 @@ jobs: steps: - name: Checkout code 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 uses: subosito/flutter-action@v2 with: flutter-version: '3.35.5' channel: 'stable' + cache: true - name: Cache Flutter dependencies uses: actions/cache@v4 @@ -95,12 +103,20 @@ jobs: steps: - name: Checkout code 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 uses: subosito/flutter-action@v2 with: flutter-version: '3.35.5' channel: 'stable' + cache: true - name: Cache Flutter dependencies uses: actions/cache@v4 diff --git a/.forgejo/workflows/code-quality.yml b/.forgejo/workflows/code-quality.yml index 4d7764f..2f69148 100644 --- a/.forgejo/workflows/code-quality.yml +++ b/.forgejo/workflows/code-quality.yml @@ -17,11 +17,17 @@ jobs: with: fetch-depth: 0 + - name: Install Git + run: | + sudo apt-get update + sudo apt-get install -y git + - name: Setup Flutter uses: subosito/flutter-action@v2 with: flutter-version: '3.35.5' channel: 'stable' + cache: true - name: Cache dependencies uses: actions/cache@v4