Бойлерплейт для подготовки CI/CD для Android приложений через Fastlane

Khalezin D
Mad Devs — блог об IT
4 min readNov 18, 2022
Бойлерплейт для подготовки CI/CD для Android приложений через Fastlane

Мобильная разработка, как и любая другая разработка программного обеспечения, требует написания кода, который должен пройти через все возможные тесты. Чтобы исключить вероятность ошибок, которые, скорее всего, будут вызваны человеческим фактором, мы в 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.

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

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

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

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

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

  • Быстрый запуск CI/CD. С помощью этого бойлерплейта вы сможете легко создать CI/CD для вашего Android-приложения с помощью Fastlane.
  • Простая адаптация к внешним инструментам CI/CD. Мы используем GitLab-ci или GitHub actions в качестве исполнителя команд Fastlane и построения процесса сборки и поставки.
  • Уведомления. Вы можете настроить уведомления в Slack об успешных операциях или ошибках в процессе выполнения пайплайна.
  • Нет необходимости в настройке специальной настройки машины для сборки. Мы собираем приложение внутри 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
  3. Подготовьте ключ сервис аккаунта(SA), закодированный в base64
    base64 sa.json > key_firebase
  4. Сервис аккаунт с доступом к Google Play
    Создайте сервис аккаунт для загрузки приложения в Google Play
    Добавьте ключ сервис аккаунта(SA), закодированный в base64
    base64 google_play.json > google_play
  5. Хранилище ключей для подписи приложения
    Чтобы зарегистрировать приложение, необходим ключ, который можно сгенерировать с помощью команды.
    keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
  6. Добавьте хранилище ключей, закодированное в 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-приложений.

И с нетерпением ждем ваших отзывов о нашем бойлерплейте.

--

--