Rozpowszechnianie aplikacji na iOS testerom przy użyciu fastlane

Możesz rozpowszechniać kompilacje wśród testerów za pomocą fastlane, platformy open source, która automatyzuje tworzenie i udostępnianie aplikacji na iOS i Androida. Ten przewodnik jest zgodny z instrukcjami podanymi w dokumencie Fastfile. Po skonfigurowaniu narzędzia fastlane i Fastfile możesz zintegrować App Distribution z konfiguracją fastlane.

Zanim zaczniesz

  1. Dodaj Firebase do projektu aplikacji na urządzenia Apple, jeśli nie korzystasz w nim jeszcze z tej usługi.

    Jeśli nie używasz żadnych innych usług Firebase, musisz tylko utworzyć projekt i zarejestrować aplikację. Jeśli jednak zdecydujesz się w przyszłości korzystać z dodatkowych usług, wykonaj wszystkie czynności opisane na stronie, do której link podano powyżej.

  2. Otwórz stronę App Distribution w konsoli Firebase. Gdy pojawi się prośba, wybierz projekt w Firebase, a następnie wybierz aplikację za pomocą przełącznika aplikacji i kliknij Rozpocznij.

Krok 1. Konfigurowanie fastlane

  1. Zainstaluj i skonfiguruj fastlane.

  2. Aby dodać App Distribution do konfiguracji fastlane, uruchom to polecenie z katalogu głównego projektu na iOS:

    fastlane add_plugin firebase_app_distribution

    Jeśli polecenie wyświetli opcję, wybierz Option 3: RubyGems.org.

Krok 2. Uwierzytelnianie za pomocą Firebase

Zanim zaczniesz korzystać z wtyczki fastlane, musisz najpierw uwierzytelnić się w projekcie w Firebase na jeden z tych sposobów. Domyślnie wtyczka fastlane szuka danych logowania z interfejsu wiersza poleceń Firebase, jeśli nie jest używana żadna inna metoda uwierzytelniania.

