Identifier un problème à partir des commandes et mots-clés d’erreur

De la connexion au nœud à la livraison des artefacts de build iOS.

Pour les nouveaux utilisateurs, les ingénieurs release et les responsables CI/CD. Saisissez une commande, un extrait d’erreur ou le nom d’une tâche pour cerner le problème, puis vérifiez chaque résultat attendu.

8 points d’accès affichés.

RUNBOOK / OAK-06 Index de validation du nœud de build
01
Point d’accèsSSH · VNC · Partage d’écran
Vérifier
02
Environnement de buildXcode · ressources de signature · cache
Vérifier
03
Exécution de la tâcheétiquettes du runner · répertoires isolés
Vérifier
04
Résultat livréarchive · export · logs
Archiver
Principe de diagnostic Ne modifier qu’une variable à la fois

Accédez d’abord au dossier correspondant au symptôme

Chaque point d’accès indique les éléments à vérifier, les commandes ou les indicateurs à observer. Le filtrage modifie uniquement les points d’accès ci-dessous et ne masque aucune section complète.

Confirmez d’abord le point d’accès avant de modifier les paramètres du nœud

Fiez-vous aux informations de l’instance actuellement affichées dans la console. Ne copiez pas d’adresse ni d’identifiants depuis d’anciens tickets, messages ou scripts.

Ordre recommandé · 4 étapes

Checklist de validation de la première connexion

Établissez d’abord une connexion stable, puis vérifiez le mot de passe et le fuseau horaire. Ne changez pas simultanément le réseau, la résolution et le mode d’authentification : il serait difficile d’identifier la cause du changement.

  1. 01

    Lire les informations de connexion actuelles dans la console

    Vérifiez la région du nœud, l’adresse de l’hôte, le port, le nom d’utilisateur et l’état de l’instance. Conservez les identifiants uniquement dans un gestionnaire de mots de passe contrôlé, jamais dans le dépôt de code ou les logs de build.

  2. 02

    Vérifier d’abord la liaison de base avec SSH

    Exécutez ssh -v user@host pour afficher les étapes de résolution, de handshake et d’authentification. En cas d’expiration avant l’établissement de la connexion, vérifiez d’abord le réseau local et le port ; en cas d’échec d’authentification, contrôlez le nom d’utilisateur et les identifiants actuels.

  3. 03

    Choisir la connexion graphique selon la tâche

    Pour utiliser l’interface Xcode, employez VNC ou le partage d’écran. Conservez d’abord la résolution et les couleurs par défaut, puis ajustez la qualité après avoir vérifié le clavier, la souris et le presse-papiers.

  4. 04

    Terminer les vérifications de première connexion

    Remplacez le mot de passe initial, exécutez date et systemsetup -gettimezone pour vérifier la date, l’heure et le fuseau horaire, puis confirmez que le répertoire du projet appartient à l’utilisateur de la tâche.

Consignez les entrées du build et les chemins des artefacts dans le dossier

Un build iOS reproductible exige une chaîne d’outils, un point d’entrée du projet, des ressources de signature, des paramètres d’archivage et un emplacement d’export fixes. Noter simplement « échec du build » ne suffit pas pour effectuer une vérification.

01 / TOOLCHAIN

Verrouiller les outils en ligne de commande Xcode

Exécutez d’abord xcode-select -p et xcodebuild -versionpour confirmer le répertoire développeur et la version de Xcode réellement utilisés par le script. Après un changement de version, relancez ces deux commandes ; ne vous fiez pas au titre de la fenêtre du terminal.

02 / SIGNING

Séparer certificats, clés privées et profils

Limitez l’accès aux ressources de signature selon le projet et l’environnement. Après l’import, utilisez security find-identity -v -p codesigning pour vérifier les identités disponibles ; n’affichez jamais le mot de passe du certificat dans les logs du pipeline.

03 / ARCHIVE

Définir le workspace, le scheme et le chemin d’archive

