DevOps / CI·CD 6. Mai 2026

06.05.2026 iOS-Simulator-Runtime: Festplattenbudget, selektive Installation und CI-Bereinigung auf einem geleasten Apple-Silicon-Cloud-Mac (HK / JP / KR / SG / US)

MacXCode Ingenieurteam 6. Mai 2026 ~23 Min. gelesen

Hongkong, Tokio, Seoul, Singapur, USAInMac mini M4Miete einxcodebuild-TestDas Team, das sich umdreht, bemerkt sofort den zweiten Angriff.Simulatorlaufzeitist nicht frei,Bibliothek/Entwickler/CoreSimulatorunterordnenMehrere GB-MaßstabNimm ein Stück davonAbgeleitete Datenund konkurrieren um NVMe-Bandbreite, die sich verdoppelt, wenn watchOS-Begleiter in die Warteschlange aufgenommen werden. Das06.05.2026Der Leitfaden beantwortet drei betriebliche Fragen: Was ist drin?InventarSo wählen Sie nur die Betriebssystemfamilien aus, die Ziele wirklich benötigenwählenSo starten Sie nächtliche UI-Tests trotzdem, ohne die Laufzeit zu beendenpruneEs ist eine Methode.Headless-Simulator-Testverlängern undScheibenreinigungs-Hausmeisterauf demselben Host.ParallelspurBeim LaufenTrennung abgeleiteter DatenBitte beachten Sie

Warum CI im Jahr 2026 immer noch mit „Xcode installieren = Simulator bereit“ verwechselt wird

Xcode.app bündelt die Toolchain,Laufzeitist eine versionierte Nutzlast, die bei Bedarf gelöscht wird. Drei wiederholte Fehler:

  • Zieldrift– YAML istiPhone 15Nach der Aktualisierung von Xcode ist der Host jedoch vorhandeniPhone 16Ich habe nur das Bild vorbereitet.
  • Stille Uhrenkopplung– Lokal hat Xcode die Watch-Laufzeit automatisch erfasst, CI jedoch nicht.
  • Hausmeister übertrieben– cron hat die „alte“ Laufzeit gelöscht, die von der Qualitätssicherung für die Reproduktion des App Store-Absturzes noch benötigt wirdiOS 17.6verlieren.
Numerischer Anker:512 GBDie SKU ist vor der parallelen Testwelle kostenlos≥180 GBpflegen.2 TBHalten Sie die Anzahl der Laufzeiten auf dem Knoten niedrig, damit Spotlight und der Backup-Daemon während der Archivierung nicht konkurrieren.

Laufzeit-Footprint: Wo die Gigabyte lauern

Apple Silicon-Hosts verwalten Gerätedaten, gemeinsame Caches und Slices pro Laufzeit. Ungefähr für ein Paar der wichtigsten iOS-Laufzeiten (Gerät + Bild nach Jahr ansehen)7–14 GB. Noch mehr, wenn Sie ein Sprachpaket in die Screenshot-Spur der Benutzeroberfläche einfügen.3–6 GB. Wichtig sind nicht die genauen Bytes, sondern was passiert, wenn fünf Ingenieure denselben gemeinsamen Builder verwenden und die neueste Beta-Laufzeit installieren.DifferentialIst.

Laufzeit erhöhenVerzögerung in der WarteschlangeBitte beziehen Sie sich auf den freien Speicherplatz12 %Unten sind die ersten Symptome kein sofortiges Versagen.xctestDas Kopieren von Geräten ist in der Regel langsam. Dies liegt daran, dass es APFS schwerfällt, zusammenhängende Bereiche zu finden.

Neues Xcode-MaßBei der Verwendung handelt es sich beim Laufzeitabruf nicht um ein einzelnes Kontrollkästchen.KapazitätsmigrationIst. Eingabeaufforderung für Multi-Plattform-Pakete, CoreSimulator-Cache-Neuerstellung, nach dem ersten grünen Build24–48 StundenEs kommt zu einer impliziten Warmausdehnung. Bitte stellen Sie sicher, dass der Miethost über ein explizites Wartungsfenster verfügt und dass sich PR-Verkehr und anfängliche Massen-Downloads nicht überschneiden. Das ignorierte Team sieht, dass der rote Build ohne Codeänderungen am nächsten Tag verschwindet. an diesem FensterdfProtokollieren Sie es stündlich und vergleichen Sie es mit der stationären Kurve für das Vorquartal. Der Hang ist die GeschichteWenn er größer ist, ist es sehr wahrscheinlich, dass überlappende Beta- und GA-Scheiben auf derselben Spur platziert wurden.

