De la première connexion à l’archive

Connectez-vous. Migrez. Compilez.

Ce guide couvre la première connexion, la migration d’environnement, la configuration de la CI et la restitution. Vérifiez d’abord l’accès au nœud avec une commande SSH, puis transférez votre code, vos certificats de signature et vos outils. Vous disposez d’un Mac physique dédié, non virtualisé, avec macOS et son interface graphique, ainsi que la ligne de commande.

Vous avez déjà commandé ? Vérifiez d’abord l’état de l’instance et les identifiants de connexion dans la console. Ne collez pas de mot de passe, de clé privée ni de certificat de signature dans des journaux publics.

Étape 1 · Vérifier la connexion

Commencez par vous connecter, puis migrez votre environnement.

Ouvrez la page de détails de l’instance dans la console et vérifiez l’adresse du nœud, le nom d’utilisateur, le port et le mot de passe initial. Remplacez l’adresse des commandes ci-dessous par la valeur réelle. Si le port diffère, utilisez celui indiqué dans les détails de l’instance.

SSH

Ligne de commande : première connexion interactive

Lors de la première connexion, vérifiez l’empreinte de l’hôte et ne l’acceptez que si elle correspond aux informations fiables de l’instance. Ne désactivez pas la vérification de la clé d’hôte pour éviter cet avertissement.

ssh admin@<node-address>

Si l’instance utilise un port SSH autre que le port par défaut, ajoutez -p <port> à la commande. Après la connexion, lancez les commandes ci-dessous pour vérifier l’utilisateur actif, la version du système et l’espace disque disponible.

whoami
sw_vers
df -h
passwd

passwd modifie de manière interactive le mot de passe de l’utilisateur actuel. Générez ensuite une clé ed25519 distincte sur votre machine locale et ajoutez la clé publique au fichier ~/.ssh/authorized_keys du nœud. Conservez la clé privée uniquement sur votre appareil ou dans un coffre de clés sécurisé.

ssh-keygen -t ed25519
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Exécutez les commandes de permissions sur le nœud. Vérifiez la connexion par clé depuis un second terminal avant d’ajuster les paramètres de connexion par mot de passe selon la politique de sécurité de votre équipe. Évitez de vous bloquer l’accès à la machine.

Vérification : connexion par clé depuis un nouveau terminal
VNC

Interface graphique : configuration interactive

Pour utiliser le trousseau, vérifier les réglages de Xcode ou consulter le simulateur, connectez-vous avec les informations de partage d’écran fournies dans les détails de l’instance. L’adresse et le port de connexion peuvent différer de ceux de SSH : ne les devinez pas.

  1. Vérifiez que l’instance est prête, puis consultez dans la console l’adresse, le port et les informations de connexion au partage d’écran.
  2. Sur votre Mac, connectez-vous avec l’app Partage d’écran et les identifiants fournis.
  3. À la première ouverture du bureau, modifiez le mot de passe initial et vérifiez que le trousseau de session se déverrouille correctement.
  4. Ouvrez la version de Xcode souhaitée, acceptez les conditions d’utilisation et installez les composants nécessaires. Revenez ensuite à la ligne de commande pour effectuer les vérifications.
xcode-select -p
xcodebuild -version

Si vous accédez au partage d’écran via un tunnel SSH, configurez les ports local et distant selon les paramètres réels de l’instance. Limitez l’accès aux sources nécessaires et n’exposez pas directement le port graphique à tout le monde.

Un écran noir ne signifie pas forcément que le nœud est hors ligne. Vérifiez d’abord l’accès à la machine par SSH, puis contrôlez la session graphique, les droits du compte et le port de connexion. Évitez de réinitialiser le système à répétition.

Vérification : bureau accessible, bonne version de Xcode
Étape 2 · Migrer dans le bon ordre

Mac local → Mac cloud.

Procédez dans cet ordre : données, outils, CI. Commencez par migrer un projet que vous pouvez vérifier indépendamment, sans copier d’emblée tout le dossier utilisateur. Les durées indiquées sont des estimations : la taille du dépôt, le réseau et le téléchargement des dépendances peuvent modifier le temps nécessaire.

01 / Données

Commencez par le code et la signature

Clonez le dépôt Git et placez-vous sur le même commit que sur votre machine locale. Pour un dépôt privé, utilisez une clé de déploiement aux droits limités ou un jeton à durée limitée. N’inscrivez pas d’identifiants permanents dans l’URL du dépôt.

git clone <repository-url>
git rev-parse HEAD
rsync -av --progress ./Assets/ \
  admin@<node-address>:~/work/Assets/

Pour signer, exportez depuis le trousseau local un fichier .p12 contenant la clé privée. Chiffrez le transfert avec un mot de passe distinct, puis importez le fichier dans le trousseau du nœud. Migrez séparément le profil de provisionnement et vérifiez l’expiration du certificat, l’équipe et la configuration cible.

