Pilot (Fastlane) est un outil de gestion des builds d'applications iOS dans TestFlight : téléchargement de fichiers binaires, gestion des groupes de testeurs et suivi de l'état des builds. Contrairement au téléchargement manuel via App Store Connect, Pilot automatise toutes les opérations avec l'API TestFlight. Selon la documentation officielle de Fastlane (2026), Pilot permet aux équipes de réduire le temps de publication d'une version bêta de 10 minutes à quelques secondes.
Points clés
Pilot (Fastlane) est un composant de l'écosystème Fastlane pour automatiser le travail avec TestFlight — la plateforme d'Apple pour les tests bêta d'applications mobiles. Pilot prend en charge toutes les opérations courantes : téléchargement de builds, ajout de testeurs, gestion de groupes et suivi de l'état des builds.
Sans Pilot, le processus de distribution bêta se présente ainsi : le développeur ouvre manuellement App Store Connect, sélectionne l'application, télécharge l'IPA via Xcode Organizer, configure un groupe de testeurs et envoie des invitations. TestFlight est le service d'Apple pour distribuer les versions bêta des applications aux testeurs avant la sortie officielle sur l'App Store.
Selon l'aide d'App Store Connect (2025), les testeurs externes doivent passer par le processus Beta App Review avant la première installation d'un build — cela prend de 1 à 48 heures. Pilot suit automatiquement l'état de la révision et notifie l'équipe lorsque le build est prêt à être distribué aux groupes de testeurs externes.
Utilisez Pilot dans tout projet nécessitant une livraison régulière de builds bêta aux testeurs — c'est un outil standard pour les pipelines CI/CD iOS, garantissant un processus de livraison prévisible.
La fonctionnalité de Pilot couvre l'ensemble du cycle de vie de la gestion des builds bêta : du téléchargement d'un fichier binaire à la notification des testeurs d'une nouvelle version. Chaque fonction est implémentée en tant que commande séparée avec un comportement prévisible et une journalisation détaillée de chaque étape.
La commande fastlane pilot upload télécharge le fichier IPA dans App Store Connect et crée un nouveau build dans TestFlight. Pilot vérifie automatiquement la validité du fichier binaire, la conformité de la version et l'identifiant de l'application. App Store Connect est la plateforme d'Apple pour la gestion des applications, y compris le téléchargement de builds, les métadonnées, les analyses et les rapports de ventes.
Après le téléchargement, Pilot attend le traitement du fichier binaire par Apple — le processus prend de 5 à 30 minutes selon la taille du build. Pendant l'attente, Pilot affiche une barre de progression avec des informations sur l'état actuel du traitement : Processing, Validating ou Ready. Après un traitement réussi, le build est disponible pour être assigné à des groupes de testeurs.
Pilot prend en charge la gestion des groupes de testeurs internes et externes. Les testeurs internes sont des membres de votre équipe Apple Developer qui accèdent instantanément aux builds, sans passer par la Beta App Review. Les testeurs externes sont des utilisateurs invités par e-mail, qui nécessitent une approbation de la révision avant la première installation.
La commande fastlane pilot add ajoute de nouveaux testeurs à un groupe par e-mail ou Apple ID. Pilot envoie automatiquement les invitations et vérifie si le testeur a accepté l'invitation. Pour un ajout en masse, vous pouvez passer une liste d'e-mails depuis un fichier à l'aide du paramètre --testers_file_path, ce qui est pratique lors de la constitution initiale d'un groupe de testeurs de centaines de participants.
# Télécharger un nouveau build dans TestFlight
fastlane pilot upload --ipa "build/MyApp.ipa"
# Ajouter un testeur à un groupe
fastlane pilot add --email "tester@company.com" \
--groups "QA Team"
La configuration de Pilot ne nécessite pas de fichier de configuration séparé — les paramètres sont transmis via Appfile (le fichier commun de Fastlane) ou des arguments de ligne de commande. Les principaux paramètres incluent l'apple_id de l'application, app_identifier, team_id et les identifiants d'accès à l'API App Store Connect.
Pour l'authentification, Pilot utilise la clé API App Store Connect (méthode recommandée) ou l'authentification à deux facteurs Apple ID. App Store Connect API Key est une clé d'accès générée dans App Store Connect qui permet d'interagir avec l'API sans saisir de mot de passe et de code de confirmation de manière interactive.
# Appfile — configuration commune de Fastlane
app_identifier("com.company.app")
apple_id("developer@company.com")
team_id("TEAM123456")
# Variables d'environnement pour Pilot
# APP_STORE_CONNECT_API_KEY_PATH=/path/to/key.p8
Le paramètre app_identifier définit l'identifiant de bundle (Bundle Identifier) de l'application, qui doit correspondre à l'identifiant spécifié dans le projet Xcode et App Store Connect. Le paramètre apple_id est utilisé pour l'authentification dans le schéma à deux facteurs, et team_id — pour sélectionner l'équipe de développement si le compte est lié à plusieurs équipes Apple Developer.
Pour que Pilot fonctionne, vous devez configurer la clé API App Store Connect dans l'environnement CI/CD. La clé est générée dans App Store Connect → Users and Access → Keys → Generate API Key. Enregistrez le fichier .p8 dans les secrets du système CI et spécifiez le chemin via la variable d'environnement APP_STORE_CONNECT_API_KEY_PATH ou le paramètre --api_key_path dans les commandes Pilot.
L'ensemble des commandes Pilot couvre tous les scénarios TestFlight : téléchargement de builds, gestion des testeurs, visualisation des statuts et suivi des métadonnées. Chaque commande renvoie une sortie JSON structurée pour un traitement ultérieur dans les scripts CI/CD.
La commande fastlane pilot builds affiche une liste de tous les builds de l'application avec la version, l'état de traitement et la date de téléchargement. L'état du build peut être l'un des suivants : Processing — Apple traite le fichier binaire, Ready — le build est disponible pour la distribution, Rejected — le build a été rejeté en raison d'erreurs de validation.
# Afficher la liste de tous les builds dans TestFlight
fastlane pilot builds
# Assigner un build à un groupe de testeurs
fastlane pilot distribute --build_number 42 \
--groups "QA Team" --notify
# Afficher les informations sur un build spécifique
fastlane pilot build_info --build_number 42
La commande fastlane pilot distribute assigne le build à des groupes de testeurs spécifiés et envoie des notifications. Le paramètre --notify active l'envoi de notifications par e-mail aux testeurs concernant un nouveau build disponible — c'est essentiel pour impliquer les testeurs bêta dans le processus de test et accélérer les retours.
Pour gérer les métadonnées du build, utilisez le paramètre --changelog, qui définit le texte de description des modifications de la nouvelle version. Ce texte s'affiche aux testeurs dans l'invitation de test dans l'application TestFlight. Il est recommandé de spécifier les modifications clés, les bogues corrigés et les nouvelles fonctionnalités dans chaque build.
| Commande Pilot | Objectif | Paramètres clés |
|---|---|---|
| pilot upload | Télécharger IPA dans TestFlight | --ipa, --skip_waiting |
| pilot distribute | Assigner le build aux groupes | --build_number, --groups |
| pilot add | Ajouter des testeurs | --email, --groups |
| pilot builds | Lister tous les builds | --app_identifier |
| pilot build_info | Informations sur le build | --build_number |
Pilot dans CI/CD est l'étape finale du pipeline de livraison des applications iOS. Après que Gym a compilé l'IPA et que les tests sont réussis, Pilot télécharge le build dans TestFlight et le distribue aux groupes de testeurs. Cela permet aux équipes QA d'obtenir la nouvelle version de l'application en quelques minutes après un commit dans le dépôt.
Un pipeline CI/CD iOS typique comprend la séquence : Match (certificats), Gym (compilation IPA), Pilot (téléchargement dans TestFlight et distribution). Chaque étape dépend de la précédente, garantissant que seuls des builds valides et signés sont livrés aux testeurs.
# Pipeline complet dans Fastfile
lane :beta do
match(type: :appstore)
gym(scheme: "MyApp", export_method: "app-store")
pilot("build/MyApp.ipa", groups: ["QA", "PM"])
end
Le paramètre skip_waiting dans la commande upload permet de ne pas attendre la fin du traitement du fichier binaire par Apple dans une tâche CI — Pilot envoie la demande de téléchargement, reçoit l'identifiant du build et se termine. Cela accélère le pipeline car le traitement peut prendre jusqu'à 30 minutes, qui ne sont pas gaspillées à attendre dans le runner CI.
Pour que Pilot fonctionne correctement dans CI, vous devez configurer la clé API App Store Connect. Enregistrez le fichier de clé .p8 dans le stockage sécurisé du système CI et transmettez le chemin via la variable d'environnement APP_STORE_CONNECT_API_KEY_PATH. Pilot utilise cette clé pour s'authentifier dans l'API sans authentification à deux facteurs, ce qui est essentiel pour les scénarios automatisés.
Lors de l'utilisation de Pilot, les développeurs rencontrent le plus souvent des erreurs d'authentification, une configuration incorrecte de l'application et des problèmes de traitement des fichiers binaires du côté d'Apple. Le diagnostic des problèmes de Pilot commence par la vérification de l'état du build dans App Store Connect via la commande pilot builds.
L'erreur « Your app is not available for testing in TestFlight » se produit lorsque l'application n'est pas configurée pour les tests dans App Store Connect. Solution : ouvrez la section TestFlight dans App Store Connect, activez les tests pour l'application et assurez-vous que Export Compliance est correctement rempli pour votre type de chiffrement.
L'erreur « Missing iOS Distribution signing identity » indique l'absence d'un certificat de Distribution dans le Trousseau. Solution : exécutez Match pour télécharger le certificat correct avant d'appeler Pilot. Un certificat de Distribution diffère du certificat Development — il est utilisé pour signer les builds destinés à la distribution via TestFlight ou l'App Store.
Avec l'erreur « Invalid Provisioning Profile », le build contient un profil incorrect pour la méthode d'exportation sélectionnée. Solution : vérifiez que Gym utilise le bon export_method correspondant au type de profil dans Match. Si le build a été compilé avec un profil development, Pilot ne pourra pas le télécharger dans TestFlight — un profil app-store ou ad-hoc est requis.
Foire aux questions
Pilot prend en charge deux types : les testeurs internes (Internal Testers) — membres de l'équipe Apple Developer qui accèdent instantanément, et les testeurs externes (External Testers) — utilisateurs invités par e-mail qui doivent passer la Beta App Review avant l'installation.
TestFlight exige un numéro de build unique pour chaque téléchargement. Pilot vérifie automatiquement les doublons et rejette le téléchargement d'un build avec un numéro qui existe déjà dans App Store Connect. Pour un nouveau téléchargement, augmentez le build number dans le projet Xcode avant la compilation.
Non, Pilot est un composant de Fastlane et ne s'installe pas séparément. Cependant, vous pouvez appeler uniquement Pilot sans les autres outils Fastlane. Pour ce faire, installez Fastlane via gem install fastlane et utilisez uniquement les commandes pilot, en ignorant match et gym.
Utilisez la commande fastlane pilot reject avec le numéro du build spécifié. Pilot désactive l'accès des testeurs au build spécifié mais ne le supprime pas d'App Store Connect. Le build rejeté reste dans l'historique TestFlight avec le statut Rejected pour l'audit des versions.
Utilisez le paramètre --notify dans la commande pilot distribute. Pilot envoie des notifications par e-mail à tous les testeurs des groupes spécifiés avec un lien pour installer la nouvelle version via TestFlight. Sans ce drapeau, les testeurs verront le nouveau build seulement en ouvrant l'application TestFlight.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.