Parcours de dépannage pour ingénieurs

Identifiez d’abord le problème, puis rétablissez votre Mac dans le cloud en quelques étapes.

De la première connexion SSH à la chaîne d’outils Xcode, aux exécuteurs CI/CD et au réseau du nœud, cette page fournit d’abord les commandes à vérifier, puis les critères d’analyse. Si le problème persiste, joignez le numéro de commande, le nœud, l’heure et des journaux désensibilisés à votre ticket.

Parcours prioritaire
Première connexion en 4 étapes
Périmètre des problèmes
6 catégories courantes
Assistance humaine
E-mail et tickets via la console
TABLEAU D’ASSISTANCE ONCEMAC Liste de contrôle du nœud
Prêt à commencer le diagnostic
A1
Vérifier les informations de connexion Adresse de l’hôte, nom d’utilisateur et fichier de clé
Connexion
B2
Vérifier la chaîne d’outils Xcode, chemin CLT et journaux de compilation
Compilation
C3
Vérifier les limites d’exécution Disque, réseau, processus et historique des redémarrages
Nœud
Supprimez les clés, jetons d’accès et adresses IP complètes avant l’envoi
Accès rapide

Trouvez la réponse par tâche, sans tout lire depuis le début.

Choisissez la connexion, Xcode, CI/CD, le stockage, le réseau ou le renouvellement pour afficher les ressources pertinentes. Vous pouvez aussi rechercher une commande, un symptôme ou un nom d’outil.

Les 6 catégories d’aide sont actuellement affichées.

Priorité aux débutants

Établissez votre première connexion SSH en quatre étapes.

Fiez-vous aux informations affichées dans la page de détails de l’instance de la console. Ne devinez pas l’adresse de l’hôte à partir d’anciens tickets ou de commandes historiques ; après une nouvelle mise à disposition du nœud, recopiez les informations actuelles.

  1. 01

    Copier les informations de connexion actuelles

    Ouvrez les détails de l’instance dans la console et copiez l’adresse de l’hôte, le nom d’utilisateur SSH, le port et les informations de clé. Vérifiez d’abord que la commande et le nœud sélectionnés correspondent, puis collez la commande dans votre terminal local.

  2. 02

    Enregistrer la clé privée dans un répertoire contrôlé

    Placez le fichier de clé dans un répertoire contrôlé par l’utilisateur local. Ne l’ajoutez ni à un dépôt Git, ni à un artefact de compilation, ni à une conversation d’équipe. Le nom du fichier est libre, mais le chemin utilisé ensuite doit correspondre.

  3. 03

    Restreindre les autorisations du fichier local

    Dans un terminal local macOS ou Linux, exécutez chmod 600 ~/.ssh/oncemac_key. Si SSH signale que les autorisations de la clé privée sont trop larges, corrigez-les d’abord au lieu de désactiver les contrôles de sécurité.

  4. 04

    Se connecter et vérifier l’identité du nœud

    Exécutez la commande SSH fournie par la console. Lors de la première connexion, vérifiez la source de l’empreinte de l’hôte ; une fois connecté au nœud, exécutez hostname,sw_vers et whoamipour confirmer l’hôte, le système et l’utilisateur actuel.

Ordre d’exécution des commandes

Validez d’abord la connexion et les versions, puis lancez la compilation complète.

Ne modifiez qu’une variable à la fois. Vérifiez d’abord la stabilité de la session SSH, lisez ensuite la version de Xcode, puis lancez la compilation avec son bundle de résultats et ses journaux. Vous pourrez ainsi distinguer un problème de connexion, de chaîne d’outils ou de projet.

  • Couche connexionAprès une connexion SSH réussie, notez le nom du nœud et l’utilisateur actuel.
  • Couche outilsVérifiez le Xcode actuellement utilisé et le répertoire développeur.
  • Couche projetConservez le scheme, le destination, le code de sortie et les journaux.
  • Couche automatisationN’incluez dans le ticket que des sorties fastlane désensibilisées.
once-node / build-diagnostics
SSH
$ ssh -i ~/.ssh/oncemac_key user@host
Last login: current session
connected: once-node

$ xcodebuild -version
Xcode 16.x
Build version 16x

$ xcode-select -p
/Applications/Xcode.app/Contents/Developer

$ set -o pipefail
$ xcodebuild \
  -workspace App.xcworkspace \
  -scheme App \
  -destination 'generic/platform=iOS' \
  -resultBundlePath ./BuildResults.xcresult \
  build | tee build.log

** BUILD SUCCEEDED **

