2026-05-06 runtime Simulateur iOS budget disque, installation sélective et nettoyage CI sur un Mac cloud Apple Silicon loué (HK / JP / KR / SG / US)
Hong Kong, Tokyo, Séoul, Singapour, États-UnisdansMac mini M4louer untest xcodebuildL'équipe qui se retourne remarque immédiatement la deuxième charge.Exécution du simulateurn'est pas gratuit,Bibliothèque/Développeur/CoreSimulatorsubordonné àÉchelle de plusieurs GoPrenez une tranche deDonnées dérivéeset rivalisez pour la bande passante NVMe, qui double lorsque les compagnons watchOS rejoignent la file d'attente. ce2026-05-06Le guide répond à trois questions opérationnelles : Qu'est-ce qu'il contient ?inventaireComment sélectionner uniquement les familles de systèmes d'exploitation dont les destinations ont réellement besoinchoisirComment faire en sorte que les tests d'interface utilisateur nocturnes démarrent toujours sans tuer le runtimeélaguerC'est une méthode.Test du simulateur sans têteétendre etConcierge de nettoyage de disquesur le même hôte.voie parallèleLors de l'exécutionSéparation des données dérivéesVeuillez vous référer à
Pourquoi CI en 2026 est toujours confondu avec « Installation de Xcode = Simulator ready »
Xcode.app regroupe la chaîne d'outils,durée d'exécutionest une charge utile versionnée qui est supprimée à la demande. Trois erreurs répétées :
- dérive de destination— YAML est
iPhone15Cependant, après la mise à jour de Xcode, l'hôte estiPhone16J'ai préparé seulement l'image. - appairage silencieux de la montre— Localement, Xcode a automatiquement acquis le temps d'exécution de la montre, mais pas CI.
- concierge exagéré- cron a effacé "l'ancien" runtime, toujours nécessaire au contrôle qualité pour la reproduction en cas de crash de l'App StoreiOS 17.6perdre.
Empreinte d'exécution : là où se cachent les gigaoctets
Les hôtes Apple Silicon conservent les données des appareils, les caches partagés Dyld et les tranches par runtime. Environ pour deux environnements d'exécution iOS majeurs (appareil + image de la montre par année)7 à 14 Go. Encore plus si vous placez un module linguistique dans la zone de capture d'écran de l'interface utilisateur.3 à 6 Go. Ce qui est important, ce ne sont pas les octets exacts, mais ce qui se passe lorsque cinq ingénieurs utilisent le même générateur partagé et installent le dernier moteur d'exécution bêta.différentielest.
augmenter la durée d'exécutiondélai d'attenteVeuillez faire une corrélation avec l'espace libre12%ci-dessous, les premiers symptômes ne sont pas un échec instantané.xctestLa copie des appareils a tendance à être lente. En effet, APFS a du mal à trouver des étendues contiguës.
Nouvelle mesure XcodeLors de l'utilisation de , la récupération du runtime n'est pas une simple case à cocher.Migration de capacitéest. Invite de pack multiplateforme, reconstruction du cache CoreSimulator, après la première version verte24 à 48 heuresUne expansion chaude implicite se produit. Veuillez vous assurer que l'hébergeur de location dispose d'une fenêtre de maintenance explicite et qu'elle ne chevauche pas le trafic de relations publiques et les téléchargements groupés initiaux. L’équipe ignorée voit la version rouge sans modification de code disparaître le lendemain. à cette fenêtredfEnregistrez-le toutes les heures et comparez-le à la courbe stationnaire du trimestre précédent. La pente est l'histoire2×S'il dépasse , il est fort probable que des tranches superposées de bêta et de GA aient été placées sur la même voie.
dernièrementQui peut installer le runtime ?Veuillez documenter. Un exemple typique d'installation sudo personnelle aboutissant à un "mystérieux 6 Go" de clés partagées. Centraliser les modifications des tickets d'infrastructure et des balises d'image CI,chutLes sessions peuvent être auditées, en particulier lors de la sauvegarde des documents de signatureSingapourmoustiqueBeitoIl s’agit d’un cas où les réglementations sont contraignantes.
Matrice de voies : quel hôte détient quel runtime
Répartissez explicitement les responsabilités et ne présumez pas que tous les coureurs sont interchangeables.
| étiquettes de voie | Politique d'exécution | propriétaire de ménage |
|---|---|---|
ios-actuel |
1 bouteille du dernier GA iOS et App Store aligné N-1 | Taille hebdomadaire + ticket |
lourd en montres |
Image watchOS + appareil couplé uniquement | Mensuel; ne supprimez pas N-1 sans l'approbation du contrôle qualité |
archive uniquement |
Minimum du simulateur ; L'archive de la machine réelle est prioritaire | Agressif pour le simulateur, doux pour les clés |
Commande d'inventaire que l'opérateur colle dans le runbook
Commencez par des sondes non destructives et progressez par étapes.
xcrun simctl liste d'exécution
df -h /
du -sh ~/Bibliothèque/Developer/CoreSimulator/* 2>/dev/null | trier -h | queue -n 20
Si les chiffres diffèrent de ceux du Finder, exécutez en tant qu'utilisateur CI.duFaites-nous confiance : les tâches lancées sont exécutées sur des comptes de constructeur. Si c'est un volume différent/Volumes/constructionsMais je le répète.
Runbook d'installation sélective (happy path)
- geler la file d'attenteou vider l'étiquette associée à l'hôte.
- Incluez uniquement les bundles d'exécution dont vous avez réellement besoin dans la matrice de destination pour le prochain sprint.télécharger.
- par durée d'exécution
démarrage simctl xcrunfumé avecsysctl hw.modèleVérifiez s'il reste Apple Silicon. - Augmentez la balise de version de l'image pour faire correspondre CI YAML à la réalité,reprendre la file d'attente.
- Collections installées dans le référentiel d'infrastructureenregistrer(N'en faites pas un wiki isolé).
Entre les étapes 2 et 3, vers le ticketsomme de contrôleOu laissez la chaîne de version d'Apple et la restauration est claire si le runtime est interrompu en raison d'un miroir brisé.
Politique d'élagage : ce qui peut être supprimé
Un bon concierge estproduits dérivésà agressif,durée d'exécutionest traitée comme une infrastructure semi-statique. Politique en deux étapes :
| Livrables | fréquence sûre | Risque de surcoupe |
|---|---|---|
| Terminal de simulation non démarré | tous les jours | Faible——Recréé à partir d'un modèle |
vieux.xcresultpaquet |
Après le téléchargement vers le magasin d'objets | Moyen : si vous avez besoin de 30 à 90 jours hors hôte pour la maintenance légale. |
| corps du bundle d'exécution | Liste trimestrielle + QA | Élevé – brise la reproductibilité de la reproduction des crashs |
Voies parallèles et pression de mémoire intégrée
parallèlexcodebuildamplifie le taux de désabonnement au lancement du simulateur. Veuillez limiter le nombre de démarrages simultanés par hôte à l'aide d'étiquettes de file d'attente.Article de Joe parallèleVoir. Si la pression de la mémoire atteint un pic, essayez d'échangerRéduisez les destinations simultanéespréféré ; XCTest est extrêmement vulnérable au swap sur la mémoire unifiée.
diagnostic systèmeObtenez une tranche : la pression du disque apparaît d'abord comme un chien de garde SpringBoard.Fenêtre de mise à niveau Xcode : acquisition du runtime et ordre d'archivage
À moins qu'il n'y ait un deuxième nœud chaud,Téléchargement volumineux du runtimeetLa soumission TestFlight se bloque la nuitS'il vous plaît, ne les mettez pas le même soir. L'hôte MacXCode le plus sécurisé estconstructeur bleu/vert: Image du candidattest xcodebuildet la lumièrearchive xcodebuild -archivePath /tmp/Smoke.xcarchiveFaites la promotion de la balise d’image une fois que les deux sont devenues vertes. Si vous ne pouvez pas vous permettre des nœuds doubles, réduisez la portée : un temps d'exécution supplémentaire par temps de maintenance, pas cinq en même temps. de chaque téléchargementminutes de l'horloge muraleles dossiers et les états financiers sont séparés1 ToVous permet de comparer s'il faut louer un constructeur ou graver une version du week-end.
Après la mise à niveau, le YAMLchaîne de destinationVeuillez revérifier. Apple modifie parfois les noms des profils matériels du simulateur. L'inadéquation ressemble à "destination introuvable".liste simctlsemble être renseigné, probablement parce que le travail pointe vers une chaîne matérielle qui a été élaguée.liste simctl des appareils disponiblesVeuillez différer l'exportation lisible par machine de l'infrarepo.
Objectifs numériques à Grafana
- Utilisation persistante du disque avant les opérations de pagination85%limite supérieure.
- 16 GBSur les machines, les simulateurs lancés peuvent fonctionner jusqu'à4La tribune.
- Limite supérieure d'acceptation à froid pour "Acquisition du runtime + démarrage + XCTest unique"22 minutes; Alerte en cas de dépassement après mise à niveau.
9 étapes avant de supprimer un « dossier énorme »
- Assurez-vous qu'il n'y a pas de tâches d'archivage en cours.
- actuel
liste simctlInstantané vers GitOps. - passé30 joursIdentifiez le temps d'exécution du travail zéro.
- Informez le contrôle qualité avec une date de suppression explicite.
- Videz une seule voie à la fois.
- Suppression du runtime uniquement avec les chemins UI/CLI pris en charge.
- Réexécutez la fumée sur la destination restante.
- Avant et après la suppression
dfComparez et attachez la différence au billet. - Balises avancées avec uniquement des hôtes sains.
FAQ : version bêta, Apple Silicon, hébergement inter-régional
| question | Réponses pratiques (2026-05-06) |
|---|---|
| Dois-je mettre des environnements d'exécution bêta dans le CI de production ? | Isolé à l'hôte étiqueté canari ; non mélangé avec les voies de soumission de l'App Store. |
| Les hôtes de Singapour et des États-Unis doivent-ils faire partie du même groupe ? | S'aligner sur l'ensemble commun minimum ; des ajouts spécifiques à une région sont possibles à condition qu'ils soient codés en YAML. |
Pourquoi le Mac mini M4 de 1 à 2 To gagne en CI biaisé sur simulateur
La charge du simulateur estlecture aléatoireC'est proche. Nœud MacXCode Bare MetalMac mini M4NVMe maintient les temps de démarrage prévisibles même lorsque les quatre voies démarrent différentes générations de système d'exploitation avec la même matrice PR. Cette prévisibilité transforme la budgétisation numérique en discipline, mieux que l’achat du mystérieux « disque cloud de grande capacité » derrière Noisy Neighbor. La planification des capacités est la deuxièmeJPSi vous demandez un canariTarification régionale, si la sécurité demande une preuve de la personne qui a supprimé le runtimeGuide d'accès SSH/VNCVeuillez ajouter.
Ajoutez de la marge NVMe avant que les runtimes ne débordent
Mac mini M4 · HK / JP / KR / SG / US · SSH / VNC optionnel