Voll vs. Affected · Cache-Schlüssel · Read-only-Fan-out · Sechsstufiges Gate
Teams mit einem großen Monorepo auf mehreren Remote-Mac-Mesh-Hosts verlieren CI-Zeit durch Cache-Schlüssel-Drift, widersprüchliche Affected-Graphen und halbfertige Remote-Caches. Dieser Artikel liefert eine Matrix für Vollbuild, Affected, dedizierte Heavy-Node, Grenzen reproduzierbarer Eingaben, Read-only-Fan-out und ein sechsstufiges Gate. Querlesen mit Artefakt-Fan-out und Merge Queue.
Affected hängt davon ab, dass Änderungsgraph, Lockfile und Toolchain-Fingerprint in allen Regionen übereinstimmen. Mischen interaktive Sessions und Batch-Jobs denselben Präfix, korruptieren Phantomabhängigkeiten die Schlüssel.
Cache und Artefakte behandeln Bytes; hier geht es um Graph-Stutzung und Trigger.
Graph-Label-Drift: Unterschiedliche Runner-Labels ergeben andere Workspace-Roots.
Lockfile fehlt im Schlüssel: Resolver ändert sich, alter Tarball trifft trotzdem.
Kein Toolchain-Segment: Minor-Xcode-Differenz fehlt im Manifest.
Fan-out vermischt: Leser schreiben dennoch in Cache-Präfixe.
Kein Voll-Fallback: Codegen oder geteilte Kerne ändern sich, Pipeline bleibt nur Affected.
Zielgröße ist ein Monorepo auf einem multi-regionalen Remote-Mac-Pool.
| Dimension | Voll bevorzugt | Affected bevorzugt | Heavy split |
|---|---|---|---|
| Änderungstyp | Codegen, Build-Skripte, gemeinsame native Grenzen | UI/Text in einem App-Paket | Nacht-Bulk vs. Tages-PRs auf einem Pool |
| Signals | Zwei Affected-Failures oder flaky Integration | Stabiler Graph, Lock-Checks passen | CPU leer, Wandzeit hoch |
| Cache-Schlüssel | Toolchain-Gewicht hoch, Reuse stoppen | Lock-Hash + Change-Hash + Runner-OS | Isolierter Heavy-Präfix, Read-only-Spiegel |
| Regionen | Eine Manifest-Generation vor Compile | Mirror-Lag ok, kein Zurückschreiben | Primary schreibt, Satelliten lesen |
| Voll-Fallback | Vor erstem Grün nach protected Merge | Wöchentlicher Abgleichsvoll | Pflicht-Vollwoche nach großem Xcode-Sprung |
Reproduzierbare Eingaben zuerst einfrieren, dann Affected tunen.
SSH-Vertrauen im Pool laut Shared-Pool-SSH. Ozean-übergreifende Bytes brauchen Lease und Manifest aus Artefakt-Leitfaden.
Eingabe-Tripel: Commit, Lock-Digest, xcodebuild-Fingerprint im Header.
Ein Graph: Auf festem Label parsen, betroffene Pakete als Artefakt publizieren.
Voll-Schwellen: Codegen, geteilte Kerne, Toolchain-Liste → Voll plus Audit-Code.
Primary schreibt: Nur Primär schreibt, Satelliten read-only.
Fan-out-Prüfung: Hash und Größe vor Pointer-Flip.
Retry/Rollback: Netz exponentiell, Checksumme → Incident und nächster Commit Vollzwang.
CACHE_KEY="${CI_COMMIT_SHORT_SHA}:${LOCKFILE_SHA256}:$(xcodebuild -version | shasum -a 256 | cut -c1-12)"
export TURBO_REMOTE_CACHE_SIGNATURE="${CACHE_KEY}"
echo "affected=$(npx turbo run build --dry=json | jq -r '.packages | length')" > "${CI_PROJECT_DIR}/affected.meta"
Hinweis: Turbo durch Nx/Bazel ersetzbar; invariant ist ein autoritativer Graph und monotoner Schlüssel.
Zwei PRs an einem Shared-Paket verweben Präfixe. Schreiber ist nur CI-Primary.
Mit Seat-Locks Lease-IDs in Pfade legen; Task-Ketten tragen Affected-Zähler und Voll-Kurzschluss-Flag.
Achtung: Kein Multi-Region-Fan-out bevor Schreibrechte geschlossen sind.
Ein Writer: Pro Präfix nur ein Lease schreibend.
Leser-Regel: Compile startet erst nach current-Manifest-Generation.
Menschliches Gate: Zwei Checksummenfehler → Affected einfrieren bis signiertes Voll-Grün.
Werte sind Planungsdefaults, keine SLA.
Nächtliches Affected plus IDE-Indexing auf derselben Disk macht CPU-metriken trügerisch.
| Teamsignal | Startpostur | Fan-out |
|---|---|---|
| Klein | Single-Region-Primary plus lokales Affected | wenig Fan-out |
| Multi-PR | Primary schreibt, Satelliten lesen | koppelt an rsync/Objektspeicher |
| Nacht-Agenten | Heavy von interaktivem Pool trennen | verhindert Schlüssel-Erschöpfung |
Private Laptops als Gateway scheitern gemeinsam an Sleep, Sperrbildschirm und schwankendem Uplink.
Für Teams, die vertragliche Knoten, auditierbare Bandbreite und wählbare Regionen brauchen, ist VpsMesh Mac Mini Cloud-Miete meist die bessere Option: Trefferquoten und Queue-Tiefe werden gemeinsam reviewbar.
Bei Codegen, Build-Skripten, gemeinsamen nativen Grenzen, Toolchain-Upgrades und vor dem ersten Grün nach protected Merge. Details in Artefakt-Matrix.
Commit- oder Graph-Digest, Lockfile-Hash, Toolchain-Fingerprint, Runner-OS-Schicht, plus Generation und Lease-ID beim Fan-out. Regionen auf der Bestellseite.
Hilfezentrum für Remote und Netzwerk, Preisseite vor der Wahl.