Reprendre le travail

Identifier les problèmes dans l’ordre, de la connexion aux logs de build

Guide de dépannage pour les charges iOS, macOS, CI/CD et Apple Silicon. Vérifiez d’abord le nœud et le réseau, puis la chaîne d’outils et les logs afin de ne pas modifier plusieurs variables à la fois.

5 niveaux de vérification de connexion
4 types de problèmes de build
6 nœuds disponibles
Procédure Conserver l’état initial, puis éliminer les causes une à une
READY
A01
Vérifier les informations du nœud Région, adresse de l’hôte, mode de connexion, état de la commande
01
A02
Vérifier le chemin réseau local DNS, ports, pare-feu, pertes de paquets et gigue
02
A03
Réduire le périmètre de la chaîne d’outils Xcode, SDK, dépendances, signature et tests
03
A04
Fournir le jeu minimal de preuves Heure, étapes de reproduction, logs et périmètre de l’impact
04
N’envoyez jamais de mots de passe, clés privées ou codes de récupération SUPPORT / NODE
Premier accès

Quatre étapes pour la première connexion

La console affiche les informations du nœud associé à la commande en cours. Lorsque vous copiez les champs, conservez leur format d’origine et ne devinez ni l’adresse, ni le nom d’utilisateur, ni le port.

  1. 01

    Lire les informations du nœud

    Connectez-vous à la console et vérifiez la commande, la région, l’adresse de l’hôte, le nom d’utilisateur et les modes de connexion autorisés. Le nœud se trouve à Singapour, au Japon (Tokyo), en Corée du Sud (Séoul), à Hong Kong, dans l’est des États-Unis ou dans l’ouest des États-Unis.

  2. 02

    Vérifier le réseau local

    Vérifiez que le réseau professionnel ne bloque pas le port cible, désactivez les proxys temporaires qui modifient le routage et notez séparément les résultats obtenus sur les réseaux filaire, Wi-Fi ou autres.

  3. 03

    Choisir le mode de connexion

    Privilégiez SSH pour la ligne de commande, la synchronisation de fichiers et les tâches automatisées ; utilisez VNC pour accéder à l’interface graphique de macOS. Lors du premier test, n’établissez qu’un seul type de connexion afin d’éviter les interférences.

  4. 04

    Valider la configuration de référence

    Après la connexion, notez la version du système, l’espace disque disponible, le chemin Xcode et l’heure réseau actuelle. Exécutez d’abord un projet minimal, puis migrez le projet complet et le cache de build.

Lors de la première connexion, vérifiez uniquement le socle

Ne téléversez pas un projet complet, ne modifiez pas les réglages système et n’enregistrez pas encore le runner CI tant que la connexion n’est pas stable. Conservez d’abord un résultat de référence reproductible.

Diagnostic de connexion

Dépanner SSH et VNC dans un ordre fixe

En cas d’échec de connexion, partez des informations d’identité et progressez vers les couches réseau. Ne modifiez qu’une condition à la fois et conservez la sortie des commandes ou les messages d’erreur.

01

Les identifiants correspondent-ils au nœud actuel ?

Vérifiez que le nom d’utilisateur, la clé ou le mot de passe de connexion provient de la commande actuelle ; ne réutilisez pas les informations d’une commande terminée. Contrôlez les permissions du fichier de clé et l’absence d’espaces ou de retours à la ligne ajoutés lors de la copie.

02

Le port est-il accessible depuis le réseau local ?

Effectuez un test de connectivité avec le port affiché dans la console. Un délai d’attente indique généralement un problème de chemin réseau ; un refus immédiat signifie souvent que la cible est joignable mais que le service ou le port ne correspond pas.

03

Le pare-feu local bloque-t-il la connexion ?

Vérifiez les logiciels de sécurité du terminal, les règles de sortie de l’entreprise et celles du routeur. Refaites le test depuis un autre réseau connu pour distinguer rapidement une restriction locale d’un problème côté nœud.

04

Le chemin réseau est-il stable ?

Notez la latence, la gigue et les pertes de paquets, plutôt que de vous limiter à un seul ping. VNC est plus sensible à la gigue continue, et un build SSH peut aussi s’interrompre si une connexion de téléchargement est réinitialisée.

05

L’état du nœud est-il normal ?

Retournez dans la console pour vérifier l’état de l’instance et de la commande. Si la connexion échoue depuis plusieurs réseaux malgré des identifiants corrects, notez l’heure et le message d’erreur exacts, puis ouvrez un ticket pour anomalie du nœud.

Vérification de la chaîne d’outils

Pour un problème Xcode, vérifiez d’abord la version sélectionnée, puis le projet

Un même commit peut produire des résultats différents selon la chaîne d’outils. Validez séparément l’environnement système et les dépendances du projet afin de déterminer si le problème vient du nœud, de la chaîne d’outils ou de la configuration du dépôt.

