Distribuez des applications Android aux testeurs à l'aide de Fastlane

Ce document décrit comment distribuer des builds APK aux testeurs à l'aide de fastlane , une plateforme open source qui automatise la création et la publication d'applications iOS et Android. Ce document suit les instructions définies dans un Fastfile . Après avoir configuré Fastlane et votre Fastfile , vous pouvez intégrer App Distribution à votre configuration Fastlane.

Avant que tu commences

Si vous ne l'avez pas déjà fait, ajoutez Firebase à votre projet Android .

Si vous n'utilisez aucun autre produit Firebase, il vous suffit de créer un projet et d'enregistrer votre application. Cependant, si vous décidez d'utiliser des produits supplémentaires à l'avenir, assurez-vous de suivre toutes les étapes de la page liée ci-dessus.

Étape 1. Configurer la voie rapide

  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 Android :

    fastlane add_plugin firebase_app_distribution

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

Étape 2. Authentifiez-vous avec Firebase

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

Étape 3. Configurez votre Fastfile et distribuez 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 : ID d'application Firebase de votre application. Vous pouvez trouver l'ID de l'application dans la console Firebase, sur la page Paramètres généraux .

    app: "1:1234567890:android:0a1b2c3d4e5f67890"
    firebase_cli_token

    Un jeton d'actualisation imprimé lorsque vous authentifiez votre environnement CI avec la CLI Firebase (lisez Utiliser la CLI avec les systèmes CI pour plus d'informations).

    service_credentials_file

    Le chemin d'accès au fichier json de votre compte de service Google. Voir ci-dessus pour savoir comment s'authentifier à l'aide des informations d'identification du compte de service .

    android_artifact_type

    Spécifie le type de fichier Android (APK ou AAB).

    android_artifact_path

    Remplace apk_path (obsolète). Chemin absolu vers le fichier APK ou AAB que vous souhaitez télécharger. S'il n'est pas spécifié, fastlane détermine l'emplacement du fichier à partir de la voie dans laquelle le fichier a été généré.

    release_notes
    release_notes_file

    Notes de version pour cette version.

    Vous pouvez soit spécifier directement les notes de version :

    release_notes: "Text of release notes"

    Ou spécifiez le chemin d'accès à un fichier texte brut :

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

    Les adresses email des testeurs que vous souhaitez inviter.

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

    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 des virgules :

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

    Les groupes de testeurs que vous souhaitez inviter (voir Gérer les testeurs ). Les groupes sont spécifiés à l'aide de 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 des virgules :

    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 des virgules :

    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 automatisé .

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

    Vous pouvez spécifier les appareils de test sous forme de liste d'appareils de test séparés par des points-virgules :

    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 périphériques de test séparés par des points-virgules :

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

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

    test_password
    test_password_file

    Le mot de passe de connexion automatique à utiliser lors des tests automatisés .

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

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

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

    test_password_resource

    Nom de la ressource pour le champ 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. Visitez la console Firebase pour les résultats des tests automatiques.

    debug

    Un drapeau booléen. Vous pouvez définir cette valeur sur true pour imprimer une sortie de débogage détaillée.

platform :android do
    desc "My awesome app"
    lane :distribute do
        build_android_app(...)
        # build_android_app is a built-in fastlane action.
        release = firebase_app_distribution(
            app: "1:123456789:android:abcd1234",
            testers: "tester1@company.com, tester2@company.com",
            release_notes: "Lots of amazing new features to test out!"
        )
    end
end

Pour rendre la version disponible aux testeurs, exécutez votre voie :

fastlane <lane>

La valeur de retour de l'action est un hachage représentant la version téléchargée. Ce hachage est également disponible en utilisant lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE] . Pour plus d'informations sur les champs disponibles dans ce hachage, consultez la documentation de l'API REST .

Le plugin fastlane génère les liens suivants après le téléchargement de la version. Ces liens vous aident à gérer les binaires et à garantir que les testeurs et autres développeurs disposent de la bonne version :

  • Un 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 du testeur (application native Android) qui permet aux testeurs d'afficher les notes de version et d'installer l'application sur leur appareil. Le testeur doit accéder à la version pour pouvoir utiliser le lien.
  • Un lien signé qui télécharge et installe directement le binaire de l'application (fichier APK ou AAB). Le lien expire au bout d'une heure.

Une fois que vous avez distribué votre build, elle est disponible dans le tableau de bord App Distribution de la console Firebase pendant 150 jours. Lorsque la build arrive à 30 jours de son expiration, un avis d'expiration apparaît dans la console et dans la liste des builds du testeur sur son appareil de test.

Les testeurs qui n'ont pas été invités auparavant à tester l'application reçoivent des invitations par e-mail pour commencer. Les testeurs existants reçoivent des notifications par e-mail indiquant qu'une nouvelle version est prête à être testée. Pour savoir comment installer l'application de test, consultez le guide de configuration du 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 build chaque fois que vous créez une nouvelle version dans App Distribution, vous pouvez utiliser l' action firebase_app_distribution_get_latest_release et, par exemple, le plug-in fastlane increment_version_code . Le code suivant fournit un exemple de la façon d'incrémenter automatiquement votre numéro de build :

lane :increment_version do
  latest_release = firebase_app_distribution_get_latest_release(
    app: "<your Firebase app ID>"
  )
  increment_version_code({ version_code: latest_release[:buildVersion].to_i + 1 })
end

Pour en savoir plus sur l'action firebase_app_distribution_get_latest_release , consultez Obtenir des informations sur la dernière version de votre application .

Étape 4 (Facultatif). Gestion des 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 remplace directement les valeurs définies dans votre Fastfile .

Une fois qu'un testeur est 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 disposez d’un grand nombre de testeurs, vous devriez envisager 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 en utilisant --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 : votre numéro de projet Firebase.
  • group_alias (facultatif) : si spécifié, les testeurs sont ajoutés (ou supprimés) du groupe spécifié.
  • service_credentials_file : Le chemin d'accès à votre fichier d'informations d'identification de service Google.
  • firebase_cli_token : jeton d'authentification pour Firebase CLI.

Le service_credentials_file et le firebase_cli_token sont les mêmes arguments utilisés par l'action de téléchargement.

É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, notamment 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 report des notes de version de la version précédente.

La valeur de retour de l'action est un hachage représentant la dernière version. Ce hachage est également disponible en utilisant lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE] . Pour plus d'informations 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 : ID d'application Firebase de votre application. Vous pouvez trouver l'ID de l'application dans la console Firebase, sur la page Paramètres généraux .

app: "1:1234567890:android:0a1b2c3d4e5f67890"
firebase_cli_token

Un jeton d'actualisation imprimé lorsque vous authentifiez votre environnement CI avec la CLI Firebase (lisez Utiliser la CLI avec les systèmes CI pour plus d'informations).

service_credentials_file

Le chemin d'accès au fichier json de votre compte de service Google. Voir ci-dessus pour savoir comment s'authentifier à l'aide des informations d'identification du compte de service .

debug

Un drapeau booléen. Vous pouvez définir cette valeur sur true pour imprimer une sortie de débogage détaillée.

Prochaines étapes