В этом документе описывается, как распространять сборки APK среди тестировщиков с помощью fastlane , платформы с открытым исходным кодом, которая автоматизирует сборку и выпуск приложений для iOS и Android. Этот документ следует инструкциям, определенным в Fastfile
. После настройки fastlane и Fastfile
вы можете интегрировать App Distribution с конфигурацией fastlane.
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой проект Android .
Если вы не используете другие продукты Firebase, вам нужно только создать проект и зарегистрировать свое приложение. Однако, если вы решите использовать дополнительные продукты в будущем, обязательно выполните все шаги на странице, ссылка на которую приведена выше.
Шаг 1. Настройте Fastlane
Чтобы добавить App Distribution в конфигурацию Fastlane, выполните следующую команду из корня вашего проекта Android:
fastlane add_plugin firebase_app_distribution
Если команда предложит вам вариант, выберите
Option 3: RubyGems.org
.
Шаг 2. Аутентификация с помощью Firebase
Прежде чем использовать плагин fastlane, необходимо сначала пройти аутентификацию в проекте Firebase одним из следующих способов. По умолчанию плагин fastlane ищет учетные данные из Firebase CLI, если не используется никакой другой метод аутентификации.
Аутентификация с помощью учетной записи службы позволяет гибко использовать плагин с вашей системой непрерывной интеграции (CI). Существует два способа предоставления учетных данных учетной записи службы:
- Передайте файл ключа учетной записи службы в действие
firebase_app_distribution
. Этот метод может оказаться удобным, если у вас уже есть файл ключа учетной записи службы в вашей среде сборки. - Установите переменную среды
GOOGLE_APPLICATION_CREDENTIALS
так, чтобы она указывала на файл ключа учетной записи службы. Вы можете предпочесть этот метод, если у вас уже есть настроенные учетные данные приложения по умолчанию (ADC) для другой службы Google (например, Google Cloud ).
- В консоли Google Cloud выберите свой проект и создайте новую учетную запись службы.
- Добавьте роль администратора Firebase App Distribution .
- Создайте закрытый ключ json и переместите его в место, доступное для вашей среды сборки. Обязательно сохраните этот файл в безопасном месте , так как он предоставляет администратору доступ к App Distribution в вашем проекте Firebase.
- Пропустите этот шаг, если вы создали свое приложение после 20 сентября 2019 г.: в консоли API Google включите API Firebase App Distribution . При появлении запроса выберите проект с тем же именем, что и у вашего проекта Firebase.
Укажите или найдите данные вашей учетной записи службы:
- Чтобы передать ключ учетной записи службы в действие
firebase_app_distribution
вашей полосы, задайте параметрservice_credentials_file
с путем к файлу JSON вашего закрытого ключа. Чтобы найти свои учетные данные с помощью ADC, установите переменную среды
GOOGLE_APPLICATION_CREDENTIALS
на путь к файлу JSON закрытого ключа. Например:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
Дополнительную информацию об аутентификации с помощью ADC см. в разделе Предоставление учетных данных приложению.
- Чтобы передать ключ учетной записи службы в действие
Инструкции по аутентификации вашего проекта см. в разделе Вход с помощью Firebase CLI.
Шаг 3. Настройте Fastfile и распространяйте свое приложение.
- В полосе
./fastlane/Fastfile
добавьте блокfirebase_app_distribution
. Используйте следующие параметры для настройки распределения:параметры firebase_app_distribution app
Требуется : Firebase App ID вашего приложения. Вы можете найти App ID в консоли Firebase на странице General Settings .
app: "1:1234567890:android:0a1b2c3d4e5f67890"
firebase_cli_token
Токен обновления, который печатается при аутентификации среды CI с помощью Firebase CLI (для получения дополнительной информации см. раздел Использование CLI с системами CI ).
service_credentials_file
Путь к файлу json вашего аккаунта Google. Смотрите выше, как выполнить аутентификацию с использованием учетных данных аккаунта службы .
android_artifact_type
Указывает тип файла Android (APK или AAB).
android_artifact_path
Заменяет
apk_path
(устарело). Абсолютный путь к файлу APK или AAB, который вы хотите загрузить. Если не указано, fastlane определяет местоположение файла по полосе, в которой файл был сгенерирован.release_notes
release_notes_file
Примечания к выпуску этой сборки.
Вы можете либо напрямую указать примечания к выпуску:
release_notes: "Text of release notes"
Или укажите путь к текстовому файлу:
release_notes_file: "/path/to/release-notes.txt"
testers
testers_file
Адреса электронной почты тестировщиков, которых вы хотите пригласить.
Вы можете указать тестировщиков в виде списка адресов электронной почты, разделенных запятыми:
testers: "ali@example.com, bri@example.com, cal@example.com"
Или вы можете указать путь к текстовому файлу, содержащему список адресов электронной почты, разделенных запятыми:
testers_file: "/path/to/testers.txt"
groups
groups_file
Группы тестировщиков, которых вы хотите пригласить (см. Управление тестерами ). Группы указываются с помощью
групповые псевдонимы , который вы можете посмотреть в консоли Firebase .Вы можете указать группы в виде списка, разделенного запятыми:
groups: "qa-team, trusted-testers"
Или вы можете указать путь к текстовому файлу, содержащему список имен групп, разделенных запятыми:
groups_file: "/path/to/groups.txt"
test_devices
test_devices_file
Следующие типы дистрибутивов являются частью функции автоматического тестирования бета-версии .
Тестовые устройства, на которые вы хотите распространять сборки (см. Автоматизированные тесты ).
Вы можете указать тестовые устройства в виде списка тестовых устройств, разделенного точкой с запятой:
test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"
Или вы можете указать путь к текстовому файлу, содержащему список тестовых устройств, разделенных точкой с запятой:
test_devices_file: "/path/to/test-devices.txt"
test_username
Имя пользователя для автоматического входа в систему, которое будет использоваться во время автоматизированных тестов .
test_password
test_password_file
Пароль для автоматического входа в систему, который будет использоваться во время автоматизированных тестов .
Или вы можете указать путь к текстовому файлу, содержащему пароль:
test_password_file: "/path/to/test-password.txt"
test_username_resource
Имя ресурса для поля имени пользователя для автоматического входа в систему, которое будет использоваться во время автоматизированных тестов .
test_password_resource
Имя ресурса для поля пароля для автоматического входа в систему, которое будет использоваться во время автоматизированных тестов .
test_non_blocking
Запускайте автоматизированные тесты асинхронно. Посетите консоль Firebase для получения результатов автоматического теста.
debug
Логический флаг. Вы можете установить его в
true
чтобы вывести подробный отладочный вывод.
platform :android do desc "My awesome app" lane :distribute do build_android_app(...) # build_android_app is a built-in fastlane action. release = firebase_app_distribution( app: "1:123456789:android:abcd1234", testers: "tester1@company.com, tester2@company.com", release_notes: "Lots of amazing new features to test out!" ) end end
Чтобы сделать сборку доступной для тестировщиков, запустите свою линию:
fastlane <lane>
Возвращаемое значение действия — это хэш, представляющий загруженный релиз. Этот хэш также доступен с помощью lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]
. Для получения дополнительной информации о доступных полях в этом хэше см. документацию REST API .
Плагин fastlane выводит следующие ссылки после загрузки релиза. Эти ссылки помогают вам управлять бинарниками и гарантировать, что тестировщики и другие разработчики получат правильный релиз:
- Ссылка на консоль Firebase , отображающую один релиз. Вы можете поделиться этой ссылкой с другими разработчиками в вашей организации.
- Ссылка на релиз в опыте тестировщика (собственное приложение Android), которая позволяет тестировщикам просматривать заметки о релизе и устанавливать приложение на свое устройство. Тестировщику необходим доступ к релизу, чтобы использовать ссылку.
- Подписанная ссылка, которая напрямую загружает и устанавливает двоичный файл приложения (файл APK или AAB). Ссылка истекает через час.
После распространения сборки она будет доступна на панели App Distribution консоли Firebase в течение 150 дней. Когда до истечения срока действия сборки останется 30 дней, в консоли и в списке сборок тестировщика на его тестовом устройстве появится уведомление об истечении срока действия.
Тестировщики, которые ранее не были приглашены для тестирования приложения, получают приглашения по электронной почте для начала работы. Существующие тестировщики получают уведомления по электронной почте о том, что новая сборка готова к тестированию. Чтобы узнать, как установить тестовое приложение, см. руководство по настройке тестировщика . Вы можете отслеживать статус каждого тестировщика, чтобы определить, приняли ли они приглашение и загрузили ли они приложение в консоли Firebase .
(Необязательно) Чтобы автоматически увеличивать номер сборки каждый раз при создании нового релиза в App Distribution, можно использовать действие firebase_app_distribution_get_latest_release
и, например, плагин fastlane increment_version_code
. Следующий код представляет собой пример того, как автоматически увеличивать номер сборки:
lane :increment_version do
latest_release = firebase_app_distribution_get_latest_release(
app: "<your Firebase app ID>"
)
increment_version_code({ version_code: latest_release[:buildVersion].to_i + 1 })
end
Дополнительную информацию о действии firebase_app_distribution_get_latest_release
см. в разделе Получение информации о последней версии вашего приложения .
Шаг 4 (необязательно). Управление тестерами для дистрибуции
Вы можете добавлять и удалять тестировщиков из вашего проекта или группы, используя ваш файл Fastfile
или напрямую запуская действия fastlane. Прямой запуск действий переопределяет значения, установленные в вашем Fastfile
.
После добавления тестировщика в ваш проект Firebase вы можете добавлять его в отдельные релизы. Тестировщики, удаленные из вашего проекта Firebase, больше не имеют доступа к релизам в вашем проекте, но они могут сохранить доступ к вашим релизам в течение некоторого времени.
Если у вас большое количество тестировщиков, вам следует рассмотреть возможность использования групп.
Использовать Fastfile
# Use lanes to add or remove testers from a project. lane(:add_testers) do firebase_app_distribution_add_testers( emails: "foo@google.com,bar@google.com" # or file: "/path/to/testers.txt" group_alias: "qa-team" # (Optional) add testers to this group ) end lane(:remove_testers) do firebase_app_distribution_remove_testers( emails: "foo@google.com,bar@google.com" # or file: "/path/to/testers.txt" group_alias: "qa-team" # (Optional) remove testers from this group only ) end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testers
Выполнить действия по ускоренной полосе
fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"
fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_delete_group alias:"qa-team"
Вы также можете указать тестировщиков, используя --file="/path/to/testers.txt
вместо --emails
.
Задачи firebase_app_distribution_add_testers
и firebase_app_distribution_remove_testers
также принимают следующие аргументы:
-
project_name
: номер вашего проекта Firebase. -
group_alias
(необязательно): Если указано, тестировщики добавляются в указанную группу (или удаляются из нее). -
service_credentials_file
: путь к файлу учетных данных службы Google. -
firebase_cli_token
: токен аутентификации для Firebase CLI.
service_credentials_file
и firebase_cli_token
— это те же аргументы, которые используются действием загрузки.
Шаг 5 (необязательно). Получите информацию о последней версии вашего приложения
Вы можете использовать действие firebase_app_distribution_get_latest_release
для получения информации о последнем выпуске вашего приложения в App Distribution, включая информацию о версии приложения, примечания к выпуску и время создания. Варианты использования включают автоматическое увеличение версии и перенос примечаний к выпуску из предыдущего выпуска.
Возвращаемое значение действия — это хэш, представляющий последний релиз. Этот хэш также доступен с помощью lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE]
. Для получения дополнительной информации о доступных полях в этом хэше см. документацию REST API .
Параметры
параметры firebase_app_distribution_get_latest_release | |
---|---|
app | Требуется : Firebase App ID вашего приложения. Вы можете найти App ID в консоли Firebase на странице General Settings . app: "1:1234567890:android:0a1b2c3d4e5f67890" |
firebase_cli_token | Токен обновления, который печатается при аутентификации среды CI с помощью Firebase CLI (для получения дополнительной информации см. раздел Использование CLI с системами CI ). |
service_credentials_file | Путь к файлу json вашего аккаунта Google. Смотрите выше, как выполнить аутентификацию с использованием учетных данных аккаунта службы . |
debug | Логический флаг. Вы можете установить его в |
Следующие шаги
Реализуйте функцию обратной связи в приложении , чтобы тестировщикам было проще отправлять отзывы о вашем приложении (включая снимки экрана).
Узнайте, как отображать внутри приложения оповещения для тестировщиков о том, что новые сборки вашего приложения доступны для установки.
Изучите передовой опыт распространения приложений Android среди тестировщиков QA с использованием CI/CD .