Distribuer des applications iOS à des testeurs à l'aide de Fastlane

Vous pouvez distribuer des versions aux testeurs à l'aide de fastlane, une plate-forme Open Source qui automatise la création et la publication d'applications iOS et Android. Il suit des instructions simples définies dans un Fastfile. Une fois que vous avez configuré fastlane et votre Fastfile, vous pouvez intégrer App Distribution à votre configuration fastlane.

Étape 1 : Configurer fastlane

  1. Installez et configurez fastlane.

  2. Pour ajouter App Distribution à votre configuration fastlane, exécutez la commande suivante à partir de la racine de votre projet iOS :

    fastlane add_plugin firebase_app_distribution

    Si la commande vous invite à choisir une option, sélectionnez Option 3: RubyGems.org.

Étape 2 : S'authentifier avec Firebase

Avant de pouvoir utiliser le plug-in fastlane, vous devez d'abord vous authentifier auprès de votre projet Firebase de l'une des manières suivantes. Par défaut, le plug-in fastlane recherche les identifiants de la CLI Firebase si aucune autre méthode d'authentification n'est utilisée.

Étape 3 : Configurer votre Fastfile et distribuer votre application

  1. Dans une voie ./fastlane/Fastfile, ajoutez un bloc firebase_app_distribution. Utilisez les paramètres suivants pour configurer la distribution :
    Paramètres firebase_app_distribution
    app

    Obligatoire uniquement si votre application ne contient pas de fichier de configuration Firebase (GoogleService-Info.plist) : ID d'application Firebase de votre application. Vous trouverez l'ID de l'application dans la console Firebase, sur la page Paramètres généraux.

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

    Chemin d'accès à votre fichier GoogleService-Info.plist, par rapport au chemin d'accès au produit archivé. Défini sur GoogleService-Info.plist par défaut.

    Le fichier permet d'obtenir l'ID d'application Firebase de votre application si le paramètre app n'est pas spécifié.

    firebase_cli_token

    Jeton d'actualisation imprimé lorsque vous authentifiez votre environnement d'intégration continue avec la CLI Firebase (pour en savoir plus, consultez Utiliser la CLI avec les systèmes d'intégration continue).

    service_credentials_file

    Chemin d'accès au fichier JSON de votre compte de service Google. Consultez ci-dessus pour savoir comment s'authentifier à l'aide des identifiants d'un compte de service.

    ipa_path

    Remplace apk_path (obsolète). Chemin d'accès absolu au fichier IPA que vous souhaitez importer. Si elle n'est pas spécifiée, fastlane détermine l'emplacement du fichier à partir de la voie dans laquelle il a été généré.

    release_notes
    release_notes_file

    Notes de version pour ce build.

    Vous pouvez spécifier directement les notes de version :

    release_notes: "Text of release notes"

    Vous pouvez également spécifier le chemin d'accès à un fichier en texte brut :

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

    Adresses e-mail des testeurs que vous souhaitez inviter.

    Vous pouvez spécifier les testeurs sous forme de liste d'adresses e-mail séparées par une virgule :

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

    Vous pouvez également spécifier le chemin d'accès à un fichier texte brut contenant une liste d'adresses e-mail séparées par une virgule :

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

    Les groupes de testeurs que vous souhaitez inviter (consultez Gérer les testeurs). Les groupes sont spécifiés à l'aide d'alias de groupe, que vous pouvez rechercher dans la console Firebase.

    Vous pouvez spécifier les groupes sous forme de liste séparée par une virgule :

    groups: "qa-team, trusted-testers"

    Vous pouvez également spécifier le chemin d'accès à un fichier texte brut contenant une liste de noms de groupes séparés par une virgule :

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

    Les types de distribution suivants font partie de la fonctionnalité bêta du testeur automatique.

    Les appareils de test sur lesquels vous souhaitez distribuer les builds (consultez Tests automatisés).

    Vous pouvez spécifier les appareils de test sous forme de liste d'appareils de test séparés par un point-virgule :

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

    Vous pouvez également spécifier le chemin d'accès à un fichier texte brut contenant une liste de dispositifs de test séparés par des points-virgules :

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

    Nom d'utilisateur pour la connexion automatique à utiliser lors des tests automatisés.

    test_password
    test_password_file

    Mot de passe pour la connexion automatique à utiliser lors des tests automatisés.

    Vous pouvez également spécifier le chemin d'accès à un fichier en texte brut contenant un mot de passe :

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

    Nom de ressource du champ de nom d'utilisateur pour la connexion automatique à utiliser lors des tests automatisés.

    test_password_resource

    Nom de ressource du champ de mot de passe pour la connexion automatique à utiliser lors des tests automatisés.

    test_non_blocking

    Exécutez des tests automatisés de manière asynchrone. Consultez la console Firebase pour obtenir les résultats des tests automatiques.

    debug

    Option booléenne. Vous pouvez définir cette valeur sur true pour imprimer des résultats de débogage détaillés.

Exemple :

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

Pour rendre le build disponible pour les testeurs, exécutez votre lane :

fastlane <lane>

La valeur renvoyée de l'action est un hachage représentant la version importée. Ce hachage est également disponible à l'aide de lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]. Pour en savoir plus sur les champs disponibles dans ce hachage, consultez la documentation de l'API REST.