Pour les ressources volumineuses, utilisez la synchronisation incrémentielle de rsync. N’ajoutez pas d’option de suppression lors du premier transfert. Vérifiez d’abord le dossier cible pour éviter d’effacer des fichiers déjà générés sur le nœud.

Prévoir 3 à 10 min · hors transfert des gros fichiers
02 / Outils

Restaurez les versions, pas le cache

Exportez un Brewfile sur votre machine locale, transférez-le sur le nœud, puis restaurez les dépendances. Parcourez d’abord la liste et supprimez les applications de bureau inutiles ainsi que les dépendances obsolètes pour réduire le volume à télécharger.

brew bundle dump --file=Brewfile
brew bundle --file=Brewfile
xcodes list
xcodes install <version-required>

Vérifiez les versions de Xcode, Ruby et CocoaPods requises par le projet. Pour installer une version avec xcodes, respectez les conditions de licence du logiciel et les autorisations de téléchargement. Une fois l’installation terminée, exécutez xcodebuild -version pour vérifier la version effectivement sélectionnée.

Si le projet contient un Gemfile, privilégiez bundle exec pod install. SPM résout les dépendances à partir du fichier de verrouillage fourni avec le projet. Considérez la première compilation comme un préchauffage du cache, et non comme une indication de la vitesse des compilations suivantes.

Prévoir 5 à 15 min · téléchargements en supplément
03 / Configuration de la CI

Validez d’abord une compilation manuelle, puis enregistrez l’agent

Effectuez d’abord une compilation et une signature dans une session interactive. Une fois l’archive générée en ligne de commande, enregistrez le runner self-hosted de GitHub Actions ou GitLab Runner. Vous éviterez ainsi de devoir dépanner en même temps les outils et la configuration du pipeline.

bundle exec fastlane match development --readonly
bundle exec fastlane gym

Le type de signature de match et le lane utilisé dépendent de la configuration du projet. Pour la CI, utilisez des identifiants aux droits limités et stockez les clés dans des variables protégées ou un coffre de clés. N’inscrivez pas de mots de passe dans les scripts.

Attribuez un libellé distinct à l’agent temporaire et autorisez d’abord uniquement les branches de confiance. Vérifiez que le compte d’exécution peut accéder au trousseau de signature et au répertoire de travail. Assurez-vous aussi qu’une compilation non interactive ne reste pas bloquée par une boîte de dialogue.

Prévoir 3 à 8 min · pipeline existant requis

La migration est terminée lorsque :le même commit, la même version de Xcode et les mêmes fichiers de verrouillage des dépendances permettent de générer sur le nœud une archive récupérable. Ne considérez pas la migration de l’environnement comme terminée sur la seule base d’une installation réussie des dépendances.

Mise en service · environ 4 min

Bloqué ? Reprenez l’étape concernée.

Il faut généralement environ 4 minutes entre la commande et la disponibilité du nœud, sans compter le transfert de votre code, le téléchargement des outils ni la première compilation. Fiez-vous aux informations de progression affichées dans la console pour le paiement, l’attribution et la mise à disposition.

  1. 01

    Vérifier la configuration de la commande

    Environ 40 s

    Choisissez le modèle, la durée de location et le nœud, puis vérifiez les options supplémentaires et le montant total. En cas de blocage, contrôlez les champs obligatoires et les messages d’erreur affichés. Ne créez pas une deuxième commande identique.

  2. 02

    Payer en dollars américains

    Environ 60 s

    Paiement en USDT-TRC20 ou par Visa, Mastercard ou Amex via Stripe uniquement ; facturation en USD. En cas de blocage, vérifiez l’état de la facture. La confirmation sur la blockchain et la validation par l’émetteur de la carte peuvent prolonger l’attente.

  3. 03

    Attendre l’initialisation du nœud

    Environ 2 min

    Une fois le paiement confirmé, l’attribution d’un nœud physique dédié commence. En cas de blocage, consultez l’état de l’instance et les messages système. Si la facture est réglée mais que l’état reste inchangé longtemps, gardez votre numéro de commande et ouvrez un ticket d’assistance.

  4. 04

    Consulter l’avis de mise à disposition

    E-mail d’accès / console

    Vérifiez votre boîte de réception et le dossier des courriers indésirables, puis comparez les informations de connexion avec celles de la console. Ne répondez pas à un e-mail inconnu avec votre mot de passe. Si vous ne recevez pas l’avis, vérifiez d’abord que l’instance est prête.

  5. 05

    Vérifier la première connexion

    Environ 20 s

    Connectez-vous d’abord en SSH, puis vérifiez l’interface graphique. En cas de blocage, notez le message d’erreur complet, l’heure et le fuseau horaire. Utilisez la liste de dépannage ci-dessous pour distinguer un problème réseau, d’authentification ou de session.

