Symptom: Veraltete Branch-Builds laufen weiter, während neue Commits bereits vorliegen.
Schnellste Lösung: Aktivieren Sie automatische Abbrüche für ersetzbare Branch-Prüfungen; schützen Sie Release-Archive und nicht sicher wiederholbare Workflows durch eine getrennte Konfiguration.
Dieser Leitfaden richtet sich an IT- und Plattformverantwortliche, die Xcode-Cloud-Trigger und Abbruchregeln für Unternehmens-CI festlegen.
Er ist auch für Teams gedacht, die UI-Tests, TestFlight-Verteilung oder Release-Archive vor unbeabsichtigten Unterbrechungen schützen müssen.
Automatische Build-Abbrüche nach dem Ergebniswert entscheiden
Behandeln Sie „Automatisch abbrechen“ nicht als allgemeine Warteschlangenbereinigung. Die relevante Frage lautet: Wird das laufende Ergebnis durch einen neueren Build desselben Workflows ersetzt, und kann der ältere Lauf ohne Verlust von Diagnose-, Prüf- oder Liefernachweisen entfallen?
Apple dokumentiert, dass ein Workflow Startbedingungen besitzt und dass bei aktivierter automatischer Abbruchoption ein laufender Build abgebrochen werden kann, wenn für denselben Workflow ein neuer Build ansteht. Prüfen Sie die genaue Einstellung in der aktuellen Workflow-Konfiguration und lesen Sie die offizielle Xcode-Cloud-Workflow-Referenz. Die Aussage bezieht sich auf denselben Workflow; leiten Sie daraus keine allgemeine Regel für andere Workflows oder eine abgeschlossene Veröffentlichung ab.
Die sichere Entscheidung hängt von der Aufgabe ab:
- Ersetzbare Verifikation: Der neueste Commit ist maßgeblich; ältere Prüfläufe müssen nicht vollständig abgeschlossen werden.
- Eigenständiger Nachweis: Jeder Lauf dokumentiert einen bestimmten Commit, Fehlerzustand oder Freigabeschritt. Ein neuerer Commit macht diesen Nachweis nicht automatisch überflüssig.
- Lieferung: Archivierung und Verteilung haben ein Ergebnis außerhalb der bloßen Branch-Prüfung. Ein abgebrochener oder gestarteter Workflow beweist nicht, dass die App ausgeliefert wurde.
Apple beschreibt Startbedingungen als Teil der Workflow-Strategie. Verwenden Sie die Anleitung zur Entwicklung einer Xcode-Cloud-Workflow-Strategie, um Auslöser nach dem Zweck des Workflows einzuordnen, statt alle Aufgaben an dieselbe Branch-Änderung zu koppeln.
Wird ein bereits laufender Build tatsächlich abgebrochen?
Das kann passieren: Bei aktivierter Option kann Xcode Cloud einen laufenden Build desselben Workflows abbrechen, wenn ein neuer Build für diesen Workflow ansteht. Ob die Einstellung in Ihrer Konfiguration greift, müssen Sie anhand eines Testlaufs und des tatsächlichen Build-Status verifizieren. Prüfen Sie dazu auch die aktuelle Beschreibung der Workflow-Einstellungen und Aktionen.
Branch-Änderungen: veraltete Verifikation aus dem Weg nehmen
Für eine Branch-Prüfung ist ein älterer Lauf häufig ersetzbar, wenn der neue Commit denselben Prüfzweck erfüllt. Das gilt etwa für Kompilierung und grundlegende Tests, die den aktuellen Stand eines Entwicklungszweigs bewerten. Entscheidend ist nicht allein, dass ein Commit neuer ist. Entscheidend ist, ob der ältere Lauf noch eine eigene Diagnose oder einen vorgeschriebenen Freigabenachweis liefert.
Richten Sie die Startbedingungen gezielt ein. Apple dokumentiert konfigurierbare Workflow-Trigger; welche Trigger verfügbar sind und wie sie eingerichtet werden, erläutert die Anleitung zum ersten Xcode-Cloud-Workflow. Prüfen Sie in Ihrer eigenen Konfiguration, welche Branches und Ereignisse tatsächlich den Workflow auslösen. Verlassen Sie sich nicht auf einen angenommenen Standard.
Wie behalten Sie bei neuen Commits nur die aktuelle Verifikation?
Verwenden Sie einen Workflow für die austauschbare Branch-Prüfung, begrenzen Sie seine Auslöser auf die benötigten Branch-Ereignisse und aktivieren Sie dort den automatischen Abbruch. Kontrollieren Sie anschließend, ob der neue Lauf wirklich den gewünschten Commit prüft und ob dessen Ergebnis die Teamfreigabe erfüllt.
Ein konkreter Prüfablauf:
- Erfassen Sie vor der Änderung den Workflow-Namen, die Startbedingung und den betroffenen Branch.
- Notieren Sie den Commit, der den Lauf ausgelöst hat. Apple stellt in der Umgebungsvariablen-Referenz unter anderem Variablen wie
CI_BRANCHundCI_COMMITbereit, mit denen Sie Branch und Commit im Laufkontext zuordnen können. - Aktivieren Sie den automatischen Abbruch nur für einen Workflow, dessen ältere Ergebnisse entbehrlich sind.
- Lösen Sie einen kontrollierten Test aus, bei dem für denselben Workflow ein neuer Build ansteht.
- Vergleichen Sie den vorherigen und den neuen Lauf: Auslöser, Commit-Zuordnung, Abbruchstatus und finales Prüfergebnis.
- Wiederholen Sie die Kontrolle mit einem Lauf, der nicht abgebrochen werden darf, beispielsweise einem getrennten Release-Workflow.
Protokollieren Sie, ob die Änderung tatsächlich den erwarteten Lauf betrifft. Eine erfolgreiche Konfigurationsänderung ist kein Beleg dafür, dass der richtige Build abgebrochen oder die Branch-Prüfung bestanden wurde.
Schnelle Folge-Commits: ersetzbare Prüfungen von Diagnose trennen
Bei kurzen Push-Abständen kann jeder neue Build mit einer älteren Verifikation konkurrieren. Für eine schnelle Rückmeldung zum aktuellen Branch-Stand kann es sinnvoll sein, nur das aktuelle Ergebnis zu verlangen. Anders liegt der Fall, wenn Sie jeden Lauf zur Fehleranalyse, zur Nachverfolgung eines bestimmten Commits oder für interne Kontrollen benötigen.
Soll der neueste Commit immer den vorherigen Build ersetzen?
Nein. Ersetzen Sie ältere Läufe nur dann, wenn sie dieselbe Frage beantworten und kein eigenständiger Nachweis verloren geht. Wenn ein Lauf beispielsweise eine gezielte Fehleranalyse für einen bestimmten Commit enthält, kann ein späterer Commit diese Information nicht nachträglich ersetzen.
Trennen Sie daher zwei Aufgaben:
- Aktuelle Branch-Verifikation: auf den relevanten Branch begrenzter Trigger; automatische Abbrüche können passen, wenn nur der aktuelle Stand zählt.
- Diagnose und Audit: eigener Workflow oder ein bewusst nicht abgebrochener Lauf, wenn Ergebnisse commitbezogen erhalten bleiben müssen.
Nutzen Sie Build- und Workflow-Informationen zur Zuordnung. Ein Eintrag „abgebrochen“ ist weder ein erfolgreicher Test noch ein Beleg für die Freigabe des neueren Commits. Apple erläutert in der Dokumentation zum Ausführen von Tests und Interpretieren der Ergebnisse, wie Testergebnisse zu bewerten sind. Legen Sie im Team fest, welches Ergebnis als erforderliche Branch-Prüfung zählt und wer Abbrüche bei der Fehlersuche nachvollzieht.
UI-Regression: teure Prüfungen gezielter auslösen
Ein UI-Testlauf kann einen anderen Zweck erfüllen als die schnelle Verifikation eines Branches. Wenn die Tests mehrere Simulator-Konfigurationen abdecken, starten Sie diesen Workflow nicht automatisch bei jeder Änderung, nur weil der Branch-Workflow ebenfalls ausgelöst wird. Entscheiden Sie anhand des Testumfangs, der benötigten Freigabe und der Frage, ob jeder Commit tatsächlich eine vollständige UI-Rückmeldung braucht.
Müssen UI-Tests bei jeder Änderung laufen?
Nicht zwangsläufig. Verwenden Sie einen präzisen Trigger oder einen separaten UI-Workflow, wenn vollständige Regressionstests nur für bestimmte Änderungen, Prüfpunkte oder Freigaben benötigt werden. Entscheidend ist, dass Ihre Teamregeln weiterhin ein gültiges Testergebnis verlangen und nicht lediglich einen gestarteten Workflow.
Prüfen Sie vor der Umstellung:
- Welche Änderungstypen müssen die UI-Prüfung auslösen?
- Ist der Workflow unabhängig von der schnellen Branch-Verifikation?
- Wird ein abgebrochener UI-Lauf im Freigabeprozess korrekt als unvollständig behandelt?
- Kann ein neuer Lauf den Testauftrag ersetzen, oder muss der ältere Lauf als Diagnose erhalten bleiben?
Die Apple-Dokumentation zu Tests und Testergebnissen ist die Referenz für die Auswertung. Ein Abbruch bedeutet nicht, dass Tests bestanden wurden. Halten Sie deshalb im Team-Gate fest, ob ein erfolgreicher UI-Test zwingend erforderlich ist und wie fehlende Ergebnisse behandelt werden.
Release-Archive: Lieferergebnisse vor Abbruch schützen
Ein Workflow, der ein Release-Archiv erstellt oder Builds zur Verteilung vorbereitet, sollte nicht automatisch dieselbe Behandlung erhalten wie eine laufende Branch-Prüfung. Ein neuer Commit kann zwar den Quellstand ändern, aber er ersetzt nicht ohne Weiteres ein bereits angefordertes Release-Ergebnis oder dessen Nachverfolgbarkeit.
Apple stellt eine eigene Anleitung für Workflows zum Erstellen einer App für die Verteilung bereit. Ordnen Sie Archivierung und Verteilung daher einem klar definierten Workflow zu. Wenn ein Abbruch ein benötigtes Archiv oder einen vorgesehenen Verteilungsschritt verwerfen könnte, deaktivieren Sie die automatische Abbruchoption für diesen Workflow oder trennen Sie ihn von der alltäglichen Branch-Verifikation.
Muss die automatische Abbruchoption bei einem Release-Workflow ausgeschaltet sein?
Schalten Sie sie aus, wenn ein laufender Release-Build nicht sicher durch einen neueren Lauf ersetzt werden kann. Ist ein Abbruch fachlich zulässig, dokumentieren Sie die Bedingungen und testen Sie, dass kein notwendiges Archiv oder Verteilungsergebnis verloren geht. Treffen Sie die Entscheidung pro Workflow, nicht pauschal für das ganze Projekt.
Prüfen Sie nach jedem Release-Lauf drei voneinander getrennte Ergebnisse: den Build-Status, den Status des Archivs und den Status der Verteilung. Apple beschreibt Build-Status in App Store Connect und den Ablauf zum Hochladen von Builds. Ein Workflow kann beendet sein, ohne dass daraus bereits eine erfolgreiche Verteilung folgt. Verwenden Sie deshalb den bestätigten Status im jeweiligen Schritt als Abnahmekriterium.
Bewahren Sie für die Freigabe zusätzlich fest, welcher Commit zum Archiv gehört und welcher Build tatsächlich verteilt wurde. So vermeiden Sie, dass ein späterer Branch-Lauf als Ersatzbeleg für ein früheres Release verwendet wird.
Gemischte CI: Übergaben zwischen Xcode Cloud und Mac-Knoten prüfen
Xcode Cloud eignet sich für Workflows, deren Startbedingungen und Ergebnisse in der Cloud-Umgebung des Dienstes bleiben können. Ein selbst verwalteter Mac-Knoten kann sinnvoll sein, wenn Sie eine festgelegte Ausführungsumgebung, eigene betriebliche Kontrollen oder einen spezifischen Übergabeschritt benötigen. Behandeln Sie das als Aufgabenverteilung, nicht als pauschale Leistungs- oder Kostenentscheidung.
Dokumentieren Sie für jede Übergabe den auslösenden Workflow, den übergebenen Commit, das erwartete Artefakt und die Stelle, an der ein Mensch oder ein nachgelagerter Job das Ergebnis abnimmt. Vergleichen Sie die jeweiligen Laufprotokolle und Resultate. Übernehmen Sie nicht allein deshalb einen Workflow auf einen Mac-Knoten, weil ein Cloud-Lauf abgebrochen wurde.
Bei selbst verwalteten Knoten gehören Zugriffsschutz und Datenverarbeitung in die Abnahme. Prüfen Sie, welche Quellstände, Signaturmaterialien und Build-Artefakte auf dem Knoten liegen, wer darauf zugreifen darf und wie temporäre Daten entfernt werden. Für Unternehmen mit DSGVO-Anforderungen sind außerdem Vertragsbedingungen, Zuständigkeiten und der tatsächliche Speicher- und Verarbeitungsort zu klären. Leiten Sie eine Konformität nicht allein aus der Bezeichnung „Remote Mac“ ab.
Wenn Sie einen gemieteten Mac als Ausführungsknoten erwägen, können Sie zunächst die verfügbaren Mac-Optionen von MACCOME prüfen. Nehmen Sie einen Knoten erst in die produktive CI auf, nachdem Sie Zugriff, Workflow-Übergabe, Ergebniszuordnung und Wiederherstellung im eigenen Prozess abgenommen haben.
| Workflow-Szenario | Automatischer Abbruch | Trigger- und Abnahmekriterium |
|---|---|---|
| Branch-Kompilierung und ersetzbare Verifikation | Aktivieren, wenn nur der aktuelle Stand zählt | Branch und Commit des neuen Laufs prüfen; erfolgreiche Verifikation verlangen |
| Commitbezogene Diagnose oder Audit | Deaktivieren oder separat ausführen | Nachweis für den jeweiligen Commit aufbewahren |
| UI-Regression | Nur bei klarer Ersetzbarkeit aktivieren | Präzisen Trigger festlegen; erforderliches Testergebnis im Team-Gate prüfen |
| Archivierung und Verteilung | Im Zweifel deaktivieren oder Workflow trennen | Build-, Archiv- und Verteilungsstatus getrennt bestätigen |
| Übergabe an einen Mac-Knoten | Nach Übergabezweck entscheiden | Commit, Artefakt, Protokoll und Abnahmezuständigkeit nachverfolgen |
| Prüfschritt | Was Sie verifizieren | Akzeptanzbedingung |
|---|---|---|
| Trigger | Ereignis und Branch, die den Workflow gestartet haben | Der Workflow startete nur für den vorgesehenen Anlass |
| Commit-Zuordnung | Branch- und Commit-Information des Laufs | Der Lauf ist dem erwarteten Quellstand zugeordnet |
| Abbruch | Status des älteren Laufs und Grund der Ablösung | Nur ein ersetzbarer Lauf wurde abgebrochen |
| Testergebnis | Ergebnis der benötigten Prüfungen | Abbruch wird nicht als bestandener Test behandelt |
| Release | Build-, Archiv- und Verteilungsstatus | Das geforderte Release-Ergebnis ist bestätigt |
| Übergabe | Artefakt und zuständiger nächster Prozessschritt | Der Folgeschritt nimmt genau das erwartete Ergebnis an |
Wenn Ihr Team derzeit alle Branch-Prüfungen, UI-Tests und Release-Aufgaben in einem gemeinsamen Workflow bündelt, bleiben Trigger und Abbruchfolgen schwer zuzuordnen. Ein selbst verwalteter Mac kann diese Grenzen für ausgewählte Aufgaben klarer ziehen, bringt aber eigene Arbeit für Zugriffsschutz, Wartung, Kapazitätsplanung und Störungsbehebung mit sich. Für kurzzeitige Integrations- oder Abnahmetests können Sie die Remote-Mac-Mietoptionen von MACCOME prüfen; bei dauerhaft hoher Last oder benötigter lokaler Hardware ist ein eigener Mac unter Umständen die passendere Lösung.
Wenn Sie eine Übergabe praktisch erproben möchten, starten Sie mit einer nicht produktiven CI-Aufgabe und dokumentieren Sie die Annahmekriterien, bevor Sie Release-Arbeiten verlagern. Informationen zum Einstieg finden Sie auf der MACCOME-Seite für Mac-Angebote.