Le plug-in fastlane génère les liens suivants après l'importation de la version. Ces liens vous aident à gérer les binaires et à vous assurer que les testeurs et les autres développeurs disposent de la version appropriée :

  • Lien vers la console Firebase affichant une seule version. Vous pouvez partager ce lien avec d'autres développeurs de votre organisation.
  • Un lien vers la version dans l'expérience de testeur (web clip iOS) qui permet aux testeurs de consulter les notes de version et d'installer l'application sur leur appareil. Le testeur doit avoir accès à la version pour pouvoir utiliser le lien.
  • Un lien signé qui télécharge et installe directement le fichier binaire de l'application (fichier IPA). Le lien expire au bout d'une heure.

Une fois votre build distribué, il est disponible dans le tableau de bord App Distribution de la console Firebase pendant 150 jours. Lorsque la compilation arrive à 30 jours de son expiration, un avis d'expiration s'affiche dans la console et dans la liste des compilations du testeur sur son appareil de test.

Les testeurs qui n'ont pas été invités précédemment à tester l'application reçoivent des invitations par e-mail pour commencer. Les testeurs existants reçoivent des notifications par e-mail les informant qu'une nouvelle version est prête à être testée. Pour savoir comment installer l'application de test, consultez Se préparer en tant que testeur. Vous pouvez surveiller l'état de chaque testeur pour déterminer s'il a accepté l'invitation et s'il a téléchargé l'application dans la console Firebase.

(Facultatif) Pour incrémenter automatiquement votre numéro de version chaque fois que vous créez une version dans App Distribution, vous pouvez utiliser l'action firebase_app_distribution_get_latest_release et l'action increment_build_number. Le code suivant montre comment incrémenter automatiquement votre numéro de version :

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

Pour en savoir plus sur cette fonctionnalité du plug-in fastlane, consultez Obtenir des informations sur la dernière version de votre application.

Étape 4 (facultatif) : Gérer les testeurs pour la distribution

Vous pouvez ajouter et supprimer des testeurs de votre projet ou groupe à l'aide de votre fichier Fastfile ou en exécutant directement des actions fastlane. L'exécution d'actions directement remplace les valeurs définies dans votre Fastfile.

Une fois qu'un testeur a été ajouté à votre projet Firebase, vous pouvez l'ajouter à des versions individuelles. Les testeurs supprimés de votre projet Firebase n'ont plus accès aux versions de votre projet, mais ils peuvent conserver l'accès à vos versions pendant un certain temps.

Si vous avez un grand nombre de testeurs, envisagez d'utiliser des groupes.

Utiliser "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

Exécuter des actions 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"

Vous pouvez également spécifier des testeurs à l'aide de --file="/path/to/testers.txt au lieu de --emails.

Les tâches firebase_app_distribution_add_testers et firebase_app_distribution_remove_testers acceptent également les arguments suivants :

  • project_name : numéro de votre projet Firebase.
  • group_alias (facultatif) : si cette option est spécifiée, les testeurs sont ajoutés au groupe spécifié (ou en sont supprimés).
  • service_credentials_file : chemin d'accès au fichier d'identifiants de votre service Google.
  • firebase_cli_token : jeton d'authentification pour la CLI Firebase.

service_credentials_file et firebase_cli_token sont les mêmes arguments que ceux utilisés par l'action d'importation.

Étape 5 (facultatif) : Obtenir des informations sur la dernière version de votre application

Vous pouvez utiliser l'action firebase_app_distribution_get_latest_release pour récupérer des informations sur la dernière version de votre application dans App Distribution, y compris des informations sur la version de l'application, les notes de version et l'heure de création. Les cas d'utilisation incluent l'augmentation automatique de la version et le transfert des notes de version de la version précédente.

La valeur renvoyée de l'action est un hachage représentant la dernière version. Ce hachage est également disponible à l'aide de lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE]. Pour en savoir plus sur les champs disponibles dans ce hachage, consultez la documentation de l'API REST.

Paramètres

Paramètres firebase_app_distribution_get_latest_release
app

Obligatoire uniquement si votre application ne contient pas de fichier de configuration Firebase (GoogleService-Info.plist) : ID d'application Firebase de votre application. Vous trouverez l'ID de l'application dans la console Firebase, sur la page Paramètres généraux.

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

Chemin d'accès à votre fichier GoogleService-Info.plist, par rapport au chemin d'accès au produit archivé. Défini sur GoogleService-Info.plist par défaut.

Le fichier permet d'obtenir l'ID d'application Firebase de votre application si le paramètre app n'est pas spécifié.

firebase_cli_token

Jeton d'actualisation imprimé lorsque vous authentifiez votre environnement d'intégration continue avec la CLI Firebase (pour en savoir plus, consultez Utiliser la CLI avec les systèmes d'intégration continue).

service_credentials_file

Chemin d'accès au fichier JSON de votre compte de service Google. Consultez la documentation précédente pour savoir comment s'authentifier à l'aide des identifiants d'un compte de service.

service_credentials_json_data

Contenu du fichier JSON du compte de service Google. Consultez la documentation précédente pour savoir comment s'authentifier à l'aide des identifiants d'un compte de service.

debug

Option booléenne. Vous pouvez définir cette valeur sur true pour imprimer des résultats de débogage détaillés.

Étapes suivantes