Le script doit spécifier explicitement le workspace ou project, le scheme partagé, la configuration et -archivePath. Sur la machine de build, ne dépendez pas de la sélection temporaire effectuée lors de la précédente utilisation de l’interface Xcode.

04 / EXPORT

Conserver ensemble résultats d’export et logs

Générez les artefacts avec -exportArchive et une configuration d’export versionnée. Conservez l’archive, le résultat d’export, les logs de build et l’identifiant du commit ; même en cas d’échec, gardez les informations de diagnostic expurgées.

BUILD RECORD Squelette de commande d’archivage
xcodebuild \
  -workspace App.xcworkspace \
  -scheme App \
  -configuration Release \
  -archivePath "$PWD/output/App.xcarchive" \
  clean archive
EntréesIdentifiant du commit, fichiers de verrouillage des dépendances, version de Xcode, scheme
SortiesRépertoire d’archive, répertoire d’export, logs bruts, identifiant de tâche
À conserver en cas d’échecCode de sortie, premier bloc d’erreur, versions de l’environnement ; ne pas conserver les valeurs sensibles

L’enregistrement du runner n’est que le début ; les règles d’isolation déterminent la pérennité de l’exécution

Les nœuds OakVM sont des machines physiques dédiées, et non des machines virtuelles. La concurrence s’étend en ajoutant des nœuds dédiés ; sur un même nœud, définissez clairement la file d’attente, les étiquettes et les limites des répertoires de travail.

GITHUB ACTIONS

Routage des projets vers les nœuds dédiés avec des étiquettes

  • Créez un self-hosted runner au niveau du dépôt ou de l’organisation, et consignez son rattachement.
  • Utilisez des étiquettes indiquant la région, la puce et l’usage ; séparez par exemple les releases de projet des tests quotidiens.
  • Le workflow doit correspondre exactement via runs-on ; n’utilisez pas d’étiquettes génériques au sens ambigu.
  • À la fin de la tâche, supprimez les trousseaux temporaires, les répertoires temporaires et les variables d’environnement nécessaires uniquement à cette exécution.
GITLAB CI

Documenter clairement la portée du runner et les étiquettes des tâches

  • Vérifiez si le runner appartient à l’instance, au groupe ou au projet, afin d’éviter qu’un projet sans rapport puisse l’utiliser.
  • Déclarez les tags dans le job et désactivez l’acceptation des tâches non étiquetées si elle n’est pas nécessaire.
  • Définissez des clés de cache au niveau du projet afin d’éviter que des branches ou applications différentes partagent des résultats incompatibles.
  • Conservez le numéro du job, l’identifiant du commit et le nom du runner pour les faire correspondre aux logs du nœud.
GENERIC RUNNER

Définir d’abord le cycle de vie d’un runner générique

  • Le script d’enregistrement, le mode de démarrage du service et l’emplacement des logs doivent figurer dans le runbook de l’équipe.
  • Créez un répertoire de travail distinct pour chaque tâche, puis traitez le cache et les artefacts selon la politique de conservation.
  • Définissez une limite de concurrence claire pour chaque nœud physique afin d’éviter que plusieurs archivages lourds se disputent les ressources.
  • Le nœud reste opérationnel 365 jours par an ; les nouvelles tentatives doivent néanmoins être plafonnées et leur cause d’échec consignée.

Base d’isolation :Gérez séparément le répertoire du projet, le cache de build, les ressources de signature et le répertoire des artefacts. N’effacez pas l’intégralité du nœud comme méthode d’isolation courante et ne faites pas partager à deux projets le même ensemble de répertoires de signature inscriptibles.

Diagnostiquer progressivement de la charge d’affichage à la liaison réseau