Krok 3. Konfigurowanie pliku Fastfile i rozpowszechnianie aplikacji

  1. W linii ./fastlane/Fastfile dodaj blok firebase_app_distribution. Aby skonfigurować dystrybucję, użyj tych parametrów:
    Parametry firebase_app_distribution
    app

    Wymagany tylko wtedy, gdy aplikacja w Firebase nie zawiera pliku konfiguracji Firebase (GoogleService-Info.plist): identyfikator aplikacji w Firebase. Identyfikator aplikacji znajdziesz w konsoli Firebase na stronie Ustawienia ogólne.

    app: "1:1234567890:ios:0a1b2c3d4e5f67890"
    googleservice_info_plist_path

    Ścieżka do pliku GoogleService-Info.plist względem ścieżki do zarchiwizowanego produktu. Domyślnie ustawiono GoogleService-Info.plist.

    Plik ten służy do pobierania identyfikatora aplikacji w Firebase, jeśli parametr app nie jest określony.

    firebase_cli_token

    Token odświeżania, który jest wyświetlany podczas uwierzytelniania środowiska CI za pomocą interfejsu wiersza poleceń Firebase (więcej informacji znajdziesz w artykule Korzystanie z interfejsu wiersza poleceń w systemach CI).

    service_credentials_file

    Ścieżka do pliku JSON konta usługi Google. Informacje o tym, jak uwierzytelniać się przy użyciu danych logowania konta usługi, znajdziesz powyżej.

    ipa_path

    Zastępuje apk_path (wycofane). Ścieżka bezwzględna do pliku IPA, który chcesz przesłać. Jeśli nie zostanie określona, fastlane określi lokalizację pliku na podstawie ścieżki, w której plik został wygenerowany.

    release_notes
    release_notes_file

    Informacje o wersji tej kompilacji.

    Możesz podać informacje o wersji bezpośrednio:

    release_notes: "Text of release notes"

    Możesz też podać ścieżkę do pliku zwykłego tekstu:

    release_notes_file: "/path/to/release-notes.txt"
    testers
    testers_file

    Adresy e-mail testerów, których chcesz zaprosić.

    Testerów możesz podać jako listę adresów e-mail rozdzielonych przecinkami:

    testers: "ali@example.com, bri@example.com, cal@example.com"

    Możesz też podać ścieżkę do zwykłego pliku tekstowego zawierającego listę adresów e-mail rozdzielonych przecinkami:

    testers_file: "/path/to/testers.txt"
    groups
    groups_file

    grupy testerów, których chcesz zaprosić (patrz Zarządzanie testerami); Grupy są określane za pomocą aliasów grup, które możesz sprawdzić w konsoli Firebase.

    Możesz podać grupy jako listę rozdzieloną przecinkami:

    groups: "qa-team, trusted-testers"

    Możesz też podać ścieżkę do pliku tekstowego zawierającego listę nazw grup rozdzielonych przecinkami:

    groups_file: "/path/to/groups.txt"
    test_devices
    test_devices_file

    Urządzenia testowe, na których chcesz uruchomić testy agenta testowania aplikacji.

    Urządzenia testowe możesz określić jako listę specyfikacji urządzeń rozdzielonych średnikami:

    test_devices: "model=shiba,version=34,locale=en,orientation=portrait"

    Możesz też podać ścieżkę do pliku zwykłego tekstu zawierającego listę urządzeń testowych rozdzielonych średnikami:

    test_devices_file: "/path/to/test-devices.txt"
    test_username

    Nazwa użytkownika do automatycznego logowania, która będzie używana podczas testów agenta testowania aplikacji.

    test_password
    test_password_file

    Hasło do automatycznego logowania, które będzie używane podczas testów agenta testowania aplikacji.

    Możesz też podać ścieżkę do pliku zwykłego tekstu zawierającego hasło:

    test_password_file: "/path/to/test-password.txt"
    test_username_resource

    Nazwa zasobu pola nazwy użytkownika do automatycznego logowania, która będzie używana podczas testów agenta testowania aplikacji.

    test_password_resource

    Nazwa zasobu pola hasła do automatycznego logowania, które ma być używane podczas testów agenta testowania aplikacji.

    test_non_blocking

    Jeśli ustawisz tę opcję podczas uruchamiania testów agenta testowania aplikacji, polecenie rozpocznie testy, a następnie natychmiast zwróci wynik, zamiast czekać na ich zakończenie. Aby zobaczyć wyniki testu, otwórz konsolę Firebase. Jeśli ta flaga nie jest ustawiona, polecenie będzie blokowane do momentu zakończenia testów i zakończy się kodem błędu, jeśli którykolwiek z testów się nie powiedzie.

    debug

    Flaga logiczna. Możesz ustawić wartość true, aby wyświetlać szczegółowe dane wyjściowe debugowania.

Przykład:

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

Aby udostępnić kompilację testerom, uruchom ścieżkę:

fastlane <lane>

Wartość zwracana przez działanie to hasz reprezentujący przesłaną wersję. Ten skrót jest też dostępny za pomocą lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]. Więcej informacji o dostępnych polach w tym hashu znajdziesz w dokumentacji interfejsu API typu REST.

Po przesłaniu wersji wtyczka fastlane wyświetla te linki. Te linki pomagają zarządzać plikami binarnymi i zapewniają testerom oraz innym deweloperom dostęp do właściwej wersji:

  • Link do konsoli Firebase wyświetlającej pojedynczą wersję. Możesz udostępnić ten link innym deweloperom w organizacji.
  • link do wersji w interfejsie testera (wycinek internetowy na iOS), który umożliwia testerom wyświetlanie informacji o wersji i instalowanie aplikacji na urządzeniu; Aby skorzystać z linku, tester musi mieć dostęp do wersji.
  • Podpisany link, który bezpośrednio pobiera i instaluje plik binarny aplikacji (plik IPA). Link wygasa po godzinie.

Po rozpowszechnieniu kompilacja jest dostępna w panelu App Distribution w konsoli Firebase przez 150 dni. Gdy do wygaśnięcia kompilacji pozostanie 30 dni, w konsoli i na liście kompilacji testera na urządzeniu testowym pojawi się powiadomienie o wygaśnięciu.

Testerzy, którzy nie zostali wcześniej zaproszeni do testowania aplikacji, otrzymają e-maile z zaproszeniem do rozpoczęcia testów. Dotychczasowi testerzy otrzymają e-maile z powiadomieniem, że nowa kompilacja jest gotowa do testowania. Aby dowiedzieć się, jak zainstalować aplikację testową, przeczytaj artykuł Konfigurowanie konta testera. W konsoli Firebase możesz sprawdzać stan każdego testera, aby dowiedzieć się, czy zaakceptował zaproszenie i czy pobrał aplikację.

