Pull to refresh

Самый простой CI/CD пайплайн для flutter приложения с Codemagic. Часть 1

Level of difficultyEasy
Reading time4 min
Views1.6K

Допустим, вы являетесь разработчиком на каком-нибудь небольшом проекте. Есть только ограниченный доступ в App Store Connect и Google Play. Это такие ограничения, как подписание сборок, публикация в маркеты.

Их, конечно, можно обойти, если почитать документацию и сделать необходимые сертификаты и профайлы (в случае с iOS) или используя оригинальный jks файл и пароли к нему (в случае с Android). Для этого, как правило, нужно пнуть владельца этих аккаунтов.

Данная статья будет вам полезна, если вы увидите себя хотя бы в одном из перечисленных случаев:

  1. Процесс сборки под iOS или Android занимает слишком много времени и ресурсов вашего компьютера

  2. На проекте есть другой разработчик, который активно занят проектом и день через день вносит какие-то изменения, но только вы можете сделать сборку

  3. Ваш проджект менеджер попросил отправить очередную сборку тестировщикам, но вы не имеете доступ к своему компьютеру

Это будет подробный туториал с множеством скриншотов.


Минимальные требования, общие для 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, если его еще нет:

Это интуитивно понятные шаги, где нужно нажимать на самые яркие кнопки

Codemagic.io
Codemagic.io
Codemagic.io
Codemagic.io
Codemagic.io
Codemagic.io
Codemagic.io
Codemagic.io
Codemagic.io
Codemagic.io

В конце должен быть примерно такой вид:

Codemagic.io
Codemagic.io

Теперь приступим к настройке под платформы.


Настройка Codemagic для Android. Релизная сборка с подписью

Это, на мой взгляд, самое простое.

Для этого потребуются:

  1. jks файл для подписи релизной сборки

  2. Password и Key Alias

Настройка проекта

У меня на проектах папка android обычно выглядит примерно так:

VSCode
VSCode
  • android/app/build.gradle - здесь нужно добавить следующее условие:

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
VSCode

На всякий случай напомню, что этот файл не следует хранить в открытом доступе тем более, если проект публичный!

Настройка Codemagic

  • Раскрываем секцию Build

Codemagic.io
Codemagic.io
  • Указываем, что сборка релизная

Codemagic.io
Codemagic.io
  • Раскрываем секцию Distribution

Codemagic.io
Codemagic.io
  • Загружаем файл .jks и заполняем данными из key.properties

Codemagic.io
Codemagic.io
  • После заполнения примерно должно выглядеть так:

Codemagic.io
Codemagic.io

В целом, этого достаточно, чтобы уже собирать сборки не у себя на компьютере. После нажатия на Start new build останется только выбрать ветку, с которой нужно собрать сборку.

После успешного окончания будет такой примерно вид:

Codemagic.io
Codemagic.io

Можно вручную скачать артефакты и отправить их по месту назначения.

Настройка Codemagic для Android. Автоматическая публикация в Google Play

На этом этапе, как я уже говорил, требуется настройка доступа к Google Play Android Developer API

Сначала нужно открыть существующий проект в Google Cloud Console либо создать новый. Можно, например, использовать проект Firebase

Google Cloud Console
Google Cloud Console
  • Включить Google Play Android Developer API, это можно сделать по ссылке

Google Cloud Console
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
  • Создать и сохранить файл Private Key JSON от этого сервис аккаунта

Google Cloud Console
Google Cloud Console
Google Cloud Console
Google Cloud Console
Google Cloud Console
Google Cloud Console
  • Загрузить Private Key JSON в Codemagic

Codemagic.io
Codemagic.io

Внимание! Для следующих шагов необходимы прав администратора в Google Play Console

  • Зайти в Google Play Console в секцию App integrity и связать с Cloud Project

Google Play Console
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
Google Play Console
Google Play Console

Если все настроено верно, то после запуска сборки будет такой примерно результат:

Codemagic.io
Codemagic.io

А в Google Play будет сразу так:

Google Play Console
Google Play Console

Заключение

Сегодня детально рассмотрели, как очень просто организовать CI/CD для сборки и публикации flutter приложения в Google Play с помощью сервиса Codemagic

Кратко, что требуется разработчику для настройки под Android:

  1. Доступ к репозиторию проекта

  2. Ключ подписи релизной сборки и пароли к нему

  3. Админские права в Google Play

Что требуется сделать владельцу аккаунта в Google Play:

  • Дать админские права разработчику

В следующей статье будет про настройку CI/CD для iOS и публикацию в App Store Connect (TestFlight), а также коротко расскажу про ограничения этого сервиса и другие важные моменты.

Only registered users can participate in poll. Log in, please.
Как вы организуете CI/CD на своем проекте
25% Тоже Codemagic3
33.33% GitHub Actions4
33.33% GitLab4
8.33% BitBucket Pipelines1
16.67% Fastlane2
25% Свой вариант в комментариях3
12 users voted. 1 user abstained.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 2: ↑2 and ↓0+2
Comments1

Articles