La sensation de lenteur dans VNC et le partage d’écran ne provient pas forcément de la charge de calcul du nœud. Effectuez les tests dans un ordre fixe pour distinguer la pression d’encodage, les fluctuations du réseau local et la concurrence des tâches en arrière-plan.

  1. 01

    Réduire la résolution

    Réduisez d’abord la résolution d’affichage au niveau minimal nécessaire à l’opération en cours et désactivez les zones d’affichage supplémentaires inutilisées. Si la réactivité s’améliore nettement, le problème est probablement lié au volume d’encodage de l’image.

    Observer le pointeur et le déplacement des fenêtres
  2. 02

    Réduire les couleurs et les contenus dynamiques

    Mettez en pause les vidéos, les aperçus animés et les fenêtres de supervision constamment actualisées. Pendant le build, désactivez les écrans d’émulateur inutiles et vérifiez si les opérations d’édition statiques redeviennent stables.

    Comparer les images statiques et dynamiques
  3. 03

    Définir les attentes de fréquence d’images

    L’édition de code et les opérations de release ne nécessitent généralement pas une fréquence d’images élevée. Visez d’abord la réactivité de la saisie et la lisibilité du texte, puis augmentez progressivement la fluidité.

    Noter l’évolution de la latence de saisie
  4. 04

    Vérifier les fluctuations réseau

    Effectuez un test continu de faible latence vers l’adresse du nœud ; surveillez les variations et les pertes de paquets, pas uniquement la valeur minimale ponctuelle. Après avoir changé de réseau local, répétez le test avec le même nombre d’échantillons.

    Conserver le résumé des échantillons
  5. 05

    Confirmer le mode de collaboration de l’équipe

    Une seule personne doit piloter principalement chaque tâche ; les autres membres collaborent via les logs de build et les enregistrements d’artefacts. Les manipulations simultanées de l’interface graphique augmentent les conflits de contexte.

    Identifier clairement l’opérateur actuel

Harmoniser d’abord les termes, puis discuter de la configuration et des limites

Les termes suivants sont utilisés sur les pages OakVM, dans la console et lors des échanges avec le support. Ils décrivent le mode de livraison et le workflow, sans constituer une recommandation de plateformes tierces.

Nœud physique
Équipement Apple Silicon physique exécutant directement macOS et les tâches de build ; il constitue l’unité de calcul correspondant à la commande.
Dédié
Pendant la période de location, les ressources de calcul du nœud sont réservées à la commande en cours ; la machine physique n’est pas partagée avec les tâches d’autres clients.
Mac dans le cloud
Environnement Mac déployé dans un centre de données et accessible via le réseau, utilisable pour les opérations graphiques, les builds en ligne de commande et les tâches automatisées.
Non virtuel
La commande fournit une machine physique dédiée, et non une instance virtuelle découpée depuis un hôte partagé.
VNC
L’un des modes de connexion permettant de consulter et piloter l’interface graphique de macOS à distance ; l’expérience dépend de la résolution, des changements d’image et des fluctuations réseau.
self-hosted runner
Agent enregistré auprès d’une plateforme CI/CD, qui reçoit et exécute les tâches du pipeline sur un nœud détenu ou loué par l’utilisateur.
Cache de build
Données conservées pour éviter les téléchargements ou compilations répétitifs, comme le cache des dépendances et DerivedData ; elles doivent pouvoir expirer et être reconstruites.
Ressources de signature
Certificats, clés privées, profils et autorisations nécessaires à la signature de l’application ; gérez-les selon le principe du moindre privilège.

Consigner pour chaque vérification la commande, le résultat attendu et le scénario d’erreur

Conservez d’abord le code de sortie brut et la première erreur pertinente avant toute correction. Exécuter plusieurs commandes de nettoyage successives peut faire disparaître le contexte du problème et conduire à prendre une erreur de dépendance pour une panne du nœud.

