Вы можете распространять сборки среди тестировщиков с помощью 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 запрашивает учетные данные через CLI Firebase , если не используется другой метод аутентификации.
Аутентификация с помощью сервисной учетной записи позволяет гибко использовать плагин с вашей системой непрерывной интеграции (CI). Существует два способа предоставления учетных данных сервисной учетной записи:
- Передайте файл ключа вашей учетной записи службы в действие
firebase_app_distribution. Этот метод может оказаться удобным, если файл ключа вашей учетной записи службы уже находится в вашей среде сборки. - Установите переменную среды
GOOGLE_APPLICATION_CREDENTIALSтак, чтобы она указывала на файл ключа вашей учетной записи службы. Этот метод может быть предпочтительнее, если у вас уже настроены учетные данные приложения по умолчанию (ADC) для другой службы Google (например, Google Cloud ).
- В консоли Google Cloud выберите свой проект и создайте новую учетную запись службы.
- Добавьте роль администратора Firebase App Distribution .
- Create a private json key and move the key to a location accessible to your build environment. Be sure to keep this file somewhere safe , as it grants administrator access to App Distribution in your Firebase project.
- Пропустите этот шаг, если вы создали приложение после 20 сентября 2019 года: В консоли Google API включите Firebase App Distribution API. При появлении запроса выберите проект с тем же именем, что и ваш проект 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 (
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"
Или же вы можете указать путь к текстовому файлу, содержащему список тестовых устройств, разделенных точкой с запятой:
test_devices_file: "/path/to/test-devices.txt"
test_usernameИмя пользователя для автоматического входа в систему, используемое во время тестирования агентом App Testing .
test_password
test_password_fileПароль для автоматического входа в систему, используемый во время тестирования агентом приложения .
Или же вы можете указать путь к текстовому файлу, содержащему пароль:
test_password_file: "/path/to/test-password.txt"
test_username_resourceИмя ресурса для поля имени пользователя, используемого для автоматического входа в систему во время тестирования агентом App Testing.
test_password_resourceИмя ресурса для поля пароля, используемого для автоматического входа в систему во время тестирования агентом App Testing.
test_non_blockingЕсли этот флаг установлен при запуске тестов агента App Testing , команда запустит тесты и немедленно вернет управление, не дожидаясь их завершения. Чтобы просмотреть результаты тестов, перейдите в консоль 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>
The return value of the action is a hash representing the uploaded release. This hash is also available using lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE] . For more information about the available fields in this hash, see the REST API documentation .
После загрузки релиза плагин fastlane выводит следующие ссылки. Эти ссылки помогают управлять бинарными файлами и гарантируют, что тестировщики и другие разработчики получат правильный релиз:
- Ссылка на консоль Firebase , отображающую отдельный релиз. Вы можете поделиться этой ссылкой с другими разработчиками в вашей организации.
- A link to the release in the tester experience (iOS web clip) that lets testers view release notes and install the app onto their device. The tester needs access to the release in order to use the link.
- Подписанная ссылка, которая напрямую загружает и устанавливает исполняемый файл приложения (IPA-файл). Ссылка действительна в течение одного часа.
After you distribute your build, it is available in the App Distribution dashboard of the Firebase console for 150 days. When the build is 30 days from expiring, an expiration notice appears in the console and in the tester's list of builds on their test device.
Тестировщики, которые ранее не были приглашены к тестированию приложения, получают приглашения по электронной почте для начала работы. Существующие тестировщики получают уведомления по электронной почте о готовности новой сборки к тестированию. Чтобы узнать, как установить тестовое приложение, см. раздел «Настройка в качестве тестировщика» . Вы можете отслеживать статус каждого тестировщика, чтобы определить, принял ли он приглашение и загрузил ли приложение в консоли Firebase .
(Optional) To automatically increment your build number every time you create a new release in App Distribution, you can use the firebase_app_distribution_get_latest_release action and the increment_build_number action . The following code provides an example of how to automatically increment your 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 .
Once a tester is added to your Firebase project, you can add them to individual releases. Testers who are removed from your Firebase project no longer have access to releases in your project, but they might retain access to your releases for a window of time.
Если у вас большое количество тестировщиков, вам следует рассмотреть возможность использования групп.
Используйте 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_testersRun fastlane actions
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: Your Firebase project number. -
group_alias(необязательно): Если указано, тестировщики добавляются в указанную группу (или удаляются из нее). -
service_credentials_file: Путь к файлу учетных данных вашей службы Google. -
firebase_cli_token: Токен аутентификации для Firebase CLI.
Параметры service_credentials_file и firebase_cli_token — это те же аргументы, которые используются в действии загрузки.
Шаг 5 (необязательно). Получите информацию о последней версии вашего приложения.
You can use the firebase_app_distribution_get_latest_release action to fetch information about your app's latest release in App Distribution, including app version information, release notes, and creation time. Use cases include automatically increasing the version and carrying over the release notes from the previous release.
The return value of the action is a hash representing the latest release. This hash is also available using lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE] . For more information about the available fields in this hash, see the REST API documentation .
Параметры
| параметры firebase_app_distribution_get_latest_release | |
|---|---|
app | Required only if your app does not contain a Firebase config file ( 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 среди тестировщиков с использованием CI/CD и fastlane .