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

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

Шаг 1. Настройте полосу ускорения

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

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

    fastlane add_plugin firebase_app_distribution

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

Шаг 2. Аутентификация с помощью Firebase

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

Шаг 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 чтобы печатать подробный вывод отладки.

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