Аватарка пользователя Dima Khalezin
Dima Khalezin

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

Как сделать свой бойлерплейт для непрерывной интеграции в Android: используем инструмент для автоматизации Fastlane.

1770

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

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

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

{"@context":"http://schema.org","@type":"VideoObject","name":"Boilerplate to Prepare a CI/CD for Android Application Automatically","description":"Find out how to automatically build CI/CD for Android applications with our boilerplate in this video. Stop publishing your Android apps manually and start doing this fully automated to any stage - test, beta, prod.nnAdvantages of this boilerplatenQuick start CI/CD: With this boilerplate, you can easily build the CI/CD for your android app based on Fastlane.nEasy adaptation to external CI/CD tools: We use GitLab-ci or GitHub actions as the executor of Fastlane commands and the construction of the workflow.nNotification: Pipeline operation Slack notifications, notifications about successful operations or errors in the pipeline process.nNo special build machine setup is required: We build the application inside a docker container with all the dependencies installed; this provides portability and the ability to use standard GitHub agents or GitLab runners.nnMore information about how to implement CI/CD for Android applications from scratch you will find in our Readme - https://github.com/maddevsio/android-ci-cd nn00:00 Introduction n00:07 What is CI/CD? And why do you need to use it?n00:31 Advantage of this boilerplate n01:10 Basic tools to build CI/CD for mobile applicationsn02:01 Pipeline and workflown03:57 Application Release n04:34 Documentation to prepare CI/CD for Android application from scratch nn*********************************************************** nnDevelop with Mad Devs: our open source projects and boilerplates - https://github.com/maddevsionnCareer opportunities at Mad Devs - https://maddevs.io/careers/#open-positionsnnTech articles and news about IT:nOur blog - https://maddevs.io/blog/nLinkedIn - https://www.linkedin.com/company/mad-devsnInstagram - https://www.instagram.com/maddevsionFacebook - https://www.facebook.com/maddevsllcnTwitter - https://twitter.com/MadDevsIOnn#CICD #Android #MadDevs","thumbnailUrl":"https://i.ytimg.com/vi/poSugKUtBPU/maxresdefault.jpg","uploadDate":"2022-07-21T10:57:44Z","embedUrl":"https://www.youtube.com/watch?v=poSugKUtBPU","regionsAllowed":"RU, EU"}

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

Для начала:

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

  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-приложений.

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

1770