Rozpowszechnianie aplikacji na iOS testerom przy użyciu fastlane

Kompilacje możesz rozpowszechniać wśród testerów za pomocą fastlane, czyli platformy open source, która automatyzuje tworzenie i publikowanie aplikacji na iOS i Androida. Wykonuje on proste instrukcje zdefiniowane w Fastfile. Po skonfigurowaniu fastlane i Fastfile możesz zintegrować App Distribution z konfiguracją fastlane.

Krok 1. Konfigurowanie fastlane

  1. Zainstaluj i skonfiguruj fastlane.

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

    fastlane add_plugin firebase_app_distribution

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

Krok 2. Uwierzytelnienie za pomocą Firebase

Aby móc korzystać z wtyczki fastlane, musisz najpierw uwierzytelnić się w projekcie Firebase w jeden z tych 2 sposobów. Domyślnie wtyczka fastlane szuka danych logowania w CLI Firebase, jeśli nie jest używana żadna inna metoda uwierzytelniania.

Uwierzytelnianie za pomocą konta usługi umożliwia elastyczne korzystanie z wtyczki w połączeniu z systemem ciągłej integracji (CI). Dane logowania do konta usługi można podać na 2 sposoby:

  • Przekaż plik klucza konta usługi do działania firebase_app_distribution. Ta metoda może być wygodna, jeśli masz już plik klucza konta usługi w środowisku kompilacji.
  • Ustaw zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS tak, aby wskazywała na plik klucza konta usługi. Możesz preferować tę metodę, jeśli masz już domyślne dane logowania do aplikacji (ADC) skonfigurowane dla innej usługi Google (np. Google Cloud).
  1. W konsoli Google Cloud wybierz swój projekt i utwórz nowe konto usługi.
  2. Dodaj rolę Firebase App Distribution Administrator.
  3. Utwórz klucz prywatny w formacie JSON i przenieś go do lokalizacji dostępnej dla środowiska kompilacji. Przechowuj ten plik w bezpiecznym miejscu, ponieważ przyznaje on dostęp administracyjny do usługi App Distribution w Twoim projekcie Firebase.
  4. Pomiń ten krok, jeśli aplikacja została utworzona po 20 września 2019 r.: w Konsoli interfejsów API Google włącz interfejs API Firebase App Distribution. Gdy pojawi się taka prośba, wybierz projekt o tej samej nazwie co Twój projekt Firebase.
  5. Podaj lub znajdź dane logowania do konta usługi:

    1. Aby przekazać klucz konta usługi do działania firebase_app_distribution w ścieżce, ustaw parametr service_credentials_file z ścieżką do pliku JSON klucza prywatnego.
    2. Aby zlokalizować swoje dane logowania w ADC, ustaw zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS na ścieżkę do pliku JSON klucza prywatnego. Przykład:

       export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
      

      Więcej informacji o uwierzytelnianiu za pomocą ADC znajdziesz w artykule Przedstawianie aplikacji danych logowania.

Instrukcje uwierzytelniania projektu znajdziesz w artykule Logowanie się za pomocą interfejsu wiersza poleceń Firebase.

Krok 3. Konfigurowanie Fastfile i rozpowszechnianie aplikacji

  1. Na pasie ./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 nie zawiera pliku konfiguracji Firebase (GoogleService-Info.plist): identyfikator aplikacji Firebase Twojej aplikacji. 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 zarchiwizowanego produktu. Domyślnie jest ono ustawione na GoogleService-Info.plist.

    Plik jest używany do uzyskiwania identyfikatora aplikacji Firebase, jeśli parametr app nie jest określony.

    firebase_cli_token

    token odświeżania wydrukowany podczas uwierzytelniania środowiska CI za pomocą interfejsu wiersza poleceń Firebase (więcej informacji znajdziesz w artykule Używanie interfejsu wiersza poleceń w systemach CI).

    service_credentials_file

    Ścieżka do pliku JSON konta usługi Google. Aby dowiedzieć się, jak uwierzytelnić się przy użyciu danych logowania konta usługi, zapoznaj się z informacjami powyżej.

    ipa_path

    Zastępuje apk_path (wycofany). Ścieżka bezwzględna do pliku IPA, który chcesz przesłać. Jeśli nie jest określony, fastlane określa lokalizację pliku na podstawie kanału, w którym został wygenerowany.

    release_notes
    release_notes_file

    Informacje o tej kompilacji.

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

    release_notes: "Text of release notes"

    Możesz też podać ścieżkę do pliku tekstowego:

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

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

    Testerów możesz wskazać 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 pliku tekstowego zawierającego listę adresów e-mail rozdzielonych przecinkami:

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

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

    Grupy możesz określić jako listę oddzieloną przecinkami:

    groups: "qa-team, trusted-testers"

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

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

    Te typy dystrybucji są częścią funkcji testowania automatycznego w wersji beta.

    Urządzenia testowe, na które chcesz rozpowszechnić kompilacje (patrz Automatyczne testy).

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

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

    Możesz też podać ścieżkę do pliku tekstowego 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 ma być używana podczas testów zautomatyzowanych.

    test_password
    test_password_file

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

    Możesz też określić ścieżkę do pliku tekstowego zawierającego hasło:

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

    Nazwa zasobu dla pola nazwy użytkownika do automatycznego logowania, które ma być używane podczas testów zautomatyzowanych.

    test_password_resource

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

    test_non_blocking

    asynchronicznie przeprowadzać testy automatyczne; Wyniki automatycznego testu znajdziesz w konsoli Firebase.

    debug

    Flaga wartości logicznej. Aby wydrukować obszerne dane debugowania, możesz ustawić tę wartość na true.

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ć wersję testerom, uruchom pas:

