Базовое решение по настройке CI/CD на Flutter
На связи Никита Королёв, Flutter-тимлид в IBS
🫶🏻 На старте работы над мобильным приложением важно уделить внимание релизной политике и автоматизации сборок. Это освободит разработчиков от рутинных задач, связанных с релизом, и унифицирует подход команды.
В случае разработки на Flutter эта задача осложняется тем, что чаще всего разработка ведется сразу для нескольких платформ.
Хочу поделиться
базовым решением по настройке CI/CD одной из наших продуктовых команд.
Наш репозиторий находится в Gitlab, поэтому его CI будем строить через встроенный инструмент Gitlab CI.
Для этого в проект добавим файл .gitlab-ci.yml, в котором пропишем путь до образа. Можно создать образ на локальной машине, на собственном сервере или воспользоваться тем, что выкладывают другие разработчики на Docker Hub или Github:
image: ghcr.io/cirruslabs/flutter:3.22.3
Также можем указать глобальные переменные для нашего CI. Например, используемую версию Flutter SDK. Это можно сделать в параметре variables:
variables: FLUTTER_SDK: "3.24.2"
И обязательно добавить стадии (stages) для того, чтобы определять порядок выполнения задач:
stages:
- prepare
- build
- deploy
Теперь мы можем создать свою первую задачу (job). Начнем с подготовки к сборке - подтягивания зависимостей, кодогенерации и прогона тестов:
prepare:
stage: prepare
script:
- dart analyze --fatal-infos
- flutter clean
- flutter pub get
- flutter pub run build_runner build --delete-conflicting-outputs
- flutter test
Готово! Теперь в нашем пайплайне можно запустить задачу подготовки сборки на удаленном контейнере.
Завтра построим полный пайплайн для дебажной сборки и поговорим об ограничениях на запуск задач. До встречи!#IBS_flutter