Вы можете распространять сборки среди тестировщиков с помощью fastlane – платформы с открытым исходным кодом, которая автоматизирует сборку и выпуск приложений для iOS и Android. Это руководство составлено на основе инструкций, приведенных в Fastfile. После настройки fastlane и Fastfile вы можете интегрировать App Distribution с конфигурацией fastlane.
Подготовка
Если вы ещё этого не сделали, добавьте Firebase в проект Apple.
Если вы не используете другие продукты Firebase, вам нужно только создать проект и зарегистрировать приложение. Однако если вы решите использовать дополнительные продукты в будущем, обязательно выполните все шаги, описанные на странице по ссылке выше.
Откройте страницу App Distribution в консоли Firebase. Выберите проект Firebase, затем выберите приложение с помощью переключателя приложений и нажмите Начать.
1. Настройка fastlane
Чтобы добавить App Distribution в конфигурацию fastlane, выполните следующую команду из корневого каталога проекта iOS:
fastlane add_plugin firebase_app_distribution
Если команда предлагает вам выбрать вариант, выберите
Option 3: RubyGems.org.
Шаг 2. Аутентификация с помощью Firebase
Прежде чем использовать плагин fastlane, необходимо пройти аутентификацию в проекте Firebase одним из следующих способов. По умолчанию плагин fastlane ищет учетные данные в CLI Firebase, если не используется другой способ аутентификации.
Шаг 3. Как настроить Fastfile и распространить приложение
- На дорожку
./fastlane/Fastfileдобавьте блокfirebase_app_distribution. Для настройки распространения используйте следующие параметры:Параметры firebase_app_distribution appТребуется, только если в приложении нет файла конфигурации Firebase (
GoogleService-Info.plist). Идентификатор приложения Firebase. Идентификатор приложения можно найти в консоли Firebase на странице Общие настройки.app: "1:1234567890:ios:0a1b2c3d4e5f67890"
googleservice_info_plist_pathПуть к файлу
GoogleService-Info.plistотносительно пути к архивированному товару. По умолчанию установлено значениеGoogleService-Info.plist.Этот файл используется для получения идентификатора приложения Firebase, если параметр
appне указан.firebase_cli_tokenТокен обновления, который выводится при аутентификации среды непрерывной интеграции с помощью интерфейса командной строки Firebase. Подробнее о том, как использовать интерфейс командной строки с системами непрерывной интеграции…
service_credentials_fileПуть к JSON-файлу сервисного аккаунта Google. Инструкции по аутентификации с помощью учетных данных сервисного аккаунта приведены выше.
ipa_pathЗаменяет
apk_path(поддержка прекращена). Абсолютный путь к файлу IPA, который нужно загрузить. Если значение не указано, 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"
Вы также можете указать путь к файлу обычного текста, содержащему список тестовых устройств, разделенный точкой с запятой:
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 :ios do desc "My awesome app" lane :distribute do build_ios_app(...) # build_ios_app is a built-in fastlane action. release = firebase_app_distribution( app: "1:123456789:ios: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, в которой показан один выпуск. Этой ссылкой можно поделиться с другими разработчиками в вашей организации.
- Ссылка на выпуск в интерфейсе тестировщика (веб-клип iOS), которая позволяет тестировщикам просматривать примечания к выпуску и устанавливать приложение на свое устройство. Чтобы воспользоваться ссылкой, тестировщику нужен доступ к выпуску.
- Подписанная ссылка, которая напрямую скачивает и устанавливает двоичный файл приложения (IPA-файл). Ссылка действительна в течение часа.
После распространения сборка будет доступна на панели управления App Distribution в консоли Firebase в течение 150 дней. За 30 дней до истечения срока действия сборки в консоли и в списке сборок на тестовом устройстве появится уведомление.
Тестировщики, которые ранее не были приглашены для тестирования приложения, получат приглашения по электронной почте. Существующие тестировщики получают уведомления по электронной почте о том, что новая сборка готова к тестированию. Подробнее о том, как установить тестовое приложение… В консоли Firebase можно отслеживать статус каждого тестировщика, чтобы узнать, принял ли он приглашение и скачал ли приложение.
Чтобы номер сборки автоматически увеличивался при каждом создании нового выпуска в App Distribution, можно использовать действие firebase_app_distribution_get_latest_release и действие increment_build_number.
В следующем примере кода показано, как автоматически увеличивать номер сборки:
lane :increment_version do
latest_release = firebase_app_distribution_get_latest_release(
app: "<your Firebase app ID>"
)
increment_build_number({ build_number: latest_release[:buildVersion].to_i + 1 })
end
Подробнее о том, как получить информацию о последнем выпуске приложения…
Шаг 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
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_number– номер проекта Firebase.group_alias(необязательно). Если указать этот параметр, тестировщики будут добавлены в указанную группу или удалены из нее.service_credentials_file– путь к файлу с учетными данными сервиса Google.firebase_cli_token: токен аутентификации для Firebase CLI.
Аргументы service_credentials_file и firebase_cli_token совпадают с аргументами, которые используются для действия upload.
Шаг 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: "1:1234567890:ios:0a1b2c3d4e5f67890" |
googleservice_info_plist_path
|
Путь к файлу
Этот файл используется для получения идентификатора приложения Firebase, если параметр |
firebase_cli_token
|
Токен обновления, который выводится при аутентификации среды непрерывной интеграции с помощью интерфейса командной строки Firebase. Подробнее о том, как использовать интерфейс командной строки с системами непрерывной интеграции… |
service_credentials_file
|
Путь к JSON-файлу сервисного аккаунта Google. Инструкции по аутентификации с помощью учетных данных сервисного аккаунта приведены в предыдущей версии документации. |
service_credentials_json_data
|
Содержимое JSON-файла сервисного аккаунта Google. Инструкции по аутентификации с помощью учетных данных сервисного аккаунта приведены в предыдущей версии документации. |
debug
|
Логический флаг. Вы можете задать значение |
Дальнейшие действия
Чтобы зарегистрировать больше устройств вручную или программно, ознакомьтесь с разделом Как зарегистрировать дополнительные iOS-устройства.
Ознакомьтесь с рекомендациями по распространению приложений Apple среди тестировщиков с помощью CI/CD и fastlane.