schließlichWer kann die Laufzeit einbauen?Bitte dokumentieren. Ein typisches Beispiel für eine persönliche Sudo-Installation, die zu „mysteriösen 6 GB“ gemeinsamer Schlüssel führt. Zentralisieren Sie Änderungen an Infrastrukturtickets und CI-Image-Tags,sshSitzungen können überwacht werden – insbesondere beim Speichern von SignaturmaterialienSingapurMoskitoBeitoDies ist ein Fall, in dem Vorschriften verbindlich sind.

Lane-Matrix: Welcher Host enthält welche Laufzeit?

Teilen Sie die Verantwortlichkeiten explizit auf und gehen Sie nicht davon aus, dass alle Läufer austauschbar sind.

Spurbeschriftungen Laufzeitrichtlinie Reinigungsbesitzer
ios-aktuell 1 Flasche des neuesten GA-iOS- und App-Store-konformen N-1 Wöchentlicher Schnitt + Eintrittskarte
uhrenlastig Nur watchOS-Image + gekoppeltes Gerät Monatlich; Löschen Sie N-1 nicht ohne Genehmigung der Qualitätssicherung
Nur Archiv Simulator-Minimum; Das eigentliche Maschinenarchiv hat Vorrang Aggressiv für den Simulator, sanft für die Tasten

Inventarbefehl, den der Bediener in das Runbook einfügt

Beginnen Sie mit zerstörungsfreien Sonden und steigern Sie sich schrittweise.