$ bundle exec fastlane ios build
[fastlane] resolving dependencies
[fastlane] archive completed
[fastlane] lane finished successfully
Vérification de la chaîne d’outils

Décomposez les problèmes Xcode en version, chemin, signature et journaux.

« Cela fonctionne en local, mais pas sur le nœud » ne suffit généralement pas à identifier la cause. Comparez le même commit, le fichier de verrouillage des dépendances, le scheme, le destination et les variables d’environnement, puis confrontez les sorties des deux côtés.

XC-01

Vérifier la version de Xcode

Exécutez xcodebuild -version, notez la version principale et la Build version. Si le pipeline dépend d’une version précise, affichez-la au début de la tâche au lieu de la vérifier uniquement lors de la configuration initiale.

xcodebuild -version
xcrun --find simctl
swift --version
XC-02

Vérifier le répertoire développeur

Exécutez xcode-select -p pour vérifier le chemin actuel de Command Line Tools. Si plusieurs versions de Xcode sont utilisées, définissez explicitement DEVELOPER_DIRdans l’environnement de l’exécuteur afin d’éviter que la session interactive et la tâche automatisée utilisent des chemins différents.

xcode-select -p
echo "$DEVELOPER_DIR"
xcrun --sdk iphoneos --show-sdk-path
XC-03

Vérifier l’environnement de signature

Vérifiez d’abord que le trousseau est accessible et que le nom du certificat correspond aux conditions du provisioning profile, puis contrôlez le Team, le Bundle Identifier et le mode de signature du projet. Pour un ticket, fournissez uniquement l’extrait d’erreur désensibilisé, sans certificat, clé privée ni mot de passe.

security list-keychains
security find-identity -v -p codesigning
xcodebuild -showBuildSettings
XC-04

Exporter des journaux vérifiables

Avec set -o pipefail , conservez le véritable état de sortie et utilisez tee pour écrire les journaux. En cas d’échec complexe, générez de préférence un .xcresultet supprimez avant le partage les noms d’utilisateur, chemins, jetons et données métier.

set -o pipefail
xcodebuild build | tee build.log
echo "${PIPESTATUS[0]}"
Exécuteur d’automatisation

Avant d’intégrer la CI/CD, fixez l’identité d’exécution et le répertoire de travail.

OnceMac fournit des nœuds physiques dédiés et un environnement macOS complet en ligne de commande. Les fonctions propres à chaque plateforme, la compatibilité des plug-ins et la définition des tâches doivent être validées par votre équipe selon son dépôt et ses versions.

RUNNER / 01

Exécuteur auto-hébergé GitHub Actions

  • Vérifiez que l’utilisateur macOS du service de l’exécuteur est le même que celui utilisé pour le test SSH manuel.
  • Vérifiez l’emplacement d’enregistrement au niveau du dépôt, de l’organisation ou de l’entreprise afin d’éviter une affectation à des labels incorrects.
  • Attribuez au nœud des labels identifiables et utilisez explicitement la condition runs-on correspondante dans le workflow.
  • Vérifiez que le shell non interactif peut accéder au PATH, à Ruby, à Homebrew et au chemin de Xcode requis.
  • Avant les tâches concurrentes, vérifiez DerivedData, le cache du gestionnaire de paquets et l’espace disque disponible.
RUNNER / 02

GitLab Runner

  • Vérifiez le type d’executor, les labels du runner, les règles des branches protégées et les conditions d’affectation des tâches.
  • Vérifiez l’utilisateur, HOME et le contexte du trousseau du LaunchAgent ou du processus de service.
  • Au début de la tâche, affichez whoami,pwd, la version de Xcode et l’espace disque disponible.
  • La clé de cache doit inclure le fichier de verrouillage des dépendances ou la version de la chaîne d’outils afin d’éviter de réutiliser un cache incompatible.
  • En cas d’échec, conservez simultanément les journaux du job, le code de sortie et l’état du service runner.
RUNNER / 03

Nœud Jenkins

  • Vérifiez que le mode de démarrage de l’agent, le répertoire de travail et les labels du nœud respectent les conditions du Pipeline.
  • Vérifiez que l’utilisateur d’exécution Jenkins peut lire le dépôt, le répertoire de compilation et le trousseau requis.
  • Inscrivez la sélection de Xcode, l’installation des dépendances et la commande de compilation dans un Pipeline auditable.
  • Limitez le nombre d’exécuteurs concurrents sur un même nœud physique afin d’éviter la contention du disque et de la mémoire.
  • Avant l’archivage, notez la taille de l’espace de travail, le chemin du résultat de compilation et la stratégie de nettoyage.
Migration reproductible