Version et chemins

  • Exécutez xcodebuild -version et notez les versions de Xcode et du build.
  • Exécutez xcode-select -p et vérifiez que Command Line Tools pointe vers le répertoire attendu.
  • Vérifiez que les scripts ne contiennent pas en dur le chemin d’une ancienne version de Xcode.

SDK et dépendances

  • Vérifiez que le scheme, la destination et le nom du SDK existent.
  • Relancez la résolution des packages Swift, de CocoaPods ou des autres dépendances du projet.
  • Comparez les fichiers de verrouillage, les sources de dépendances et le type précis des adresses dont le téléchargement échoue.

Environnement de signature

  • Vérifiez que les variables de signature utilisées par la configuration de build existent.
  • Vérifiez que le processus CI peut accéder aux éléments requis sans les écrire dans les logs.
  • Relancez séparément les échecs de signature et de compilation, puis notez les codes de sortie.
BASELINE

Instantané minimal recommandé de l’environnement

sw_vers xcodebuild -version xcode-select -p df -h
Intégration automatisée

Traitez le self-hosted runner comme un exécuteur contrôlé

La réussite de l’enregistrement du runner ne garantit pas un workflow sûr et reproductible. Le périmètre d’exécution, le répertoire de travail, les identifiants et la stratégie de concurrence doivent être définis ensemble.

REGISTER

Enregistrer et étiqueter l’exécuteur

Utilisez les informations d’enregistrement temporaires fournies par le projet ou l’organisation et définissez des labels indiquant la puce, la région et l’usage. Une fois l’enregistrement terminé, supprimez l’historique local des commandes temporaires.

Livrable : nom du runner et liste des labels
SCOPE

Limiter le périmètre d’exécution

Autorisez uniquement les dépôts de confiance, les branches protégées et les workflows explicitement habilités à appeler le nœud. Les tâches déclenchées par des contributions externes doivent être examinées ; aucun script inconnu ne doit obtenir directement l’accès au nœud.

Livrable : règles d’autorisation des dépôts et branches
CLEAN

Nettoyer le répertoire de travail

Traitez les fichiers temporaires, données dérivées et caches inutiles avant et après chaque tâche. Si vous conservez un cache, notez sa clé, sa source et ses conditions d’expiration afin d’éviter qu’un ancien artefact ne contamine un nouveau build.

Livrable : script de nettoyage et stratégie de cache
ROTATE

Faire tourner les identifiants d’accès

Gérez les jetons, clés SSH et éléments de signature dans un processus contrôlé de gestion des secrets. Révoquez-les et réémettez-les immédiatement lorsqu’un membre quitte l’équipe, que les droits du dépôt changent ou qu’un log anormal apparaît.

Livrable : responsable des identifiants et historique de rotation
Routage des logs

Identifier le type de panne de build à partir de la première erreur utile

Ne vous contentez pas du code de sortie générique à la fin du log. Conservez le log complet et, à la première erreur, remontez pour lire la cible, la commande et le contexte des dépendances.

Identifier et traiter les problèmes courants de xcodebuild et fastlane
Catégorie de panne Signaux fréquents dans les logs Vérifier en premier Éléments à joindre au ticket
Résolution des dépendances Conflit de versions de packages, échec de récupération du dépôt, fichier de verrouillage incohérent Fichier de verrouillage, source des dépendances, clé de cache et résultat du téléchargement réseau Mode de gestion des dépendances, nom du package en échec, premier bloc d’erreur
Configuration de signature Échec de correspondance du certificat, autorisation indisponible, variable de configuration manquante Scheme, configuration de build et processus d’injection des secrets Message d’erreur désensibilisé et cible de build
Échec des tests Échec d’assertion, différence d’environnement simulé, délai d’attente du test Cas en échec, destination, paramètres de parallélisme et résultat des nouvelles tentatives Nom du cas, code de sortie, commande reproductible
Téléchargement réseau Connexion réinitialisée, échec de résolution, délai d’attente du téléchargement Nouvelles requêtes vers la même adresse, DNS, proxy et chemin de sortie Heure de l’incident, type de cible et résultats des tests réseau
01

Conserver le log brut complet

02

Identifier la première erreur utile

03

Reproduire séparément avec la commande minimale

04

Supprimer les identifiants avant d’envoyer un extrait

Gestion des données

Gérer séparément le projet, le cache et le SSD supplémentaire

Augmenter la capacité ne remplace ni la classification des données ni les sauvegardes. Définissez d’abord ce qui doit être conservé, puis choisissez le mode de synchronisation, de mise en cache et de migration.

PROJECT

Synchronisation du projet

Synchronisez en priorité le code source via le dépôt de versions, et placez les gros binaires et dépendances privées dans un stockage contrôlé. Après la première migration, comparez le hash du commit, les sous-modules et les fichiers de verrouillage.

  • Vérifier séparément le code source et la configuration
  • Documenter le mode de synchronisation des fichiers volumineux
  • Exécuter un build minimal après la migration