Avant la restitution · sauvegardez vos données

La machine sera restituée.
Récupérez vos fichiers.

Le renouvellement automatique n’est pas activé à l’échéance. Pour continuer à utiliser la machine, renouvelez la location manuellement dans la console avant la date d’expiration et vérifiez que l’opération a bien été prise en compte. Ne partez pas du principe qu’une compilation en cours prolongera la location.

Après restitution, le disque est effacé de manière sécurisée : le nœud ne sert pas de sauvegarde à long terme. Copiez votre dernière archive, vos symboles de débogage et les journaux nécessaires dans un espace de stockage sécurisé sous votre contrôle, puis vérifiez que les fichiers sont lisibles. Supprimer des fichiers localement ne révoque pas les accès à distance.

Effectuez ces 4 étapes avant la restitution

  1. Exportez les artefacts de compilation.Récupérez le fichier .xcarchive, le .ipa, les dSYM et les journaux de compilation nécessaires. Vérifiez que l’envoi ou le téléchargement est terminé.
  2. Désenregistrez l’agent temporaire.Supprimez l’enregistrement du runner sur la plateforme CI, arrêtez le processus de l’agent local et révoquez les clés de déploiement ainsi que les jetons d’accès temporaires.
  3. Supprimez les éléments de signature.Supprimez la clé privée du certificat importé, le profil de provisionnement et les configurations temporaires. Vérifiez que les journaux du pipeline ne contiennent aucune clé ni aucun mot de passe.
  4. Vérifiez l’échéance et les sauvegardes.Vérifiez la date d’expiration et le fuseau horaire affichés dans la console. Prévoyez une marge pour la dernière compilation et le transfert des artefacts.

En équipe, désignez une personne responsable de la vérification finale avant restitution. Ne faites pas de l’hypothèse qu’un collègue a téléchargé les fichiers votre seule stratégie de sauvegarde.

Cas d’usage courants · configuration minimale

Validez d’abord un parcours, puis passez au pipeline.

Les deux modèles sont des Mac physiques dédiés avec puce M4 : SDK Pack 16 offre 16 Go / 256 Go et SDK Pack 24, 24 Go / 512 Go. Choisissez la mémoire et le stockage selon les besoins réels du projet, sans multiplier les tâches parallèles lors de la première validation.

Compilation automatisée d’apps

Vérifiez d’abord que le scheme est partagé, que la configuration de signature est correcte et que le trousseau est accessible. Si le projet contient un Gemfile, utilisez Bundler pour fixer la version de Fastlane, puis générez l’archive.

bundle install
bundle exec fastlane gym
bundle exec fastlane pilot upload \
  --ipa ./build/App.ipa

Remplacez les chemins d’exemple par ceux de vos artefacts. Avant l’envoi avec pilot, configurez la clé API de distribution utilisée par le projet et stockez-la dans une variable CI protégée. Les autorisations d’envoi et la réussite de la compilation sont deux vérifications distinctes.

Vérification : archive récupérable, résultat d’envoi disponible

Développement sur Mac à distance

Vérifiez d’abord une connexion SSH standard, puis configurez VS Code Remote-SSH pour réutiliser les mêmes paramètres de connexion. Si la connexion de l’éditeur échoue, consultez d’abord les journaux de l’extension distante au lieu de modifier directement les autorisations du système.

Host sdk-build
  HostName <node-address>
  User admin
  IdentityFile ~/.ssh/id_ed25519
  ServerAliveInterval 30

Enregistrez la configuration sur votre Mac local dans ~/.ssh/config. Après la connexion, vérifiez sur quelle machine se trouve le terminal ainsi que le répertoire de travail. Utilisez le partage d’écran pour le simulateur et le débogage graphique ; SSH suffit pour modifier le code et utiliser Git.

Vérification : édition et compilation dans le même espace de travail

Rendu GPU et inférence MLX

Vérifiez d’abord que la tâche est compatible avec Apple Silicon et le backend graphique requis, puis créez un environnement Python isolé. Prévoyez suffisamment d’espace pour les poids du modèle, la mémoire de l’application et les résultats intermédiaires.

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install mlx
python -c "import mlx.core as mx; print(mx.default_device())"

Commencez par un petit jeu de données pour vérifier les dépendances et le périphérique sélectionné. Augmentez ensuite progressivement la résolution, la taille des lots ou la longueur du contexte. Notez la version de l’application et les paramètres utilisés. La compatibilité d’un modèle dépend de la taille de ses poids et de la mémoire réellement disponible.

Vérification : tâche légère terminée, ressources maîtrisées
Dépannage · ne changez qu’un paramètre à la fois