Migrez les fichiers, pas un ancien environnement impossible à auditer.

Reconstruisez de préférence la chaîne d’outils à partir de Git, des fichiers de verrouillage et du Brewfile. Ne migrez que les répertoires de travail et caches réellement nécessaires. Copier tout l’environnement d’un ancien utilisateur transfère aussi les configurations obsolètes, les chemins absolus et les identifiants sensibles.

MANIFESTE DE MIGRATION Liste de migration de l’environnement
Code source Cloner avec Git et vérifier le hash du commit Ne copiez pas un ancien espace de travail contenant des secrets non validés
Outils système Restauration déclarative avec Brewfile Revérifier les versions et le PATH après la restauration
Fichiers du projet Transfert incrémentiel avec rsync Exclure explicitement les caches, journaux et répertoires d’identifiants
Cache de compilation Migrer sélectivement selon la version de la chaîne d’outils En cas de changement de version, privilégier la régénération

Migrer le répertoire de travail avec rsync

Utilisez d’abord le mode prévisualisation pour vérifier les éléments qui seront copiés et supprimés, puis lancez la synchronisation réelle. Toute suppression dans le chemin cible doit être confirmée par l’opérateur.

rsync -avhn \
  --exclude '.git' \
  --exclude 'DerivedData' \
  ./Project/ user@host:~/Project/

Figer l’état du code avec Git

Sur le nœud source, notez la branche, le hash du commit et les modifications non validées. Après le clonage sur le nouveau nœud, vérifiez le hash puis restaurez les dépendances ; ne remplacez pas l’historique des versions par une archive compressée.

git status --short
git rev-parse HEAD
git clone repository-url
git checkout commit-hash

Reconstruire les outils avec Brewfile

Examinez la liste avant l’export et supprimez les logiciels devenus inutiles. Après la restauration, vérifiez chaque version de commande : une installation terminée sans erreur ne garantit pas que l’environnement est opérationnel.

brew bundle dump --file Brewfile
brew bundle check --file Brewfile
brew bundle install --file Brewfile
Vérifier séparément les identifiants sensibles avant la migration

Les clés privées SSH, jetons de dépôt, éléments de signature, fichiers de variables d’environnement et clés de service ne doivent pas être copiés en masse avec le répertoire du projet. Après avoir confirmé les droits minimaux du nouveau nœud, reconfigurez-les via le processus sécurisé approuvé par votre équipe.

Parcours de dépannage le plus court

Écartez d’abord les conditions vérifiables, puis envoyez le contexte complet.

Traitez ces cinq catégories dans l’ordre suivant : confirmer le symptôme, exécuter la commande minimale, noter le résultat, puis arrêter toute modification inefficace. Ouvrez la catégorie correspondante pour consulter la liste de contrôle.

Impossible de se connecter Délai d’attente SSH, connexion refusée ou échec de l’authentification par clé
  1. Recopiez l’adresse de l’hôte, le port et le nom d’utilisateur depuis les détails de l’instance actuelle, sans utiliser les informations d’une ancienne commande.
  2. Exécutez chmod 600 pour vérifier les autorisations de la clé privée locale et confirmer que le chemin indiqué dans la commande existe.
  3. Utilisez ssh -vvv pour obtenir les détails de la phase de connexion, puis supprimez avant l’envoi du ticket les données personnelles présentes dans l’adresse complète, le nom d’utilisateur et le chemin de clé.
  4. Testez depuis un autre réseau fiable afin de distinguer une restriction de sortie locale d’un problème de connexion au nœud.
  5. Joignez au ticket le numéro de commande, le nœud, l’heure, le type d’erreur et la fin désensibilisée du débogage.
Échec de compilation xcodebuild, résolution des dépendances ou arrêt lors de la signature
  1. Notez le hash du commit, le scheme, le destination, la version de Xcode et le répertoire développeur.
  2. Distinguez clairement un échec de résolution des dépendances, de compilation, de test, de signature ou d’archivage.
  3. Utilisez set -o pipefail pour conserver le véritable code de sortie, puis exportez .xcresult ou les journaux complets.
  4. Ne mettez pas simultanément à niveau les dépendances, ne changez pas de Xcode et ne supprimez pas tous les caches ; ne modifiez qu’une variable à la fois.
  5. Joignez les journaux autour de la première erreur importante, après avoir supprimé les jetons du dépôt, les éléments de signature et les données métier.