(Opcjonalnie) Aby automatycznie zwiększać numer kompilacji przy każdym tworzeniu nowej wersji w Rozpowszechnianiu aplikacji, możesz użyć działania firebase_app_distribution_get_latest_release i działania increment_build_number. Poniższy kod pokazuje, jak automatycznie zwiększać numer kompilacji:

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

Więcej informacji o tej funkcji wtyczki fastlane znajdziesz w artykule Uzyskiwanie informacji o najnowszej wersji aplikacji.

Krok 4 (opcjonalny). Zarządzanie testerami dystrybucji

Możesz dodawać i usuwać testerów z projektu lub grupy, używając pliku Fastfile lub bezpośrednio uruchamiając działania fastlane. Bezpośrednie uruchamianie działań zastępuje wartości ustawione w pliku Fastfile.

Po dodaniu testera do projektu w Firebase możesz go dodać do poszczególnych wersji. Testerzy, którzy zostali usunięci z projektu w Firebase, nie mają już dostępu do wersji w projekcie, ale przez pewien czas mogą zachować dostęp do Twoich wersji.

Jeśli masz wielu testerów, rozważ użycie grup.

Użyj konta 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

Uruchamianie działań 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"

Możesz też określić testerów za pomocą --file="/path/to/testers.txt zamiast --emails.

Zadania firebase_app_distribution_add_testers i firebase_app_distribution_remove_testers akceptują też te argumenty:

  • project_number: numer projektu w Firebase.
  • group_alias (opcjonalnie): jeśli podasz tę wartość, testerzy zostaną dodani do określonej grupy (lub z niej usunięci).
  • service_credentials_file: ścieżka do pliku danych logowania do usługi Google.
  • firebase_cli_token: token uwierzytelniania interfejsu wiersza poleceń Firebase.

Argumenty service_credentials_file i firebase_cli_token są takie same jak te używane przez działanie przesyłania.

Krok 5 (opcjonalny). Uzyskiwanie informacji o najnowszej wersji aplikacji

Możesz użyć działania firebase_app_distribution_get_latest_release, aby pobrać informacje o najnowszej wersji aplikacji w Rozpowszechnianiu aplikacji, w tym informacje o wersji aplikacji, informacje o wersji i czas utworzenia. Przykłady zastosowań obejmują automatyczne zwiększanie wersji i przenoszenie informacji o wersji z poprzedniej wersji.

Wartość zwracana przez działanie to hasz reprezentujący najnowszą wersję. Ten skrót jest też dostępny za pomocą lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE]. Więcej informacji o dostępnych polach w tym hashu znajdziesz w dokumentacji interfejsu API typu REST.

Parametry

Parametry firebase_app_distribution_get_latest_release
app

Wymagany tylko wtedy, gdy aplikacja w Firebase nie zawiera pliku konfiguracji Firebase (GoogleService-Info.plist): identyfikator aplikacji w Firebase. Identyfikator aplikacji znajdziesz w konsoli Firebase na stronie Ustawienia ogólne.

app: "1:1234567890:ios:0a1b2c3d4e5f67890"
googleservice_info_plist_path

Ścieżka do pliku GoogleService-Info.plist względem ścieżki do zarchiwizowanego produktu. Domyślnie ustawiono GoogleService-Info.plist.

Plik ten służy do pobierania identyfikatora aplikacji w Firebase, jeśli parametr app nie jest określony.

firebase_cli_token

Token odświeżania, który jest wyświetlany podczas uwierzytelniania środowiska CI za pomocą interfejsu wiersza poleceń Firebase (więcej informacji znajdziesz w artykule Korzystanie z interfejsu wiersza poleceń w systemach CI).

service_credentials_file

Ścieżka do pliku JSON konta usługi Google. Wcześniejszą dokumentację dotyczącą uwierzytelniania przy użyciu danych logowania konta usługi znajdziesz tutaj.

service_credentials_json_data

Zawartość pliku JSON konta usługi Google. Wcześniejszą dokumentację dotyczącą uwierzytelniania przy użyciu danych logowania konta usługi znajdziesz tutaj.

debug

Flaga logiczna. Możesz ustawić wartość true, aby wyświetlać szczegółowe dane wyjściowe debugowania.

Dalsze kroki