Вы можете распространять сборки среди тестировщиков с помощью fastlane — платформы с открытым исходным кодом, которая автоматизирует сборку и выпуск приложений для iOS и Android. Она следует простым инструкциям, определённым в файле Fastfile
. После настройки fastlane и Fastfile
вы можете интегрировать App Distribution с конфигурацией fastlane.
Шаг 1. Настройте Fastlane
Чтобы добавить App Distribution в конфигурацию Fastlane, выполните следующую команду из корня вашего проекта iOS:
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 г.: в консоли Google API включите API Firebase App Distribution . При появлении запроса выберите проект с тем же именем, что и у вашего проекта Firebase.
Укажите или найдите данные своей учетной записи службы:
- Чтобы передать ключ учетной записи службы в действие
firebase_app_distribution
вашей полосы, задайте параметрservice_credentials_file
с путем к файлу JSON вашего закрытого ключа. Чтобы найти свои учётные данные в ADC, укажите путь к JSON-файлу закрытого ключа в переменной среды
GOOGLE_APPLICATION_CREDENTIALS
. Например: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 (
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
Токен обновления, который печатается при аутентификации вашей среды CI с помощью Firebase CLI (для получения дополнительной информации см. раздел Использование CLI с системами CI ).
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;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 :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
Дополнительную информацию об этой функции плагина Fastlane см. в разделе Получение информации о последней версии вашего приложения .
Шаг 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: "1:1234567890:ios:0a1b2c3d4e5f67890" |
googleservice_info_plist_path | Путь к файлу Файл используется для получения идентификатора приложения Firebase, если параметр |
firebase_cli_token | Токен обновления, который печатается при аутентификации вашей среды CI с помощью Firebase CLI (для получения дополнительной информации см. раздел Использование CLI с системами CI ). |
service_credentials_file | Путь к JSON-файлу вашей учётной записи сервиса Google. Инструкции по аутентификации с использованием учётных данных сервисного аккаунта см. в предыдущей документации. |
service_credentials_json_data | Содержимое JSON-файла учётной записи сервиса Google. Подробнее об аутентификации с использованием учётных данных сервисного аккаунта см. в предыдущей документации. |
debug | Логический флаг. Установите значение |
Следующие шаги
Чтобы зарегистрировать больше устройств вручную или программно, см. раздел Регистрация дополнительных устройств iOS .
Изучите передовой опыт распространения приложений Apple среди тестировщиков QA с использованием CI/CD и Fastlane .