Identifiez correctement l’origine de l’erreur.

Enregistrez d’abord l’erreur d’origine, puis effectuez des changements. Les quatre catégories ci-dessous concernent le réseau, la session graphique, les droits de signature et le stockage. Réinstaller l’environnement n’est généralement pas la première solution.

Délai d’attente ou échec d’authentification SSH

Délai d’attente :Vérifiez l’adresse, le port, l’état de l’instance et les restrictions de votre réseau local. Utilisez ssh -v pour déterminer si le blocage survient pendant la connexion ou l’authentification.

Échec d’authentification :Vérifiez le nom d’utilisateur, le chemin de la clé et les permissions de authorized_keys. Si l’empreinte a changé, vérifiez d’abord si le nœud a été remis à disposition. Ne supprimez pas directement l’entrée de l’hôte de confiance.

À joindre au ticket : message d’erreur d’origine, port et heure de l’incident

Écran noir dans le partage d’écran

Vérifiez d’abord l’accès au nœud par SSH, puis contrôlez le port de partage d’écran et le compte utilisé. Vérifiez qu’aucune tâche d’initialisation n’est encore en cours et que votre client local n’utilise pas simplement une ancienne connexion enregistrée.

Fermez le client, puis reconnectez-vous. Si vous utilisez un tunnel, vérifiez que le processus de redirection des ports est toujours actif. Ne redémarrez pas la machine à répétition avant d’avoir récupéré vos artefacts.

À joindre au ticket : version du client et capture d’écran expurgée

Une fenêtre du trousseau bloque la CI

Dans une session graphique, vérifiez que la clé privée de signature a bien été importée et que le certificat est valide. Assurez-vous que le runner utilise le même compte que celui qui a configuré l’environnement de signature.

Utilisez un trousseau dédié à la CI et configurez son déverrouillage ainsi que ses autorisations d’accès selon la politique de votre équipe. Lancez d’abord une compilation non interactive de vérification. N’écrivez pas le mot de passe du trousseau dans les journaux.

À joindre au ticket : étape d’échec et code d’erreur de signature

Espace disque insuffisant

Exécutez d’abord df -h puis vérifiez DerivedData, les archives, les données des simulateurs et les images de conteneurs. Supprimez uniquement les caches dont la recréation est confirmée comme possible. Conservez les archives et les symboles de débogage qui n’ont pas encore été exportés.

Si votre projet et ses ressources dépassent durablement l’espace disponible, choisissez un stockage SSD supplémentaire de +1TB ou +2TB lors de la commande. Pour modifier une instance existante, vérifiez les options par ticket d’assistance et ne partez pas du principe que l’espace supplémentaire sera disponible immédiatement.

À joindre au ticket : espace disponible et répartition des dossiers volumineux
Pour aller plus loin · choisissez un sujet

Approfondissez le sujet dans nos articles techniques.

Cette page présente toutes les étapes, de la connexion à la restitution. Pour des explications détaillées sur les conteneurs, la migration des dépendances, les connexions sécurisées et le choix d’une formule de location, consultez le répertoire des articles techniques. Référez-vous aux articles effectivement publiés dans ce répertoire.

Commencez par cerner le problème

Outils :Installer ne suffit pas pour compiler. Notez les versions de Xcode et du gestionnaire de dépendances ainsi que les fichiers de verrouillage. Comparez en priorité les versions utilisées en local et sur le nœud.

Sécurité :Une connexion réussie ne garantit pas que les autorisations soient correctes. Utilisez une clé distincte et un jeton aux droits limités pour un nœud temporaire. Lors de la restitution, révoquez son enregistrement et ne réutilisez pas vos identifiants personnels permanents.

Choix du modèle :Une première réussite ne garantit pas une bonne adaptation à long terme. Surveillez les pics de mémoire, l’évolution de l’espace disque et le nombre de tâches simultanées avant de choisir le modèle et la durée de location.

Besoin de l’aide d’un ingénieur ?

Gardez les détails de l’incident ;
nous commencerons par analyser l’erreur.

Pour un problème sur une instance en location, connectez-vous à la console et ouvrez un ticket en indiquant le numéro de commande, le nœud, la date, l’heure et le fuseau horaire, les étapes de reproduction ainsi que les journaux expurgés. Pour toute question avant commande ou en cas d’impossibilité de connexion, vous pouvez également écrire à support@macsdk.com.

Le délai de réponse est celui indiqué dans le ticket, selon son état de prise en charge et de suivi. Un accusé de réception automatique ne constitue pas une réponse de notre équipe. Si le problème interrompt une compilation, précisez son impact dans l’objet et conservez les éléments utiles au diagnostic. Ne joignez ni clé privée, ni mot de passe, ni fichier de signature complet.