Шаблон для новых проектов
Все наши проекты имеют одинаковую структуру, во всех есть:
mpp-library
- модуль с общим для Android и iOS кодом- набор feature модулей с common кодом, которые подключаются к
mpp-library
- набор feature модулей с common кодом, которые подключаются к
android-app
- Android-приложениеios-app
- iOS-приложение
Помимо общей структуры, все наши проекты имеют:
- настройки на несколько окружений -
dev
,stage
,prod
(разные сервера, разные конфиги) - одинаково настроенную gradle конфигурацию с использованием наших gradle плагинов
- автоматически проверки на GitLab CI при каждом merge request
Чтобы для каждого нового проекта не создавать все это вручную, мы создали проект-шаблон, который содержит в себе стартовую архитектуру и требует лишь поменять название пакетов, после чего можно приступать к разработке проекта.
Изучите статью об устройстве нашего шаблонного проекта mobile-moko-boilerplate
.
CI/CD
Каждый новый merge request в репозитории автоматически проверяется с помощью инструмента CI/CD. Для проверки изменений создается временно состояние с влитыми изменениями и потом выполняются задачи, прописанные в файле .gitlab-ci.yml
.
Вот как выглядит этот файл в mobile-moko-boilerplate
.
При проверке merge request будет проведена проверка статическим анализатором - detekt. После этого будет выполнена компиляция kotlin multiplatform кода, с запуском тестов (если они есть то запустятся). Потом проверяется компиляция и тесты android, а потом компиляция и тесты ios приложения.
Помимо автоматических проверок в шаблоне сразу настроена логика автоматической публикации сборок в Firebase AppDistribution.
Запускается публикация путем создания тега в git, следующего формата: build/<platform>/<env>/<build number>
.
Например:
build/android/dev/1
build/ios/stage/2
Вся логика публикации и теги, на которые будет реагировать CI, прописаны в .gitlab-ci.yml
.
Fast check
В шаблонном проекте присутствует скрипт fastcheck.sh
. Он позволяет локально выполнить те же проверки, которые делает CI на merge request. Поэтому чтобы не ждать пока CI скажет что у вас есть ошибки - лучше запустить его у себя.
Выполнение скрипта занимает гораздо меньше времени, чем полная сборка проекта, которую CI
будет выполнять далее, поэтому информацию об ошибках мы получим быстрее, чем получили бы без использования скрипта.
tip
проверяйте свои изменения в коде вызывая скрипт ./fastcheck.sh
.
Новый проект
Как создать и настроить новый проект на основе шаблона mobile-moko-boilerplate
вы можете узнать из гайда, он доступен для всех сотрудников IceRock Development.
Практическое задание
- Выполните первые два пункта из CodeLab IceRock KMM onboarding #1, чтобы правильно настроить рабочее окружение
- Создайте и настройте новый проект на основе шаблона
mobile-moko-boilerplate
, этот проект вы будете дорабатывать на протяжении всего курса - Убедитесь, что проект успешно проходит проверки CI
- Выполните пункты из CodeLab IceRock KMM onboarding #1, начиная с четвертого, но уже в проекте, созданном на прошлом шаге