0
Обложка: Бойлерплейт Fastlane для быстрого обновления Android-приложений

Бойлерплейт Fastlane для быстрого обновления Android-приложений

Мобильная разработка, как и любая другая разработка программного обеспечения, требует написания кода, который должен пройти через все возможные тесты. Чтобы исключить вероятность ошибок, которые, скорее всего, будут вызваны человеческим фактором, мы в Mad Devs сделали мобильный CI/CD пайплайн для автоматизации процессов проверки и доставки приложения в тестовую и производственную среду.

В частности, в этой статье вы найдете бойлер для построения CI/CD пайплайна для Android-приложений с помощью Fastlane и GitHub Actions.

Больше не нужно публиковать свои Android-приложения вручную. Это можно делать полностью автоматически на любом этапе.

Для чего нужен CI/CD пайплайн?

Прежде всего, CI/CD пайплайн позволяет повысить производительность за счет автоматизации.

С помощью CI/CD можно автоматизировать различные задачи по созданию приложения, создать артефакты (.apk, .aab) и развернуть их в производство. Что очень облегчает жизнь разработчикам, так как не надо делать это все вручную.

Что такое Fastlane?

Fastlane — это платформа с открытым исходным кодом, которая упрощает процесс сборки и выкладки мобильных Android и iOS приложений. Fastlane позволяет автоматизировать каждый аспект рабочего процесса разработки и выпуска приложений. Кроме того, она еще помогает настраивать типы сборки и варианты ваших приложений.

Помимо создания приложений, Fastlane выполняет различные утомительные задачи за вас, например, такие как генерирование скриншотов, запуск Unit/UI тестов и многое другое.

У платформы есть встроенная система плагинов позволяет легко расширить возможности. Различные инструменты/плагины позволяют создавать приложения, которые могут быть опубликованы в Google Play Store, Firebase App Distribution или Apple TestFlight.

Теперь пришло время рассмотреть наш бойлер. Зачем он нужен?

Как работает наш бойлер?

Схема компонентов:

Схема компонентов

И в этом есть следующие преимущества:

  1. Быстрый запуск CI/CD. С помощью этого бойлерплейта вы сможете легко создать CI/CD для вашего Android-приложения с помощью Fastlane.
  2. Простая адаптация к внешним инструментам CI/CD. Мы используем GitLab-ci или GitHub actions в качестве исполнителя команд Fastlane и построения процесса сборки и поставки.
  3. Уведомления. Вы можете настроить уведомления в Slack об успешных операциях или ошибках в процессе выполнения пайплайна.
  4. Нет необходимости в настройке специальной настройки машины для сборки. Мы собираем приложение внутри docker контейнера со всеми установленными зависимостями; это обеспечивает переносимость и возможность использования стандартных GitHub agents или GitLab runners.

Перед тем, как продолжить, мы рекомендуем сначала посмотреть наш видеообзор с подробным описанием:

А теперь давайте непосредственно перейдем к самому бойлеру.

Для начала:

Прежде всего, вам необходимо:

  1. Создать аккаунт в облачной платформе Google;
  2. Создать проект облака Google;
  3. Создайте проект Firebase и активируйте распространение приложений;
  4. Создайте аккаунт разработчика в Google Play.

Только после этого мы можем перейти к ключам для сборки и выпуска Android-приложений.

Подготовка ключей и переменных окружения

1. Json-файл с конфигурацией для Firebase

  • Подготовьте json-файл с настройками проекта Firebase, закодированными в base64
  • https://firebase.google.com/docs/android/setup — Шаг 3 base64 google-services.json > firebase_setting

2. Сервис аккаунт с доступом к Firebase

  • Создайте сервис аккаунт для загрузки приложения на Firebase
  • Choose your Firebase account —> Project Overview —> Project setting —> Service Account —> create service account
  • Подготовьте ключ сервис аккаунта(SA), закодированный в base64 base64 sa.json > key_firebase

3. Сервис аккаунт с доступом к Google Play

  • Создайте сервис аккаунт для загрузки приложения в Google Play
  • Добавьте ключ сервис аккаунта(SA), закодированный в base64 base64 google_play.json > google_play

4. Хранилище ключей для подписи приложения

  • Чтобы зарегистрировать приложение, необходим ключ, который можно сгенерировать с помощью команды.
  • keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
  • Добавьте хранилище ключей, закодированное в base64 base64 my-release-key.keystore > keystore
  • Обратите внимание на параметры, которые вы указываете при создании ключа. Эти параметры нужно будет добавить в переменные окружения.

Подготовим CI/CD к запуску

Если вам нужно подготовить CI/CD в GitLab, обратитесь к README.

GitHub Actions

Конечно, мы можем использовать окружения в GitHub Actions, но окружения доступны только в публичных репозиториях или корпоративных подписках.

Поэтому в этом бойлере мы не используем окружения в GitHub Actions.

Подготовим переменные окружения

GitHub —> Settings —> Secrets —> Actions —> New repository secret

GOOGLE_SERVICES_JSON

  • В поле value вставьте ваш google-services.json, закодированный в base64.

SA_JSON_KEY

  • В поле value вставьте ваш sa.key, закодированный в base64.

SA_JSON_GP_KEY

  • В поле value вставьте ваш google_play.json, закодированный в base64.

KEYSTORE

  • В поле value вставьте ваш my-release-key.keystore в кодировке base64.

ALIAS

  • Alias имя

ALIAS_PW

  • Alias пароль

KEYSTORE_PW

  • Пароль хранилища ключей

APPROVERS

  • Список одобряющих для релиза Google Play, используется только в GitHub Actions.

APP_PACKAGE_NAME

  • Имя пакета android по умолчанию, например, мы используем com.boiler.android.hello.

APP_PACKAGE_NAME_STAGING

  • Имя пакета для среды стейджинга, например, мы используем com.boiler.android.hello.staging

APP_VERSION_NAME

  • Версия приложения

FIREBASE_APP_ID_PROD

  • Идентификатор приложения для production в Firebase

FIREBASE_APP_ID_STG

  • Идентификатор приложения для staging в Firebase

SLACK_WEBHOOK_URL

  • Slack вебхук

Более подробную информацию о переменных окружения вы можете найти на Github.

Когда вы завершите всю эту подготовку, можно приступать к сборке и выпуску приложения на Firebase. Вот и все!

Заключение

Мы надеемся, что этот бойлер будет вам полезен, и он войдет в число тех инструментов, которыми вы будете пользоваться регулярно для построения CI/CD пайплана для Android-приложений.

Будем рады вашим отзывам о нашем бойлерплейте.