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 publikowanie aplikacji na iOS i Androida. Postępuje ona zgodnie z prostymi instrukcjami zdefiniowanymi w pliku Fastfile. Po skonfigurowaniu fastlane i pliku 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. Uwierzytelnianie w Firebase

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

Krok 3. Konfigurowanie pliku Fastfile i rozpowszechnianie aplikacji

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

    Wymagany tylko wtedy, gdy aplikacja nie zawiera pliku konfiguracyjnego Firebase (GoogleService-Info.plist): identyfikator aplikacji 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 zarchiwizowanej aplikacji. Domyślnie ustawiona na GoogleService-Info.plist.

    Jeśli parametr app nie jest określony, plik służy do pobierania identyfikatora aplikacji Firebase.

    firebase_cli_token

    Token odświeżania, który jest wyświetlany podczas uwierzytelniania środowiska CI za pomocą Firebase interfejsu wiersza poleceń (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. Informacje o uwierzytelnianiu za pomocą danych logowania konta usługi znajdziesz powyżej.

    ipa_path

    Zastępuje apk_path (przestarzały). Ś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 bezpośrednio określić informacje o wersji:

    release_notes: "Text of release notes"

    Możesz też określić ś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 określić jako listę adresów e-mail rozdzielonych przecinkami:

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

    Możesz też określić ścieżkę do pliku zwykłego tekstu 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ć (więcej informacji znajdziesz w artykule Zarządzanie testerami). Grupy są określane za pomocą aliasów grup, które można znaleźć w Firebase konsoli.

    Możesz określić grupy jako listę rozdzieloną przecinkami:

    groups: "qa-team, trusted-testers"

    Możesz też określić ś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 App Testing.

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

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

    Możesz też określić ś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 będzie używana podczas testów agenta App Testing.

    test_password
    test_password_file

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

    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 pola nazwy użytkownika do automatycznego logowania, która będzie używana podczas testów agenta App Testing.

    test_password_resource

    Nazwa zasobu pola hasła do automatycznego logowania, która będzie używana podczas testów agenta App Testing.

    test_non_blocking

    Jeśli ta opcja jest ustawiona podczas uruchamiania testów agenta App Testing , polecenie rozpocznie testy, a następnie natychmiast powróci zamiast czekać na ich zakończenie. Aby zobaczyć wyniki testów, otwórz konsolę Firebase. Jeśli ta flaga nie jest ustawiona, polecenie będzie blokować się 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ć ją na 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ścią zwracaną przez działanie jest hash reprezentujący przesłaną wersję. Ten hash 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 API REST.

Po przesłaniu wersji wtyczka fastlane wyświetla te linki: Pomagają one zarządzać plikami binarnymi i zapewniają, że testerzy oraz inni programiści mają odpowiednią wersję:

  • Link do konsoli Firebase, w której wyświetla się pojedyncza wersja. Możesz udostępnić ten link innym programistom w organizacji.
  • Link do wersji w środowisku testera (klip internetowy 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 bezpośrednio pobiera i instaluje plik binarny aplikacji (plik IPA). Link wygasa po godzinie.

Po rozpowszechnieniu kompilacji jest ona dostępna na 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 zaproszeniami. Dotychczasowi testerzy otrzymają e-maile z powiadomieniami o tym, że nowa kompilacja jest gotowa do testowania. Aby dowiedzieć się, jak zainstalować aplikację testową , przeczytaj artykuł Konfigurowanie konta testera. W konsoli Firebase możesz monitorować stan każdego testera, aby sprawdzić, czy zaakceptował zaproszenie i czy pobrał aplikację w

(Opcjonalnie) Aby automatycznie zwiększać numer kompilacji za każdym razem, gdy tworzysz nową wersję w Rozpowszechnianiu aplikacji, możesz użyć działania firebase_app_distribution_get_latest_release i działania increment_build_number. Ten 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 za pomocą pliku Fastfile albo bezpośrednio uruchamiając działania fastlane. Bezpośrednie uruchamianie działań zastępuje wartości ustawione w pliku Fastfile.

Gdy tester zostanie dodany do projektu w Firebase, możesz dodać go do poszczególnych wersji. Testerzy usunięci z projektu w Firebase nie mają już dostępu do wersji w projekcie, ale mogą zachować dostęp do wersji przez pewien czas.

Jeśli masz dużą liczbę testerów, rozważ użycie grup.

Używanie pliku 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"

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

Zadania firebase_app_distribution_add_testers i firebase_app_distribution_remove_testers akceptują też te argumenty:

  • project_name: numer projektu w Firebase.
  • group_alias (opcjonalnie): jeśli jest określony, testerzy są dodawani do określonej grupy lub z niej usuwani.
  • service_credentials_file: ścieżka do pliku danych logowania konta usługi Google.
  • firebase_cli_token: token uwierzytelniający interfejsu wiersza poleceń Firebase.

service_credentials_file i firebase_cli_token to te same argumenty, których używa działanie przesyłania.

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

Za pomocą działania firebase_app_distribution_get_latest_release możesz pobrać informacje o najnowszej wersji aplikacji w Rozpowszechnianiu aplikacji, w tym informacje o wersji aplikacji, informacje o wersji i czas utworzenia. Przykłady zastosowań to automatyczne zwiększanie wersji i przenoszenie informacji o wersji z poprzedniej wersji.

Wartością zwracaną przez działanie jest hash reprezentujący najnowszą wersję. Ten hash 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 API REST.

Parametry

Parametry firebase_app_distribution_get_latest_release
app

Wymagany tylko wtedy, gdy aplikacja nie zawiera pliku konfiguracyjnego Firebase (GoogleService-Info.plist): identyfikator aplikacji 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 zarchiwizowanej aplikacji. Domyślnie ustawiona na GoogleService-Info.plist.

Jeśli parametr app nie jest określony, plik służy do pobierania identyfikatora aplikacji Firebase.

firebase_cli_token

Token odświeżania, który jest wyświetlany podczas uwierzytelniania środowiska CI za pomocą Firebase interfejsu wiersza poleceń (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. Informacje o uwierzytelnianiu za pomocą danych logowania konta usługi znajdziesz w poprzedniej dokumentacji.

service_credentials_json_data

Zawartość pliku JSON konta usługi Google. Informacje o uwierzytelnianiu za pomocą danych logowania konta usługi znajdziesz w poprzedniej dokumentacji.

debug

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

Dalsze kroki