Fastlane Match · iOS CI · Keychain · flock · Apple Silicon · 2026

2026 Kleinteams auf geteiltem Remote-Mac: Fastlane Match parallele Pulls, Keychain-Partitionen und Codesign-Warteschlangen — Entscheidungsmatrix mit flock-Parametern

Lesezeit: ca. 10 Min.
Matrix · flock-Tabelle · Schritte · FAQ

Zielgruppe: iOS-Leads mit zwei bis acht Entwicklern auf einem gemeinsamen MeshMac. Kernaussage: Serialisieren Sie Match-Schreibzugriffe, partitionieren Sie login-Keychains und dokumentieren Sie Codesign-Queue-Timeouts. Enthalten: Entscheidungsmatrix, flock-Parametertabelle, fünf Rollout-Schritte, Kennzahlen, FAQ. Einstieg: Startseite, SSH-versus-VNC-Matrix, Berechtigungs-FAQ für gemeinsame Builds.

01 Drei typische Ausfälle auf einem geteilten Remote-Mac ohne dokumentierte Signing-Governance

  1. Parallele Match-Pulls: Zwei Lanes führen match development aus und beschädigen das verschlüsselte Git-Repo mitten im Push.
  2. Keychain-Bleed: Distributionszertifikate landen in der interaktiven login.keychain, während SSH-Jobs eine Lane-Datei erwarten.
  3. Stille Queue-Hänger: Codesign wartet endlos, weil flock -w das Job-Timeout übersteigt und niemand den Lock-Inhaber protokolliert.

02 Entscheidungsmatrix: Lane-Keychain plus serialisiertes Match versus gemeinsame login-Keychain

Kriterium Match + Lane-Keychain Nur gemeinsame login-Keychain Stabilitätshinweis
Paralleles Pull shallow fetch + Lese-Lock; Schreiben serialisiert Race auf Git-Push; Zertifikatsverlust Schreib-Lock ab zwei Lanes
Codesign-Queue ein Archiv pro Host; CI-Lanes warten parallele Archive um Auth p95 Lock-Warte unter 120 s
MeshMac 2–8 Sitze Standard für gepoolte M4-Builder nur Labor zweiter Knoten bei Sättigung

03 Match-Git-Konkurrenz und shallow-Clone-Strategie auf dem Zertifikats-Repository

Behandeln Sie das Zertifikats-Repo wie Produktionsdaten. Lesezugriffe dürfen überlappen; Schreibzugriffe nicht.

  • Shallow-Clone: git clone --depth 1; Refresh mit git fetch --depth 1.
  • Lese-Konkurrenz: paralleles match readonly ohne aktiven Schreib-Lock.
  • Schreib-Serialisierung: match development, match appstore, nuke hinter match-repo.lock.
MATCH_GIT_URL=git@github.com:org/certificates.git
export GIT_SSH_COMMAND="ssh -o ControlMaster=auto -o ControlPath=/tmp/ssh-%r@%h:%p"
flock -w 180 /var/run/meshmac/match-repo.lock \
  fastlane match development --readonly false

04 login-Keychain-Partitionen für headless Signing per SSH

SSH-Isolation ersetzt keine Signing-Partitionen. Ergänzen Sie die Xcode-Codesign-Queue-Matrix und klären Sie Rechte im Kollaborations-FAQ.

  • Lane-Datei: /srv/keychains/team-a-ci.keychain-db pro App oder Mandant.
  • Entsperr-Fenster: security unlock-keychain nur im Codesign-Wrapper.
  • Match-Variablen: MATCH_KEYCHAIN_NAME und Passwort in Lane-Env — nie im gemeinsamen login-Keychain.
security list-keychains -s "$LANE_KEYCHAIN" login.keychain-db
security set-keychain-settings -lut 21600 "$LANE_KEYCHAIN"
security find-identity -v -p codesigning "$LANE_KEYCHAIN"

05 Buildsperren, flock-Wartezeiten und Codesign-Warteschlangen-Timeouts — Parametertabelle

Startwerte ins Runbook übernehmen; an Lock-Warte-p95 auf echten Archiven feinjustieren.

Ressource flock / Queue Job-Timeout Stabilitätsrationale
Match-Git-Schreiben flock -w 180 15 min Lane-Schritt unter CI-Cap
Codesign / Archiv flock -w 600 45–90 min ein Archiv pro Host
DerivedData flock -w 60 35–60 min DD-Kollision vermeiden
Warteschlangen-Tiefe max. 12 Jobs / Lane Fail-fast Disk < 15 % APFS-Schutz

06 Fehler-Wiederholungen, Audit-Felder und Betriebssignale für On-Call

  • Retry-Policy: höchstens zwei Wiederholungen bei transienten Git-Fetch-Fehlern; null Retries bei Keychain-Unlock-Fehler.
  • Audit-JSON: lane, match_git_sha, keychain_path, lock_wait_ms pro Job.
  • Alarm-Schwelle: Seite bei Lock-Warte-p95 über 120 s für drei Archive hintereinander.

07 Fünf Rollout-Schritte auf MeshMac vor dem nächsten Release-Archiv

  1. Schreiben einfrieren: Archive abpumpen; match nuke auf dem gemeinsamen Host sperren.
  2. Shallow klonen: MATCH_GIT_BRANCH pinnen; Repo-Lock unter /var/run/meshmac/.
  3. Keychains bereitstellen: Lane-Dateien erzeugen; Distribution einmal pro Lane importieren.
  4. Queues verdrahten: Archiv in flock auf codesign.queue; Timeouts aus Tabelle setzen.
  5. Audit aktivieren: JSON-Logs an Webhook; Unlock-Drill vor Pool-Wiedereröffnung.

08 Zitierbare Parameter für Architektur-Reviews

  • Parallele Match-Lesezugriffe mit shallow fetch verkürzen Cold-Start-Git-Zeit ohne Schreib-Races.
  • Lane-Keychains halten Distribution außerhalb der SSH-VNC-Matrix-GUI-Session.
  • flock -w 600 ist Standard bei 45–90-minütigen Archiven und zwei Lanes auf einem Builder.
  • Sicherheit: kein gemeinsamer SSH-Agent zwischen interaktiv und CI — siehe Berechtigungs-FAQ.

09 Häufig gestellte Fragen zu Match, Keychain und Codesign-Queue

Können zwei Entwickler gleichzeitig match development ausführen?
Nur mit shallow fetch, Lese-Konkurrenz und serialisierten Schreibvorgängen. Kein paralleles nuke oder Passwort-Rotation.
Soll die CI login.keychain entsperren?
Nein. Lane-Keychain nur im Codesign-Wrapper; VNC-GUI auf separatem Account laut SSH-versus-VNC-Leitfaden.
Wann einen zweiten MeshMac-Knoten hinzufügen?
Bei Lock-Warte-p95 über zwei Minuten oder parallelen Archiven. Lanes auf Knoten splitten — Lastverteilung und Failover.

10 Fazit: Match-Schreiben serialisieren, Keychains partitionieren, dann MeshMac-Mehrknoten skalieren

MeshMac-Mehrknoten-Pakete geben jeder Signing-Lane dedizierte Apple Silicon, sobald Queues sättigen. Pakete und Preise, SSH versus VNC, Mehrknoten-Lastverteilung.

Mac-Knoten und Zugriffsart wählen

Mieten Sie einen geteilten Remote-Mac mit SSH für Fastlane Match, lesen Sie die SSH-versus-VNC-Matrix und das Berechtigungs-FAQ. Startseite, Mehrknoten-Pakete, Hilfezentrum.

Mac-Knoten mieten