Распространяйте приложения iOS среди тестировщиков с помощью fastlane.

Вы можете распространять сборки среди тестировщиков с помощью fastlane — платформы с открытым исходным кодом, которая автоматизирует сборку и выпуск приложений для iOS и Android. Она следует простым инструкциям, определённым в файле Fastfile . После настройки fastlane и Fastfile вы можете интегрировать App Distribution с конфигурацией fastlane.

Шаг 1. Настройте Fastlane

  1. Установите и настройте fastlane .

  2. Чтобы добавить App Distribution в конфигурацию Fastlane, выполните следующую команду из корня вашего проекта iOS:

    fastlane add_plugin firebase_app_distribution

    Если команда запросит вариант, выберите Option 3: RubyGems.org .

Шаг 2. Аутентификация в Firebase

Прежде чем использовать плагин Fastlane, необходимо пройти аутентификацию в проекте Firebase одним из следующих способов. По умолчанию плагин Fastlane ищет учётные данные в Firebase CLI, если не используется другой метод аутентификации.

Шаг 3. Настройте Fastfile и распространяйте свое приложение.

  1. В дорожке ./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 ( 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. Инструкции по аутентификации с использованием учётных данных сервисного аккаунта см. в предыдущей документации.

service_credentials_json_data

Содержимое JSON-файла учётной записи сервиса Google. Подробнее об аутентификации с использованием учётных данных сервисного аккаунта см. в предыдущей документации.

debug

Логический флаг. Установите значение true , чтобы выводить подробную отладочную информацию.

Следующие шаги