CACHE

Nettoyage du cache

DerivedData, le cache des packages et le répertoire de travail du runner peuvent tous affecter la reproductibilité. Avant de supprimer quoi que ce soit, notez la taille des répertoires et les clés de cache, puis comparez la durée du build et l’évolution des erreurs.

  • Commencer par vérifier l’espace disque disponible
  • Ne supprimer que les éléments régénérables
  • Éviter que des tâches concurrentes modifient le cache simultanément
ADD-ON

Périmètre du SSD supplémentaire

Le SSD supplémentaire sert aux projets, caches ou jeux de données nécessitant davantage d’espace de travail. Vérifiez le point de montage, les chemins de lecture/écriture et les droits des tâches avant de commencer le travail en production.

  • Définir clairement l’emplacement des données
  • Surveiller la vitesse de croissance et l’espace restant
  • Vérifier l’intégrité des fichiers avant la migration
L’utilisateur doit conserver les copies nécessaires avant la migration

Sauvegardez les données du projet, éléments de signature, identifiants et artefacts de build selon la stratégie de l’équipe. Terminez la migration avant la fin de la période de location et vérifiez que les copies sont lisibles ; ne considérez pas l’unique copie présente sur le nœud comme une archive durable.

Jeu de preuves du ticket

Les informations nécessaires pour lancer le diagnostic en un seul envoi

Plus votre demande est précise, plus elle peut passer directement à la reproduction et à l’analyse. Commencez par l’impact, puis fournissez la chronologie et les logs minimaux, sans envoyer de secret.

Modèle de demande Copier les champs et renseigner les faits
CASE
Région du nœud
Singapour, Japon (Tokyo), Corée du Sud (Séoul), Hong Kong, est des États-Unis ou ouest des États-Unis
Heure de l’incident
Indiquez l’heure locale et le fuseau horaire, en précisant si le problème est continu ou intermittent
Étapes de reproduction
Énumérez les étapes dans l’ordre réel, de la connexion et l’exécution de la commande jusqu’à l’apparition de l’erreur
Extrait de log
Incluez la première erreur utile, le code de sortie et le contexte nécessaire avant et après
Périmètre de l’impact
Une tâche, un membre, tous les builds ou la connexion à l’ensemble du nœud
Vérifications déjà effectuées
Listez les actions réalisées, comme changer de réseau, relancer les commandes ou nettoyer le cache, ainsi que leurs résultats

Ne soumettez pas ces éléments

Mots de passe, clés privées, codes de récupération, jetons complets, éléments de signature et justificatifs de paiement complets. Si un log contient un secret, supprimez-le ou remplacez-le d’abord par un marqueur de désensibilisation explicite.

Associer une commande existante

Connectez-vous à la console, créez un ticket et sélectionnez la commande correspondante afin d’aider le support à vérifier le bon nœud et l’historique du service.

Créer un ticket depuis la console
Parcours d’escalade

Rejoindre la file de traitement correspondant au problème

Une interruption de connexion, une anomalie du nœud et une question de facturation nécessitent des éléments différents. Choisissez la bonne catégorie et ajoutez les informations dans la même conversation afin de conserver le contexte.

Interruption de connexion

Identifiants corrects, mais SSH ou VNC ne s’établit pas

Joignez le type de réseau local, le test du port cible, le message d’erreur exact et l’heure de l’incident. Si une autre connexion réseau rétablit le service, indiquez également la différence entre les deux tests.

Catégorie : Connexion et accès
Anomalie du nœud

Plusieurs tâches échouent simultanément ou l’état du nœud est anormal

Indiquez le périmètre de l’impact, la dernière heure de fonctionnement normal, l’état de l’instance et la commande minimale de reproduction. N’écrasez pas l’état initial par des redémarrages répétés ou des modifications massives de configuration.

Catégorie : Fonctionnement du nœud
Question de facturation

Vérification de la période de commande, des options supplémentaires ou du paiement

Indiquez l’identifiant de la commande, la période de facturation, les options concernées et la description du problème. Toutes les commandes sont réglées en dollars américains (USD) ; n’envoyez pas de justificatif de paiement complet dans le ticket.

Catégorie : Commandes et facturation
Poursuivre le suivi dans la même conversation

Mettez à jour l’avancement, les questions complémentaires et la conclusion finale dans le ticket correspondant de la console. Lorsque vous ajoutez de nouveaux logs, indiquez l’heure de collecte et les modifications effectuées pour faciliter la comparaison.

Suivre le ticket dans la console

Préparez les informations du nœud avant de lancer un diagnostic reproductible

Les nouvelles commandes permettent de choisir deux configurations et six nœuds ; pour un problème concernant une commande existante, connectez-vous à la console et ouvrez un ticket associé.