fastlane <lane>

Wartość zwrócona przez działanie to ciąg znaków reprezentujący przesłane wydanie. Ten ciąg znaków jest też dostępny za pomocą funkcji lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]. Więcej informacji o dostępnych polach w tym haśle znajdziesz w dokumentacji interfejsu API REST.

Po przesłaniu wersji wtyczka fastlane wygeneruje te linki. Te linki pomogą Ci zarządzać plikami binarnymi i zadbać o to, aby testerzy i inni deweloperzy mieli odpowiednią wersję:

  • link do konsoli Firebase z informacjami o pojedynczej wersji; Możesz udostępnić ten link innym programistom w Twojej organizacji.
  • link do wersji w interfejsie testów (klipy internetowe na iOS), który umożliwia testerom wyświetlanie informacji o wersji i instalowanie aplikacji na urządzeniu; Aby użyć linku, tester musi mieć dostęp do wersji.
  • Podpisany link, który umożliwia bezpośrednie pobranie i zainstalowanie binarnego pliku aplikacji (plik IPA). Link wygasa po 1 godzinie.

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

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

(Opcjonalnie) Aby automatycznie zwiększać numer kompilacji za każdym razem, gdy tworzysz nową wersję w Usługach dystrybucji aplikacji, możesz użyć akcji firebase_app_distribution_get_latest_release i akcji 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 w przypadku dystrybucji

Testerów możesz dodawać i usuwać z projektu lub grupy za pomocą pliku Fastfile lub bezpośrednio wykonując akcje fastlane. Wykonywanie działań bezpośrednio zastępuje wartości ustawione w Fastfile.

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

Jeśli masz dużą liczbę 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

Wykonywanie 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ą operatora --file="/path/to/testers.txt zamiast --emails.

Zadania firebase_app_distribution_add_testers i firebase_app_distribution_remove_testers akceptują też te argumenty:

  • project_name: numer Twojego projektu Firebase.
  • group_alias (opcjonalnie): jeśli ta opcja jest zaznaczona, testerzy zostaną dodani do określonej grupy (lub z niej usunięci).
  • service_credentials_file: ścieżka do pliku z danymi logowania do usługi Google.
  • firebase_cli_token: token uwierzytelniania dla interfejsu wiersza poleceń Firebase.

Argumenty service_credentials_filefirebase_cli_token to te same argumenty, których używa 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 Narzędziu do dystrybucji aplikacji, w tym informacje o wersji aplikacji, informacje o wersji i czas utworzenia. Przykłady zastosowań obejmują automatyczne zwiększanie wersji i przenoszenie notatek z poprzedniej wersji.

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

Parametry

Parametry firebase_app_distribution_get_latest_release
app

Wymagany tylko wtedy, gdy aplikacja nie zawiera pliku konfiguracji Firebase (GoogleService-Info.plist): identyfikator aplikacji Firebase Twojej aplikacji. 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 zarchiwizowanego produktu. Domyślnie jest ono ustawione na GoogleService-Info.plist.

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

firebase_cli_token

token odświeżania wydrukowany podczas uwierzytelniania środowiska CI za pomocą interfejsu wiersza poleceń Firebase (więcej informacji znajdziesz w artykule Używanie interfejsu wiersza poleceń w systemach CI).

service_credentials_file

Ścieżka do pliku JSON konta usługi Google. Aby dowiedzieć się, jak uwierzytelnić się przy użyciu danych logowania konta usługi, zapoznaj się z poprzednią dokumentacją.

service_credentials_json_data

Treść pliku JSON konta usługi Google. Aby dowiedzieć się, jak uwierzytelnić się przy użyciu danych logowania konta usługi, zapoznaj się z poprzednią dokumentacją.

debug

Flaga wartości logicznej. Aby wydrukować obszerne dane debugowania, możesz ustawić tę wartość na true.

Dalsze kroki