CI/CD для Flutter-приложения
Вопрос
Как бы вы настроили сборку и выкладку Flutter-приложения от коммита до магазина?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Проверки: `flutter analyze`, форматирование, тесты на каждый пулреквест
Окружения через flavors и `--dart-define-from-file`
Номер сборки из CI, подпись секретами из хранилища CI
Сборка AAB и IPA, обфускация и сохранение символов
Выкладка тестировщикам (Firebase App Distribution, TestFlight), затем поэтапно в стор
Мониторинг падений после релиза
Что могут спросить следом
- Где хранить keystore и сертификаты?
- Как откатить неудачный релиз?
- Как ускорить сборку iOS в CI?
Разбор
Образцовый ответ: «На каждый пулреквест гоняю flutter analyze, проверку формата и тесты. После мержа в основную ветку CI собирает dev и stage через flavors, конфиг окружения через --dart-define-from-file. Номер сборки берётся из номера запуска CI, чтобы он всегда рос. Keystore и сертификаты лежат в секретах CI, на iOS удобно fastlane match. Release собираю с обфускацией и сохраняю символы как артефакт, загружаю в Crashlytics. Сборки уходят тестировщикам через Firebase App Distribution и TestFlight, в Google Play выкладываю поэтапным раскатом на процент пользователей. Откатиться в сторе нельзя, можно только остановить раскат и выпустить исправление, поэтому критичные функции закрываю флагами с сервера»
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.