Démarrage et livraison
Suivez l’avancement après le paiement, récupérez vos identifiants et vérifiez l’état de la commande et les informations de connexion.
Vérifier la livraisonLivraison : vérifiez la commande. Connexion : vérifiez le port. Build : commencez par consulter les journaux. Recherchez un mot-clé pour trouver des vérifications à effectuer.
Saisissez un mot-clé pour afficher les résultats. Après la recherche, appuyez sur Entrée pour accéder à la première réponse.
Pour un problème sur une machine déjà livrée, ajoutez les informations au ticket existant afin de faciliter le suivi.
Les problèmes se répartissent en quatre catégories. Vérifiez d’abord que la machine est accessible, puis contrôlez les outils et la signature afin de ne pas confondre un problème réseau avec un échec de build.
Suivez l’avancement après le paiement, récupérez vos identifiants et vérifiez l’état de la commande et les informations de connexion.
Vérifier la livraisonDépannez séparément les délais d’attente SSH, les clés publiques refusées et les échecs de connexion au bureau distant.
Dépanner la connexionDes journaux d’archive aux profils de provisioning, distinguez les étapes de compilation, d’archivage et d’exportation.
Dépanner build et signatureVérifiez les tarifs par jour, semaine, mois et trimestre, ainsi que les options de renouvellement et l’état du paiement.
Vérifier la facturationLe paiement, le traitement de la commande et la livraison de la machine sont des étapes distinctes. Après le paiement, vérifiez d’abord la commande : la page de paiement ne suffit pas à confirmer que la machine est accessible.
Dans le portail, vérifiez le numéro de commande, le modèle, la durée de location et l’état du paiement. Un virement on-chain ou un paiement par carte soumis ne signifie pas que le statut de la commande a déjà été mis à jour.
Ouvrez la commande ou les détails de l’instance correspondante pour consulter l’avancement. Le délai de livraison et la disponibilité effective sont ceux indiqués en temps réel dans le portail.
Après la livraison, consultez dans les détails de l’instance l’adresse de l’hôte, le nom d’utilisateur, le port SSH et les informations de première connexion. Utilisez les champs affichés pour cette instance, sans reprendre ceux d’une autre commande.
Vérifiez d’abord que vous consultez la commande liée à ce paiement, puis contrôlez son statut dans le portail. Si le paiement est confirmé mais que l’instance est toujours en cours de traitement, indiquez dans le ticket le numéro de commande, le mode de paiement, la référence du justificatif et le statut actuel. L’assistance pourra ainsi vérifier l’étape de livraison concernée.
Pour un paiement USDT-TRC20, conservez le hash de transaction. Pour un paiement par carte, gardez la référence de paiement. N’envoyez ni numéro de carte complet, ni cryptogramme, ni mot de passe du portail. Ne créez pas de nouvelle commande pour un paiement déjà effectué.
Délai d’attente de connexion : vérifiez d’abord que l’instance a été livrée et qu’elle est accessible, puis contrôlez l’adresse de l’hôte et le port caractère par caractère. Vérifiez également votre réseau local, votre proxy et les règles d’accès. Le délai d’attente survient avant l’authentification ; changer plusieurs fois de clé publique ne résout généralement pas un problème de réseau.
Permission denied (publickey) : vérifiez le nom d’utilisateur, la clé privée utilisée et la clé publique enregistrée dans le portail. Le fichier à fournir contient la clé publique ; gardez la clé privée sur votre machine et ne l’envoyez pas à l’assistance. Remplacez HOST, PORT et USER ci-dessous par les valeurs indiquées dans les détails de l’instance.
ssh -vv -o IdentitiesOnly=yes \
-i ~/.ssh/id_ed25519 \
-p PORT USER@HOST
Avant de transmettre la sortie de diagnostic, masquez l’adresse de l’hôte, les chemins personnels et les autres informations sensibles. Conservez le type d’erreur et l’étape d’authentification. Si l’empreinte de l’hôte a changé, vérifiez d’abord si le système vient d’être réinstallé ; ne désactivez pas directement la vérification de l’empreinte.
Vérifiez les informations de connexion au bureau indiquées dans les détails de l’instance et assurez-vous qu’il s’agit de la bonne machine. Le bureau distant et SSH empruntent des chemins de connexion distincts : une connexion SSH réussie confirme uniquement que le chemin SSH est accessible.
Suivez les instructions de connexion pour vérifier le service de bureau, le port d’accès et la destination du tunnel. En cas d’écran noir, notez le message du client et les étapes suivies, puis essayez de réduire la résolution ou la qualité d’image pour distinguer un problème d’affichage d’un échec d’authentification. Avant tout redémarrage, arrêtez les tâches d’archivage ou de test en cours.
Consultez le guide SSH et accès à distance pour les paramètres de connexion et l’ordre des étapes. L’accès au bureau se trouve dans les détails de l’instance après connexion.
Conservez d’abord les éléments utiles au diagnostic, puis vérifiez Xcode, le Scheme, les dépendances et la plateforme cible. Le récapitulatif d’échec à la fin du journal n’est que le résultat : commencez par la première erreur de compilation ou de signature.
Notez le commit actuel, la commande de build et la version de Xcode. Vérifiez que le Scheme existe et qu’il est configuré pour l’archivage. Pour les tâches en ligne de commande, contrôlez également le répertoire des outils de développement sélectionné afin d’éviter d’ouvrir une version dans l’interface et d’en utiliser une autre en CI.
xcode-select -p
xcodebuild -version
xcodebuild -list -workspace App.xcworkspace
Remplacez App.xcworkspace et App par les noms réels du projet. Si le projet utilise un workspace, ne passez pas un project par erreur. Des dépendances non restaurées, un Scheme partagé non validé dans le dépôt ou une cible de déploiement incompatible avec le SDK peuvent provoquer un échec avant même l’archivage.
set -o pipefail
xcodebuild \
-workspace App.xcworkspace \
-scheme App \
-destination 'generic/platform=iOS' \
-archivePath "$PWD/output/App.xcarchive" \
archive 2>&1 | tee archive.log
Cette commande génère un fichier .xcarchive, pas un IPA distribuable. Si l’archive réussit mais que l’export échoue, vérifiez la signature et le profil de provisioning au lieu de reprendre le traitement de toutes les dépendances de compilation.
Vérifiez si le cache est en cause après un changement de toolchain entraînant une incompatibilité de modules ou des fichiers générés incohérents, ou si le même commit passe dans un environnement vierge mais échoue avec l’ancien cache. Arrêtez d’abord les builds du projet et enregistrez les journaux. Ne prenez pas tout le répertoire utilisateur comme cible de nettoyage.
Pour un test plus sûr, indiquez un nouveau répertoire dédié au projet pour ce build. Conservez l’ancien pour pouvoir le consulter. Si le nouvel emplacement échoue aussi, recherchez plutôt la cause dans le code source, les dépendances ou la configuration que de vider le cache à répétition.
xcodebuild \
-workspace App.xcworkspace \
-scheme App \
-derivedDataPath "$PWD/.build/DerivedData-check" \
-destination 'generic/platform=iOS' \
build
Une fois le build rétabli, vérifiez au niveau du projet quels anciens répertoires peuvent être supprimés. Séparez le code source, les fichiers de signature, les archives et DerivedData pour limiter les risques de suppression accidentelle.
Déterminez d’abord si la tâche concerne l’archivage pour un appareil ou des tests sur simulateur. Une archive destinée à un appareil utilise une destination iOS ; les tests sur simulateur nécessitent un runtime et un appareil pris en charge par la version actuelle de Xcode. N’utilisez pas une destination de simulateur pour une archive de distribution.
xcrun simctl list runtimes
xcrun simctl list devices available
xcodebuild -showdestinations \
-workspace App.xcworkspace -scheme App
Si le runtime manque, installez le composant de plateforme correspondant dans les réglages de Xcode. Les versions de Xcode compatibles avec cette commande permettent également de télécharger les composants de plateforme iOS ci-dessous. Vérifiez d’abord l’espace disque disponible et assurez-vous que la version de Xcode sélectionnée en ligne de commande est bien celle que vous comptez utiliser.
xcodebuild -downloadPlatform iOS
Après l’installation, affichez de nouveau les destinations et indiquez à la CI une destination réellement disponible. Ne réutilisez pas indéfiniment l’identifiant d’un simulateur provenant d’une autre machine.
Le fichier .p12 contient le certificat et la clé privée, le profil de provisioning définit les applications et capacités autorisées, et la clé API sert à autoriser certaines interfaces. Ces éléments ne sont pas interchangeables.
Transférez le .p12 vers la machine par un canal sécurisé, importez-le dans un trousseau utilisé pour le build et vérifiez que le fichier contient la clé privée associée. Un certificat sans clé privée ne permet pas de signer le code. Fournissez le mot de passe d’importation via une variable secrète de la CI ; ne l’inscrivez ni dans le dépôt, ni dans un script de commande, ni dans un ticket.
security find-identity -v -p codesigning
Effectuez cette vérification dans l’environnement utilisateur qui exécute réellement le runner. Le fait que le certificat soit visible pour l’utilisateur du bureau ne signifie pas qu’il le soit aussi pour un autre compte de service. Vérifiez également que le trousseau est déverrouillé, qu’il figure dans la liste de recherche de cet utilisateur et que le processus de signature dispose des autorisations nécessaires.
Utilisez un trousseau dédié aux builds et verrouillez-le conformément à votre procédure une fois la tâche terminée. Si vous demandez de l’aide, fournissez uniquement le résultat expurgé de la vérification d’identité et le texte de l’erreur ; n’envoyez ni .p12, ni clé privée, ni mot de passe d’importation.
Vérifiez la cohérence de ces quatre éléments : Bundle ID, Team ID, usage prévu pour l’export et entitlements. Pour une app avec des extensions, chaque Target à signer doit avoir sa propre configuration correspondante. La configuration de l’app principale ne garantit pas celle des extensions.
Vérifiez ensuite que le profil est valide, qu’il inclut le certificat utilisé et que la méthode de signature sélectionnée pour l’export correspond au projet. Les réglages pour les tests de développement diffèrent de ceux d’une distribution ; ne choisissez pas un profil en vous fiant uniquement à son nom.
Conservez les journaux de l’étape d’exportation et une copie expurgée de ExportOptions.plist. Dans votre ticket, précisez si l’échec survient pendant archive ou exportArchive pour réduire immédiatement le périmètre du diagnostic.
Enregistrez le fichier .p8 dans un répertoire à accès restreint et fournissez le Key ID, l’Issuer ID et le chemin du fichier via des variables secrètes de la CI. Accordez uniquement les autorisations nécessaires aux tâches d’envoi ou d’automatisation ; ne copiez pas directement le contenu de la clé dans un lane et ne le validez pas dans le dépôt.
Une clé API peut servir aux procédures d’envoi et de gestion qui prennent en charge cette méthode d’authentification, mais elle ne remplace pas la clé privée du certificat requise pour signer localement le code. En cas d’échec d’envoi vers TestFlight, distinguez une erreur de signature de l’artefact local d’un problème d’authentification à l’API, d’autorisation sur l’app ou de version.
Après une rotation de clé, mettez à jour la configuration du runner et supprimez les anciennes références. Pour obtenir de l’aide, indiquez le code d’erreur expurgé et l’étape concernée ; n’envoyez pas le fichier .p8.
Vérifiez les droits de lecture du dépôt de signature, la phrase secrète de déchiffrement, le type de distribution, l’identifiant de l’app et la configuration de l’équipe. En CI, privilégiez le téléchargement en lecture seule des éléments de signature déjà préparés afin d’éviter toute tentative de création ou de modification de certificats à chaque exécution.
lane :prepare_signing do
match(
type: "appstore",
readonly: true,
app_identifier: ENV.fetch("APP_IDENTIFIER"),
team_id: ENV.fetch("TEAM_ID")
)
end
Gérez séparément les identifiants d’accès au dépôt et la phrase secrète de déchiffrement. En cas d’échec de lecture, vérifiez l’authentification au dépôt ; en cas d’échec de déchiffrement, vérifiez la phrase secrète. Si l’installation réussit mais que la signature échoue, contrôlez le trousseau et le profil de provisioning. Ne regroupez pas ces trois problèmes sous la seule mention « match ne fonctionne pas ».
Les tarifs par jour, semaine, mois et trimestre sont définis séparément ; le prix journalier ne sert pas à calculer directement les autres durées. Les deux modèles sont des Mac physiques dédiés, et non des machines virtuelles. Le montant exact figure dans le récapitulatif de commande.
| Modèle et configuration | Jour | Semaine | Mois | Trimestre |
|---|---|---|---|---|
| OSXBuild Bake M4 M4 / 16GB / 256GB | $20.1 | $54.2 | $100.3 | $272.8 |
| OSXBuild Bake M4 Pro M4 Pro / 64GB / 2TB | $60.3 | $162.9 | $301.6 | $820.4 |
Choisissez la durée en fonction du temps d’utilisation continu prévu, puis vérifiez le tarif du modèle et des options pour cette même durée. Les dates et heures exactes de début et de fin figurent sur la commande. Une location d’un mois ne correspond pas simplement au nombre de jours restants dans un mois civil.
Les SSD supplémentaires et Thunderbolt 5 disposent chacun de tarifs catalogue pour les quatre durées. Sélectionnez les options souhaitées dans le configurateur, puis consultez le récapitulatif avant le paiement. Ne déduisez pas le montant final du seul prix du modèle de base. Retrouvez le catalogue complet et les conseils de sélection dans les offres de location et options.
Connectez-vous au portail, ouvrez l’abonnement ou la commande concernée et vérifiez la date d’expiration, les options de renouvellement disponibles et la facture. Après le paiement, confirmez que la nouvelle date d’expiration est bien enregistrée. L’ouverture de la page de paiement ou la soumission du paiement ne signifie pas que le renouvellement a été pris en compte.
Le renouvellement automatique et les éventuelles factures impayées dépendent des paramètres et du statut affichés pour cette commande. Si vous souhaitez continuer à utiliser la machine, renouvelez-la suffisamment tôt et vérifiez le résultat. Si vous mettez fin à la location, exportez à l’avance le code source, les artefacts et les paramètres nécessaires.
À la fin de la période de location, la machine entre dans le processus de récupération, puis le disque est effacé de façon sécurisée et le système réinstallé. Ne faites pas du nœud votre seule sauvegarde et ne comptez pas récupérer vos fichiers locaux après l’échéance.
Seuls USDT-TRC20 et Visa / Mastercard / Amex (via Stripe) sont acceptés. Tous les paiements sont facturés en dollars américains (USD). Les moyens de paiement effectivement disponibles sont ceux indiqués par la réponse de l’interface côté serveur.
Pour un paiement USDT-TRC20, vérifiez le réseau, l’adresse de réception et le montant affichés au paiement ; ne réutilisez pas les informations d’une ancienne commande. Pour un paiement par carte, suivez les étapes de vérification de la passerelle, puis retournez dans le portail pour confirmer le statut.
En cas de problème de paiement, indiquez le numéro de commande, le moyen choisi, le message expurgé et la référence de transaction. Le traitement des cartes est assuré par Stripe ; ni le ticket ni l’e-mail ne nécessitent votre numéro de carte complet ou votre cryptogramme.
Des étapes permettant de reproduire le problème sont plus utiles qu’un simple « échec du build ». Si une tâche est en cours, sauvegardez d’abord les éléments utiles avant de redémarrer ou de modifier la configuration.
Arrêtez d’abord le build et les tests, puis enregistrez les journaux et les fichiers non validés avant de redémarrer la machine. Notez ce qui se passe avant et après le redémarrage. Si la tâche ne peut pas être interrompue, indiquez dans le ticket que vous n’avez pas redémarré et pourquoi.
Comparez l’hôte, le nom d’utilisateur, le port et la paire de clés avec les informations de l’instance actuelle. Indiquez le texte exact de l’erreur ; ne téléversez pas la clé privée et n’envoyez pas le mot de passe de première connexion.
Joignez les 50 dernières lignes et le contexte de la première erreur pertinente. Indiquez la commande, la version de Xcode et l’identifiant du commit. Si le journal est long, joignez-le au ticket via le portail après avoir supprimé les jetons et secrets de signature.
Précisez le numéro de commande, le nœud, la date et le fuseau horaire du problème, ainsi que le résultat attendu et le résultat obtenu. Indiquez également quand la machine a fonctionné normalement pour la dernière fois, afin d’éviter les demandes répétées d’informations de base.
Cette commande affiche les dernières lignes sans modifier les artefacts du build :
tail -n 50 archive.log
Ne joignez jamais de clé privée de certificat, de mot de passe .p12, de fichier .p8, de jeton d’accès ni de mot de passe du portail à vos éléments de support.
Pour une commande existante ou un problème sur une machine, connectez-vous au portail et ouvrez un ticket. Pour une demande avant-vente, un problème de connexion ou pour nous communiquer des coordonnées, écrivez à support@osxbuild.com.
Les demandes sont prises en charge selon les fuseaux horaires de l’Asie-Pacifique et de l’ouest des États-Unis. Le suivi des réponses se fait par ticket ou par e-mail. Indiquez votre fuseau horaire et les plages durant lesquelles vous pouvez participer au diagnostic, puis ajoutez les nouveaux résultats au ticket existant.
La page de contact précise les informations à préparer selon le type de demande. Les machines fonctionnent toute l’année, 365 jours sur 365 ; les horaires de réponse aux tickets sont indépendants de la disponibilité des nœuds.