Espace disque insuffisant Compilation interrompue, archivage échoué ou répertoire de travail qui continue de grossir
  1. Exécutez df -h pour afficher l’espace disponible sur les volumes, puis utilisez du -sh pour localiser l’espace de travail, DerivedData, les archives et les caches de dépendances.
  2. Vérifiez que les journaux, résultats de tests et anciens artefacts ont une durée de conservation définie ; ne supprimez pas directement tout le répertoire utilisateur.
  3. Avant le nettoyage, sauvegardez les artefacts de compilation qui doivent encore être téléchargés et vérifiez qu’aucune tâche en cours n’utilise ces répertoires.
  4. Si les besoins de capacité à long terme dépassent le SSD de base, évaluez l’option supplémentaire +1TB SSD ou +2TB SSD.
  5. Joignez au ticket un résumé de l’utilisation du disque, les répertoires en croissance et l’heure de la tâche échouée, sans téléverser les fichiers sources du projet.
Instabilité réseau SSH lent, échec du téléchargement des dépendances ou connexion instable au dépôt
  1. Décrivez séparément les symptômes entre votre réseau local et le nœud, puis entre le nœud et le dépôt ou la source de dépendances cible ; ne tirez pas une conclusion unique pour les deux liaisons.
  2. Lors d’un échantillonnage continu, notez le lieu du test, l’opérateur, le nœud, la commande et le nombre d’échantillons ; un seul ping ne reflète pas l’expérience dans la durée.
  3. Vérifiez la résolution DNS, les variables d’environnement du proxy, le dépôt distant Git et la source du gestionnaire de paquets selon la configuration de l’équipe.
  4. Effectuez une comparaison depuis un autre réseau local fiable afin de ne pas confondre le Wi-Fi local ou la politique de sortie avec une anomalie du nœud.
  5. Joignez au ticket la plage horaire, le type de cible, le taux d’échec et les sorties désensibilisées.
Redémarrage du nœud Session interrompue, service non rétabli ou exécuteur hors ligne
  1. Consultez d’abord l’état actuel du nœud dans la console ; n’envoyez pas de commandes d’alimentation répétées.
  2. Après le rétablissement de la connexion, exécutez uptimeet vérifiez si l’heure de démarrage correspond à l’heure du problème.
  3. Vérifiez le mode de démarrage et l’état actuel du service de l’exécuteur auto-hébergé, de GitLab Runner ou de l’agent Jenkins.
  4. Vérifiez l’intégrité de l’espace de travail et validez à nouveau les artefacts des tâches incomplètes ; ne réutilisez pas une archive dont l’état est incertain.
  5. Joignez au ticket le numéro de commande, le nœud, l’heure, les symptômes avant et après le redémarrage ainsi que les services à restaurer.
Assistance humaine

Fournissez suffisamment d’informations dès le premier message pour limiter les échanges.

Pour les commandes existantes, l’état du nœud et les problèmes de renouvellement, privilégiez un ticket via la console. Pour les questions de configuration et d’usage avant commande, envoyez un e-mail. L’adresse de contact externe est uniquement support@oncemac.com.

DOSSIER D’ASSISTANCE Informations à joindre au ticket
01

Commande et nœud

Indiquez le numéro de commande, le nom de la configuration et la région du nœud ; ne fournissez ni justificatif de paiement ni relevé complet.

02

Heure de l’incident

Indiquez le fuseau horaire, la première occurrence, la dernière reproduction et si le problème persiste.

03

Étapes de reproduction

Listez les commandes exécutées, le résultat attendu, le résultat réel et le code de sortie ; n’écrivez pas seulement « impossible à utiliser ».

04

Journaux désensibilisés

Conservez le contexte de l’erreur et supprimez les clés, jetons, mots de passe, adresses IP complètes, éléments de signature et données métier.

05

Vérifications effectuées

Indiquez les résultats déjà vérifiés concernant le réseau, les versions, les chemins, le disque et les nouvelles tentatives afin d’éviter de répéter des étapes inutiles.

Commande existante

Soumettre un ticket via la console

Pour les problèmes de connexion au nœud, de compilation, de facturation, de renouvellement et d’état de commande. Le ticket sera associé au compte connecté pour faciliter la vérification du contexte de l’instance.

Accéder à la console
Avant-vente et demandes générales

Envoyer un e-mail structuré

Précisez l’usage prévu, le nœud cible, la version de Xcode, le nombre de compilations concurrentes, le stockage nécessaire et la date de mise en service souhaitée.

support@oncemac.com
Nœud Mac mini physique dédié

Besoin d’un nouveau nœud ? Choisissez directement la configuration et la durée de location.

OnceMac propose 3 configurations disponibles et 6 nœuds, avec un fonctionnement normal 365 jours par an. Toutes les commandes sont réglées en dollars américains et gérées depuis la console.