Serveur de build iOS à court d’espace disque ? 2026 Xcode 27 : nettoyer ou étendre
Ce guide aide les développeurs indépendants et les petites équipes à diagnostiquer un serveur de build iOS qui manque d’espace sans supprimer aveuglément les éléments nécessaires. Vous apprendrez à distinguer les caches, les composants Simulator, les dépendances et les artefacts de publication, puis à choisir entre nettoyage, extension ou séparation de l’environnement.
Sommaire
- Le bon diagnostic commence par l’objet qui consomme l’espace
- Xcode 27 sur un serveur plein : la première couche à examiner
- DerivedData peut-il être nettoyé régulièrement sur un Mac distant ?
- Quels fichiers sont supprimables sur un serveur de build iOS ?
- Les environnements de test exigent une décision distincte
- Les composants Simulator et les archives doivent-ils être conservés de la même manière ?
- Les dépendances et les projets multiples compliquent le nettoyage
- Les archives de publication déterminent la limite de sécurité
- Le protocole de récupération doit précéder toute suppression
- Nettoyer, étendre ou séparer : la décision dépend du scénario
- Comparatif de décision avant de modifier la machine
- La location est un levier de réversibilité, pas un remplacement universel
Xcode 27 est la version de référence à vérifier dans les notes de version officielles avant toute opération de maintenance. Si votre serveur de build iOS est à court d’espace disque, ne supprimez pas immédiatement tout le dossier Xcode ou le répertoire utilisateur : commencez par séparer les données régénérables, les composants nécessaires aux tests et les artefacts de publication. Cette semaine, vérifiez l’état des tâches, classez les répertoires par projet, sauvegardez les éléments de reprise, puis nettoyez seulement ce dont vous pouvez démontrer la reconstruction.
Cette méthode convient aux indépendants qui ne disposent que d’un Mac distant et voient apparaître des alertes de stockage. Elle s’adresse aussi aux équipes qui doivent conserver Xcode 27, plusieurs environnements Simulator ou des archives historiques, ainsi qu’aux petites structures qui hésitent entre gouvernance, extension du disque et ajout d’un second serveur.
Le bon diagnostic commence par l’objet qui consomme l’espace
Un échec d’archivage provoqué par le disque ne signifie pas nécessairement que la machine est sous-dimensionnée. Le système de build peut produire des données intermédiaires, des sorties de compilation, des journaux de test et des archives qui n’ont ni la même valeur opérationnelle ni la même méthode de récupération. La documentation du système de build Xcode décrit cette séparation entre entrées, produits et données intermédiaires dans la documentation officielle du système de build.
Avant de supprimer quoi que ce soit, relevez :
- la tâche actuellement exécutée : compilation, test, archivage, export ou envoi ;
- le projet et le schéma concernés ;
- le chemin utilisé pour
DerivedData; - les archives
xcarchive, fichiers IPA, symbolesdSYMet résultatsxcresult; - les composants Simulator réellement requis par la matrice de tests ;
- les caches de dépendances associés à chaque projet.
Le point important est la preuve d’inactivité. Une session distante peut afficher un terminal silencieux alors qu’un processus de compilation ou de test travaille encore. Vérifiez les processus, la tâche CI/CD et le journal de la dernière commande avant d’intervenir. Une suppression pendant un archivage peut produire un résultat incomplet, même si le terminal ne signale pas immédiatement une erreur.
Attention. Une alerte de disque est un signal de maintenance, pas une autorisation à effacer. Si une tâche Build, Test, Archive ou Export est active, arrêtez le diagnostic destructif et attendez sa fin ou son annulation contrôlée.
Xcode 27 sur un serveur plein : la première couche à examiner
DerivedData peut-il être nettoyé régulièrement sur un Mac distant ?
Oui, DerivedData est généralement le premier candidat lorsqu’il s’agit de données de compilation régénérables, mais seulement après avoir confirmé qu’aucune tâche ne l’utilise et que le projet peut être reconstruit. Le chemin réel dépend de la configuration du projet et de la commande exécutée. La référence des réglages de build explique notamment comment les chemins de produits et de données sont déterminés dans la référence officielle des réglages de build.
Pour une maintenance prudente, procédez ainsi :
- Identifiez le chemin effectif de
DerivedDatadans Xcode ou dans la commande de compilation. - Associez chaque sous-répertoire à un projet, une branche ou une configuration connue.
- Vérifiez qu’aucun processus de compilation, de test ou d’archivage ne tourne.
- Déplacez d’abord le répertoire ciblé vers une zone de quarantaine ou une sauvegarde temporaire, plutôt que de le supprimer immédiatement.
- Relancez une compilation propre sur le même projet.
- Effectuez ensuite un archivage complet et contrôlez le résultat avant de vider la quarantaine.
Cette séquence vous donne une possibilité de retour arrière. Elle évite également de confondre DerivedData avec les produits d’archive ou les fichiers de signature. Une compilation propre plus lente après le nettoyage est attendue en termes de processus, mais ne constitue pas à elle seule une raison de conserver indéfiniment toutes les données intermédiaires.
Pour un serveur consacré uniquement aux archives Release, vous pouvez appliquer une politique plus stricte à DerivedData, aux sorties temporaires et aux produits de compilation qui ne servent pas à une session de débogage. En revanche, une machine utilisée pour le développement interactif, les aperçus SwiftUI ou les tests fréquents doit conserver davantage de données utiles aux itérations en cours.
Quels fichiers sont supprimables sur un serveur de build iOS ?
La réponse dépend moins du nom du dossier que de sa capacité à être reconstruit et de la présence d’une copie vérifiable. Voici les frontières à maintenir :
- Données intermédiaires et cache de compilation : supprimables après contrôle de l’inactivité et validation d’une reconstruction.
- Produits temporaires de compilation : supprimables s’ils ne sont pas référencés par une tâche en cours ni par une procédure de diagnostic.
- Caches de dépendances : supprimables avec prudence, projet par projet, après avoir confirmé que les dépendances peuvent être résolues depuis leur source.
xcarchive: à conserver tant qu’il représente une version publiée, une version soumise ou une base nécessaire à une nouvelle exportation.- IPA : à archiver ailleurs si vous devez réinstaller exactement le binaire ou prouver ce qui a été transmis.
dSYM: à préserver avec la version correspondante, car les symboles sont nécessaires à l’analyse de certains rapports de crash ; la documentation explique le rôle des informations de débogage dans le guide officiel consacré aux symboles.xcresult: à conserver lorsque les résultats de test servent à diagnostiquer une régression, à documenter une validation ou à comparer une exécution.- Identifiants et éléments de signature : jamais traités comme de simples caches. Ils doivent suivre une procédure de sauvegarde et de restauration séparée.
Un bon nettoyage ne consiste donc pas à appliquer une règle unique à tous les fichiers Xcode. Il consiste à rendre chaque suppression explicable : quel projet est concerné, quelle preuve a été sauvegardée, quelle reconstruction permet de récupérer l’élément et quel arrêt est prévu si la vérification échoue.
Les environnements de test exigent une décision distincte
Les composants Simulator et les archives doivent-ils être conservés de la même manière ?
Non. Un composant Simulator, un appareil simulé créé, ses données applicatives, une capture d’écran et un résultat de test répondent à des besoins différents. Les composants téléchargés pour une version de système peuvent être nécessaires à une matrice de tests, tandis qu’un serveur qui ne fait que produire des archives n’a pas forcément besoin d’héberger toutes les variantes installées.
Commencez par dresser la liste des tests réellement exécutés. Le schéma peut appeler un simulateur précis, un appareil physique connecté ou une étape de test indépendante. Les composants Xcode se gèrent selon les besoins des projets et des versions installées ; les mécanismes officiels d’ajout et de gestion sont décrits dans la documentation des composants Xcode.
Séparez ensuite :
- le runtime Simulator, qui fournit l’environnement système ;
- les appareils simulés créés pour les tests ;
- les données d’applications et les états persistants ;
- les résultats
xcresult; - les captures et journaux associés à une campagne de test.
Un serveur d’archivage pur peut être allégé en ne conservant que les composants nécessaires à la validation effectivement demandée. Une machine qui réalise des tests d’interface ou une régression sur plusieurs environnements doit garder les composants correspondant à sa matrice. La décision ne doit pas être fondée sur le volume apparent d’un dossier, mais sur le test qui échouerait après sa suppression.
La simulation ne remplace pas la validation sur un appareil réel. Les capacités et les limites diffèrent, comme le rappelle la documentation officielle sur les appareils simulés et physiques. Supprimer un runtime inutilisé peut être raisonnable ; supprimer toute possibilité de test au motif que l’archive fonctionne ne l’est pas.
Les dépendances et les projets multiples compliquent le nettoyage
Un seul serveur peut accueillir plusieurs applications, plusieurs branches et plusieurs générations d’outils. Dans ce contexte, une suppression globale des caches peut casser la reproductibilité, augmenter la durée de récupération ou masquer la véritable origine de l’occupation.
Pour chaque projet, documentez :
- le gestionnaire de dépendances utilisé ;
- le chemin du cache ;
- la version d’outil attendue ;
- les dépôts publics ou privés nécessaires ;
- l’état de la dernière résolution ;
- la preuve qu’un archivage complet a réussi après récupération.
Pour Swift Package Manager, CocoaPods ou une dépendance privée, le test utile n’est pas seulement de voir si la compilation locale redémarre. Il faut vérifier que la résolution fonctionne depuis un environnement nettoyé, que les versions attendues sont récupérées et que l’archive obtenue peut encore être exportée. Le déroulement forme une chaîne : suppression ciblée, nouvelle résolution, compilation froide, archivage, puis contrôle du produit.
Les réglages de schéma ont également un rôle dans cette séparation. Un schéma peut activer des tests, une configuration ou une étape de build différente d’un autre projet ; consultez la documentation officielle sur la personnalisation des schémas avant d’attribuer une consommation à un dossier sans identifier la tâche qui l’a créé.
Les archives de publication déterminent la limite de sécurité
Le fichier xcarchive n’est pas un simple cache de compilation. Il peut contenir les éléments nécessaires à une exportation ultérieure, à une vérification de signature ou à l’analyse d’un binaire déjà livré. L’IPA est le produit exporté, tandis que dSYM et xcresult répondent à des besoins de diagnostic et de validation différents.
Avant de retirer une archive, vérifiez au minimum :
- si elle correspond à une version déjà publiée ou soumise ;
- si une copie lisible est disponible dans un emplacement contrôlé ;
- si les symboles associés sont conservés avec la même identité de build ;
- si l’IPA peut être récupérée ou reconstruite depuis une source vérifiable ;
- si le projet, le certificat et le profil nécessaires sont encore accessibles ;
- si une exportation de test a été menée depuis la copie.
Pour les résultats de tests, ne supprimez pas automatiquement les xcresult liés à un incident en cours. Les résultats sont utiles pour interpréter les tests et leurs diagnostics, selon la documentation officielle sur l’exécution et l’interprétation des tests.
La distribution ajoute une autre contrainte : le produit exporté doit être traçable, et les fichiers nécessaires à l’analyse de taille ou à l’exportation doivent rester associés à la bonne archive. Les indications officielles sur la préparation d’une archive et la réduction de la taille de l’application sont disponibles dans la documentation de distribution.
Le protocole de récupération doit précéder toute suppression
Si vous ne pouvez pas répondre à la question « comment reconstruire cet élément ? », ne l’effacez pas encore. Sur un Mac distant, la récupération dépend aussi de l’accès SSH, de la console distante, du dépôt source, des secrets et de la possibilité de relancer l’outil avec les mêmes réglages.
Appliquez ce protocole opérationnel :
- figer la liste des tâches actives et leur état ;
- noter les chemins et propriétaires des fichiers ciblés ;
- copier les archives, symboles et résultats indispensables ;
- consigner la version de Xcode 27 et la configuration du projet ;
- déplacer les caches ciblés dans une zone réversible ;
- lancer une résolution de dépendances ;
- effectuer une compilation ;
- produire une nouvelle archive ;
- vérifier l’export, la signature et les journaux ;
- supprimer la zone de quarantaine seulement après cette validation.
Les commandes de suppression doivent rester limitées à un chemin explicitement identifié. Évitez les commandes récursives visant tout le répertoire utilisateur, le trousseau ou toutes les versions de Xcode. Elles ne résolvent pas la distinction entre cache et preuve de publication, et peuvent rendre la restauration plus longue que l’extension contrôlée du serveur.
Expérience de maintenance. Une politique de conservation écrite par projet est plus fiable qu’un nettoyage lancé lorsque l’alerte apparaît. Elle précise le propriétaire de l’archive, la copie de secours, le test de restauration et la condition d’arrêt.
Nettoyer, étendre ou séparer : la décision dépend du scénario
Le serveur de build iOS à court d’espace disque ne doit pas être traité de la même manière selon sa charge. Utilisez les conditions suivantes :
- Si un seul projet produit ponctuellement des archives, que les dépendances sont reproductibles et que l’espace revient après le retrait de caches vérifiés, choisissez d’abord une politique de nettoyage documentée.
- Si plusieurs projets partagent la machine, que plusieurs versions de Xcode et plusieurs composants Simulator sont nécessaires, et que le nettoyage revient régulièrement, choisissez l’extension du stockage ou une machine mieux dimensionnée.
- Si les tests d’interface, les archives de publication et les builds de plusieurs applications se disputent les mêmes ressources, séparez l’environnement de test de l’environnement de publication.
- Si le manque d’espace apparaît seulement pendant une campagne de validation, une migration ou une période de sorties rapprochées, ajoutez temporairement un environnement indépendant, afin de ne pas fragiliser le serveur de production.
- Si vous ne pouvez pas vérifier la reconstruction d’un artefact après suppression, arrêtez le nettoyage et restaurez d’abord une copie contrôlée.
L’extension est pertinente lorsque la consommation est structurelle et prévisible. La séparation devient préférable lorsque les cycles de test et de publication ont des exigences contradictoires. Un unique serveur plus grand ne supprime pas le risque qu’un test massif remplisse le même espace que la chaîne de livraison.
Pour une phase de validation ou un pic de publication, vous pouvez comparer les environnements disponibles dans les configurations de Mac distant de VPSMAC. L’intérêt n’est pas de remplacer une politique de stockage, mais de disposer d’une voie de repli lorsque le serveur principal doit rester stable.
Comparatif de décision avant de modifier la machine
| Situation observée | Objet à vérifier en premier | Action privilégiée | Note de décision |
|---|---|---|---|
| Une application, archivage occasionnel | DerivedData, sorties temporaires, anciens résultats |
Nettoyage réversible puis archive de contrôle | Favorable au nettoyage |
| Plusieurs applications, dépendances partagées | Caches par projet et résolution reproductible | Gouvernance par projet, puis extension si le problème revient | Conditionnelle |
| Tests d’interface sur plusieurs environnements | Runtime, appareils simulés, données de test | Conserver la matrice utile et isoler les tests | Favorable à la séparation |
| Historique de versions et analyse de crash | xcarchive, dSYM, xcresult, IPA |
Archiver ailleurs avant toute suppression | Défavorable à l’effacement direct |
| Pic temporaire de versions ou validation | Charge exceptionnelle et durée du besoin | Ajouter un Mac distant indépendant | Favorable à l’environnement temporaire |
| Alerte récurrente malgré les nettoyages vérifiés | Occupation structurelle et tâches concurrentes | Étendre ou migrer vers une architecture séparée | Favorable à l’extension |
Après le changement, conservez une mesure avant/après issue de la même commande et du même périmètre. Cette mesure n’est utile que si elle indique aussi ce qui a été retiré et si l’archivage a réussi ensuite. Ne transformez pas une variation d’espace libre en promesse de performance : libérer un cache ne garantit pas une compilation plus rapide.
La location est un levier de réversibilité, pas un remplacement universel
Si votre solution actuelle repose sur un Mac unique, le risque vient souvent de trois points : les tests concurrencent la publication, les archives restent sur le même volume que les caches et une panne ou un nettoyage incorrect touche toute la chaîne. Acheter une machine dédiée règle parfois la capacité, mais ajoute un investissement immobilisé, une maintenance locale et une contrainte lorsque les versions de Xcode ou la charge changent.
Dans le cas d’un besoin temporaire — validation d’une nouvelle version, campagne de tests, sortie de plusieurs applications ou conservation d’un serveur de production intact — louer un Mac distant auprès de VPSMAC peut offrir une séparation plus facile à retirer. Vous pouvez examiner, par exemple, les nœuds Mac M4 proposés en Silicon Valley ou comparer les régions avant de choisir l’environnement adapté.
Cette approche n’est pas idéale pour tous les usages. Une charge lourde et stable sur une longue période peut justifier l’achat ou une infrastructure dédiée, tandis qu’un besoin d’accès physique à un appareil, à un câble ou à un laboratoire de test impose une autre organisation. En revanche, lorsque le problème est un pic de stockage ou la crainte de mettre en danger l’unique serveur de publication, une machine distante séparée permet de tester, d’archiver et de revenir en arrière sans appliquer un nettoyage irréversible à la production.
Votre prochaine action devrait donc être conditionnelle : nettoyez uniquement les données régénérables après preuve d’inactivité, préservez les éléments de publication, puis ajoutez ou étendez l’environnement lorsque les alertes reviennent malgré cette gouvernance.