Checklist de diagnostic par commandes des problèmes courants d’un Mac dans le cloud
Élément vérifié Commande ou action Résultat attendu Scénario d’erreur
Résolution réseau et accessibilité ping -c 20 host
ssh -v user@host
Résolution d’adresse cohérente ; aucune perte persistante dans l’échantillon ; SSH atteint les étapes de handshake et d’authentification. En cas d’erreur de résolution, vérifiez l’adresse ; en cas d’expiration avant la connexion, changez de liaison locale et retestez ; en cas d’échec d’authentification, vérifiez uniquement le nom d’utilisateur et les identifiants actuels.
Disque et espace de build df -h
du -sh ~/Library/Developer/Xcode/DerivedData
Le volume cible dispose de suffisamment d’espace pour le code source, les dépendances, l’archive et le résultat d’export ; la taille du cache reste sous le seuil de l’équipe. Déplacez d’abord les artefacts à conserver, puis supprimez les caches reconstructibles du projet ; ne supprimez pas directement une archive dont l’appartenance n’est pas certaine.
Chaîne d’outils Xcode xcode-select -p
xcodebuild -version
Le répertoire développeur et la version correspondent aux informations du pipeline ; les commandes s’exécutent correctement. En cas d’erreur de chemin, sélectionnez explicitement la chaîne d’outils ; si la version ne correspond pas, arrêtez la tâche pour éviter de générer des archives incomparables.
Projet et scheme xcodebuild -list -workspace App.xcworkspace Le scheme cible est visible et le scheme utilisé pour l’automatisation est partagé. Si la liste est vide, vérifiez le répertoire de travail et la génération des dépendances ; si le scheme est invisible, contrôlez le partage du projet et la casse de son nom.
Identité de signature security find-identity -v -p codesigning L’identité de signature requise par la tâche est visible ; la sortie ne contient aucune ambiguïté due à des identités expirées ou à des doublons. Si l’identité manque, vérifiez le périmètre d’import, l’accès au trousseau et la correspondance avec le profil ; ne publiez jamais de clé privée ni de mot de passe.
Archivage et export Conserver xcodebuild : code de sortie, chemin d’archive et logs d’export. Le répertoire d’archive existe et le résultat d’export correspond à l’identifiant du commit et au numéro de tâche. Commencez le diagnostic au premier error du log ; distinguez les phases de compilation, signature, archivage et export, sans résumer tout l’échec par la dernière ligne.
RULE 01

Modifier une seule variable à la fois

Après avoir changé de réseau, conservez les paramètres d’affichage ; après avoir changé de Xcode, conservez le même commit source. Vous pourrez ainsi comparer les résultats.

RULE 02

Conserver la première erreur pertinente

Les erreurs suivantes sont souvent des conséquences en chaîne. Notez le premier bloc d’erreur, le code de sortie et la commande correspondante.

RULE 03

Expurger les logs avant de les partager

Supprimez les identifiants de l’hôte, les jetons, le contenu des clés privées et les chemins sensibles du projet, tout en conservant l’heure, le numéro de tâche et les versions des outils.

Si vous ne parvenez pas à localiser le problème, envoyez un compte rendu vérifiable de la tâche

Les utilisateurs existants peuvent se connecter à la console pour envoyer un ticket ; s’ils ne peuvent pas se connecter, écrivez à support@oakvm.com. Dans les deux cas, ne collez jamais d’identifiants de connexion sur une page publique.

SUPPORT PACKET 6 informations recommandées
01Région du nœud

Singapour, Japon (Tokyo), Corée du Sud (Séoul), Hong Kong, est des États-Unis ou ouest des États-Unis.

02Heure de l’incident

Indiquez la date, l’heure et le fuseau horaire afin d’aligner les logs du nœud.

03Identifiant de la tâche

Fournissez un identifiant permettant de retrouver la commande, l’instance ou la tâche CI.

04Étapes de reproduction

Énumérez le point d’accès, les commandes et la dernière étape réussie avant l’apparition du problème.

05Résultat attendu et réel

Décrivez séparément les résultats attendu et réel ; n’écrivez pas seulement « impossible à utiliser ».

06Logs expurgés

Conservez le contexte de l’erreur, le code de sortie et les versions ; supprimez les identifiants, jetons et clés privées.

Machine physique dédiée · Non virtuelle · Facturation en USD

Besoin d’un Mac dans le cloud connecté à votre pipeline existant ?

Choisissez OakVM M4 ou OakVM M4 Pro et configurez la durée de location dans six régions de nœuds disponibles. Toutes les régions fonctionnent 365 jours par an ; la disponibilité réelle est celle renvoyée en temps réel par la console.