xcrun simctl listet Laufzeiten auf df -h / du -sh ~/Library/Developer/CoreSimulator/* 2>/dev/null | sort -h | tail -n 20

Wenn die Nummern von denen im Finder abweichen, führen Sie sie als CI-Benutzer aus.duVertrauen Sie uns – gestartete Jobs werden auf Builder-Konten ausgeführt. Wenn es eine andere Lautstärke ist/Volumes/buildsAber ich wiederhole.

Selektives Installations-Runbook (Happy Path)

  1. Warteschlange einfrierenoder entleeren Sie das mit dem Host verknüpfte Label.
  2. Beziehen Sie für den nächsten Sprint nur die Laufzeitpakete in die Zielmatrix ein, die Sie wirklich benötigen.herunterladen.
  3. pro Laufzeitxcrun simctl bootengeräuchert mitsysctl hw.modelÜberprüfen Sie, ob es sich weiterhin um Apple Silicon handelt.
  4. Erhöhen Sie das Tag der Bildversion, um CI YAML mit der Realität abzugleichen.Lebenslaufwarteschlange.
  5. Installierte Sammlungen im Infrastruktur-Repositoryaufzeichnen(Machen Sie es nicht zu einem isolierten Wiki).

Zwischen Schritt 2 und 3, zum TicketPrüfsummeOder belassen Sie die Versionszeichenfolge von Apple und das Rollback ist klar, wenn die Laufzeit aufgrund eines defekten Spiegels unterbrochen ist.

Beschneidungsrichtlinie: Was kann gelöscht werden?

Ein guter Hausmeister istDerivatezu aggressiv,Laufzeitwird als semistatische Infrastruktur behandelt. Zweistufige Richtlinie:

Leistungen sichere Frequenz Gefahr des Überschneidens
Nicht gestartetes Simulator-Terminal täglich Niedrig – Aus Vorlage neu erstellt
alt.xcresultbündeln Nach dem Hochladen in den Objektspeicher Mittel – Wenn Sie für die rechtliche Wartung 30–90 Tage außerhalb des Hosts benötigen.
Laufzeitpaketkörper Vierteljährliche + QA-Liste Hoch – beeinträchtigt die Reproduzierbarkeit der Crash-Reproduktion

Parallele Spuren und integrierter Speicherdruck

parallelxcodebuildverstärkt die Abwanderung von Simulatoren. Bitte begrenzen Sie die Anzahl gleichzeitiger Startvorgänge pro Host mithilfe von Warteschlangenbezeichnungen.Parallel Joe-ArtikelSehen. Wenn der Speicherdruck seinen Höhepunkt erreicht, versuchen Sie es mit einem AustauschReduzieren Sie gleichzeitige Zielebevorzugt; XCTest ist extrem anfällig für Auslagerungen im einheitlichen Speicher.

Headless-Tipps:Wenn Ihre UI-Tests erst nach dem Bereinigen fehlerhaft sind, überprüfen Sie Ihr Builder-Konto, bevor Sie Ihrem App-Code die Schuld geben.sysdiagnoseHolen Sie sich einen Slice – der Festplattendruck erscheint zunächst als SpringBoard-Watchdog.

Xcode-Upgrade-Fenster: Laufzeiterfassung und Archivreihenfolge

Sofern es keinen warmen zweiten Knoten gibt,Laufzeit großer DownloadUndDie TestFlight-Übermittlung friert nachts einBitte legen Sie sie nicht am selben Abend an. Der sicherste MacXCode-Host istblau/grüner Builder: Kandidatenbildxcodebuild-Testund Lichtxcodebuild-Archiv -archivePath /tmp/Smoke.xcarchiveBewerben Sie das Bild-Tag, nachdem beide grün werden. Wenn Sie sich Doppelknoten nicht leisten können, reduzieren Sie den Umfang: eine zusätzliche Laufzeit pro Wartungszeit, nicht fünf gleichzeitig. jedes DownloadsWanduhr MinutenAufzeichnungen und Finanzen sind getrennt1 TBErmöglicht Ihnen zu vergleichen, ob Sie einen Bauunternehmer mieten oder eine Wochenendveröffentlichung in Auftrag geben sollten.

Nach dem Upgrade wird die YAMLZielzeichenfolgeBitte überprüfen Sie es erneut. Apple ändert manchmal die Namen der Simulator-Hardwareprofile. Die Nichtübereinstimmung sieht aus wie „Ziel nicht gefunden“simctl-Listescheint ausgefüllt zu sein – höchstwahrscheinlich, weil der Job auf eine Hardware-Zeichenfolge verweist, die bereinigt wurde.simctl listet die verfügbaren Geräte aufBitte unterscheiden Sie den maschinenlesbaren Export von infrarepo.

Numerische Ziele in Grafana

  • Permanente Festplattennutzung vor Paging-Vorgängen85 %Obergrenze.
  • 16 GBAuf Maschinen können gestartete Simulatoren bis zu laufen4Der Stand.
  • Obergrenze der Kaltakzeptanz für „Laufzeiterfassung + Startup + einzelner XCTest“22 Minuten; Warnung bei Überschreitung nach dem Upgrade.

9 Schritte vor dem Löschen eines „riesigen Ordners“

  1. Stellen Sie sicher, dass keine Archivierungsaufträge ausgeführt werden.
  2. aktuellsimctl-ListeSnapshot zu GitOps.
  3. Vergangenheit30 TageIdentifizieren Sie die Laufzeit von Job Null.
  4. Benachrichtigen Sie die Qualitätssicherung mit einem expliziten Entfernungsdatum.
  5. Entleeren Sie jeweils nur eine Spur.
  6. Laufzeitlöschung nur mit unterstützten UI-/CLI-Pfaden.
  7. Smoke am verbleibenden Ziel erneut ausführen.
  8. Vor und nach dem LöschendfVergleichen Sie und fügen Sie die Differenz dem Ticket bei.
  9. Erweiterte Tags nur mit fehlerfreien Hosts.

FAQ: Beta, Apple Silicon, Cross-Region Hosting

Frage Praktische Antworten (06.05.2026)
Sollte ich Beta-Laufzeiten in das Produktions-CI einfügen? Isoliert auf als Kanarienvogel bezeichneten Wirt; nicht mit App Store-Übermittlungsspuren vermischt.
Müssen die Gastgeber aus Singapur und den USA in derselben Gruppe sein? An den gemeinsamen Mindestsatz anpassen; Regionsspezifische Ergänzungen sind möglich, sofern sie in YAML kodiert sind.

Warum der Mac mini M4 mit 1–2 TB bei simulatorbasiertem CI gewinnt

Simulatorlast istzufälliges LesenEs ist nah. MacXCode-Knoten Bare MetalMac mini M4NVMe sorgt dafür, dass die Startzeiten vorhersehbar sind, selbst wenn die vier Lanes unterschiedliche Betriebssystemgenerationen mit derselben PR-Matrix starten. Diese Vorhersehbarkeit macht numerisches Budgetieren zu Disziplin, besser als der Kauf der mysteriösen „Cloud-Festplatte mit hoher Kapazität“ hinter Noisy Neighbor. Die Kapazitätsplanung ist die zweiteJPWenn Sie nach Kanarienvogel fragenRegionale Preise, wenn die Sicherheit einen Nachweis darüber verlangt, wer die Laufzeit gelöscht hatSSH/VNC-ZugriffsanleitungBitte hinzufügen.

Fügen Sie NVMe-Spielraum hinzu, bevor die Laufzeitwucherung zurückkehrt

Mac mini M4 · HK / JP / KR / SG / US · SSH / optional VNC