Самый простой CI/CD пайплайн для flutter приложения с Codemagic. Часть 1
Допустим, вы являетесь разработчиком на каком-нибудь небольшом проекте. Есть только ограниченный доступ в App Store Connect и Google Play. Это такие ограничения, как подписание сборок, публикация в маркеты.
Их, конечно, можно обойти, если почитать документацию и сделать необходимые сертификаты и профайлы (в случае с iOS) или используя оригинальный jks файл и пароли к нему (в случае с Android). Для этого, как правило, нужно пнуть владельца этих аккаунтов.
Данная статья будет вам полезна, если вы увидите себя хотя бы в одном из перечисленных случаев:
Процесс сборки под iOS или Android занимает слишком много времени и ресурсов вашего компьютера
На проекте есть другой разработчик, который активно занят проектом и день через день вносит какие-то изменения, но только вы можете сделать сборку
Ваш проджект менеджер попросил отправить очередную сборку тестировщикам, но вы не имеете доступ к своему компьютеру
Это будет подробный туториал с множеством скриншотов.
Минимальные требования, общие для iOS и Android
Ключ подписи релизной сборки — нужен для того, чтобы в целом иметь возможность собрать валидную сборку, которую дальше можно отправить в сторы:
iOS: сертификат с расширением .p12 (Distribution или iOS Distribution) и пароль к нему; профайл с расширением .mobileprovision (App Store Connect Distribution)
Android: ключ подписи обычно с расширением .jks и пароли к нему
Доступ к API сторов — нужен для того, чтобы в целом организовать процесс отправки в сторы через сторонние сервисы типа Codemagic, GitHub Actions, Fastlane и другие:
App Store Connect API: IssuerID и App Store Connect API Key с расширением .p8
Google Play Android Developer API: json файл сервис аккаунта из проекта в Google Cloud Console
Регистрация в Codemagic
Начальные необходимые условия:
Есть аккаунт в GitHub, GitLab или BitBucket
Есть доступ к репозиторию проекта
Первое, нужно создать аккаунт в Codemagic, если его еще нет:
CI/CD for Android, iOS, Flutter and React Native projects
codemagic.ioЭто интуитивно понятные шаги, где нужно нажимать на самые яркие кнопки
Codemagic.io
Codemagic.io
Codemagic.io
Codemagic.io
Codemagic.io
В конце должен быть примерно такой вид:
Codemagic.io
Теперь приступим к настройке под платформы.
Настройка Codemagic для Android. Релизная сборка с подписью
Это, на мой взгляд, самое простое.
Для этого потребуются:
jks файл для подписи релизной сборки
Password и Key Alias
Настройка проекта
У меня на проектах папка android обычно выглядит примерно так:
VSCode
VSCode
Для упрощения копипаста
if (System.getenv()["CI"]) { // CI=true is exported by Codemagic
storeFile file(System.getenv()["CM_KEYSTORE_PATH"])
storePassword System.getenv()["CM_KEYSTORE_PASSWORD"]
keyAlias System.getenv()["CM_KEY_ALIAS"]
keyPassword System.getenv()["CM_KEY_PASSWORD"]
} else {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
andoid/key.properties — здесьобычно хранятся все секреты, они, как правило, нужны для доступа к ключу подписи релизной сборки. Эти данные нужны при настройке Codemagic
VSCode
На всякий случай напомню, что этот файл не следует хранить в открытом доступе тем более, если проект публичный!
Настройка Codemagic
Codemagic.io
Codemagic.io
Codemagic.io
Codemagic.io
Codemagic.io
В целом, этого достаточно, чтобы уже собирать сборки не у себя на компьютере. После нажатия на Start new build останется только выбрать ветку, с которой нужно собрать сборку.
После успешного окончания будет такой примерно вид:
Codemagic.io
Можно вручную скачать артефакты и отправить их по месту назначения.
Настройка Codemagic для Android. Автоматическая публикация в Google Play
На этом этапе, как я уже говорил, требуется настройка доступа к Google Play Android Developer API
Сначала нужно открыть существующий проект в Google Cloud Console либо создать новый. Можно, например, использовать проект Firebase
Google Cloud Console
Включить Google Play Android Developer API, это можно сделать по ссылке
Google Cloud Console
Создать сервис аккаунт (ссылка), дать ему пермишн Service Account User и сохранить на будущее email.
В этом примере это codemagic@tsitser-game.iam.gserviceaccount.com
У вас может быть, например, blabla@your-project.iam.gserviceaccount.com
Google Cloud Console
Google Cloud Console
Google Cloud Console
Google Cloud Console
Google Cloud Console
Codemagic.io
Внимание! Для следующих шагов необходимы прав администратора в Google Play Console
Google Play Console
Google Play Console
Далее зайти в секцию Users and Permissions, добавить сохраненный email сервис аккаунта из Cloud Console
В нашем примере это codemagic@tsitser-game.iam.gserviceaccount.com
Разрешения можно оставить те, которые выбраны по умолчанию (я на всякий случай даю админские права, но это не обязательно)
Google Play Console
Google Play Console
Если все настроено верно, то после запуска сборки будет такой примерно результат:
Codemagic.io
А в Google Play будет сразу так:
Google Play Console
Заключение
Сегодня детально рассмотрели, как очень просто организовать CI/CD для сборки и публикации flutter приложения в Google Play с помощью сервиса Codemagic
Кратко, что требуется разработчику для настройки под Android:
Доступ к репозиторию проекта
Ключ подписи релизной сборки и пароли к нему
Админские права в Google Play
Что требуется сделать владельцу аккаунта в Google Play:
В следующей статье будет про настройку CI/CD для iOS и публикацию в App Store Connect (TestFlight), а также коротко расскажу про ограничения этого сервиса и другие важные моменты.