Für standardisierte Kotlin-Multiplatform-iOS-Aufgaben sollten Sie zuerst einen verwalteten macOS-Agenten erproben; wählen Sie einen Remote Mac erst, wenn Sie feste Toolchain-Kontrolle, eigenen Knotenzugriff oder eine private Umgebungsanbindung benötigen. Diese Empfehlung gilt, solange der Agent Ihre tatsächlichen Build-, Test- und Freigabeanforderungen abdeckt. Diese Woche: Erfassen Sie die vorhandene Toolchain und führen Sie denselben Commit auf dem kleinsten passenden macOS-CI-Pfad aus.
Geeignet für: Soloentwickler ohne eigenen Mac, die ein KMP-iOS-Ziel prüfen möchten.
Technische Verantwortliche, die ein KMP-Projekt aus dem Versuchsbetrieb in einen Teamprozess überführen.
DevOps-Teams, die einen verwalteten Agenten und einen kontrollierten Remote Mac anhand ihrer Anforderungen abgrenzen müssen.
Zuletzt aktualisiert am 18.10.2026; geprüft anhand der verlinkten offiziellen Kotlin-, Gradle-, Apple- und Runner-Dokumentation. Verfügbarkeiten und Angebotsdetails sollten Sie vor der Veröffentlichung erneut prüfen.
SECTION 01 Lieferumfang und macOS-Grenze in der CI
Kotlin Multiplatform iOS CI auswählen heißt zuerst, die Pipeline nach Aufgaben zu teilen: Gemeinsame Kotlin-Logik und geeignete plattformunabhängige Tests können Sie in einer bereits vorhandenen Umgebung prüfen. Sobald Sie jedoch Apple-Ziele bauen oder einen iOS-Simulator verwenden, benötigen Sie eine macOS-Ausführungsstufe mit Xcode. Das ist eine Plattformanforderung, kein Argument dafür, sämtliche KMP-Arbeit auf einen Mac zu verlagern. Die Kotlin-Dokumentation zu Plattformanforderungen beschreibt die Bindung der Apple-Ziele an macOS und Xcode; die KMP-Schnellstartanleitung für iOS führt die iOS-Erstellung als Apple-Workflow aus.
Ordnen Sie die Jobs in Ihrer bestehenden Pipeline daher nach ihrem tatsächlichen Ausführungsort:
- Gemeinsame Quellen und Logik: Lassen Sie Kompilierung und Tests dort laufen, wo Ihre vorhandene Kotlin- und Gradle-Konfiguration unterstützt wird.
- iOS-Ziel: Fügen Sie einen macOS-Job hinzu, der das iOS-Framework oder die App mit der benötigten Xcode-Toolchain erstellt.
- Simulatorprüfung: Planen Sie diese nur ein, wenn Ihr Projekt Verhalten in einer iOS-Laufzeit oder eine entsprechende Integration verifizieren muss.
- Signierung und Verteilung: Führen Sie diese Schritte als gesonderten Teil des Lieferwegs; sie folgen nicht automatisch aus einem grünen Build.
Damit vermeiden Sie zwei unnötige Extreme: weder benötigen Sie einen Mac für jede Prüfung gemeinsamer Kotlin-Quellen, noch können Sie aus einem erfolgreichen plattformübergreifenden Test ableiten, dass das iOS-Artefakt baubar oder veröffentlichungsbereit ist.
Die offizielle Kotlin-Anleitung für iOS-CI/CD zeigt einen möglichen Ablauf über einen macOS-Agenten. Verwenden Sie sie als Referenz für die Trennung der Arbeitsschritte, nicht als Beleg dafür, dass jeder Dienst dieselben Xcode-Versionen, Zugriffsmöglichkeiten oder Veröffentlichungsfunktionen bereitstellt. Auch ein verwalteter macOS Agent ist nur dann geeignet, wenn seine tatsächlich angebotene Umgebung zu Ihren Jobs passt.
SECTION 02 Umgebungssteuerung als Auswahlkriterium
Der praktische Unterschied zwischen Managed Build und Remote Mac liegt nicht automatisch in Geschwindigkeit oder Stabilität. Maßgeblich ist, was Sie selbst konfigurieren, einsehen und nach einer Änderung wiederherstellen können. Ein verwalteter Dienst kann die Einrichtung eines standardisierten Jobs vereinfachen, aber seine angebotenen Systemversionen, Installationsrechte und Zugriffsmöglichkeiten müssen Sie anhand der aktuellen Dienstbedingungen prüfen. Ein Remote Mac kann mehr direkte Konfiguration ermöglichen, überträgt dafür aber auch Aufgaben für Pflege, Zugangsschutz und Fehleranalyse an Ihr Team.
Die Dokumentation zu gehosteten Runnern weist auf Eigenschaften und Einschränkungen der gehosteten Ausführungsumgebung hin. Übertragen Sie solche Angaben nicht pauschal auf andere Anbieter. Erstellen Sie stattdessen eine Anforderungsliste für genau den Dienst, den Sie verwenden wollen:
- Können Sie die benötigte Xcode-Version und zusätzliche Werkzeuge auswählen?
- Dürfen Sie eigene Pakete und Skripte installieren, und bleiben diese nach Ende eines Jobs erhalten?
- Welche Protokolle und Testergebnisse lassen sich nach einem fehlgeschlagenen Lauf abrufen?
- Können private Paketquellen, interne Dienste oder abgeschottete Netzwerke erreicht werden?
- Wer ist für Betriebssystemupdates, Berechtigungen und die Wiederherstellung nach einer Änderung zuständig?
Ein Remote Mac ist nicht allein deshalb stabiler, weil er Ihnen gehört oder dauerhaft erreichbar ist. Ebenso ist ein verwalteter Agent nicht automatisch einfacher zu diagnostizieren. Beide Aussagen müssen Sie durch die zugesicherte Funktion und einen Test in Ihrer eigenen Pipeline belegen. Falls Sie vor allem eine Verbindungsmöglichkeit und den praktischen Umgang mit einem gemieteten System klären möchten, beschreibt das VPSNIX-Hilfezentrum den verfügbaren Hilfekanal; prüfen Sie dort die konkreten Angaben, statt einen Funktionsumfang vorauszusetzen.
| Entscheidungskriterium | Verwalteter macOS-Agent | Remote Mac |
|---|---|---|
| Standardisierte Builds | Zuerst prüfen, ob Betriebssystem, Xcode und Werkzeuge des Angebots zum Job passen | Geeignet, wenn Ihr Team die benötigte Konfiguration selbst einrichten kann |
| Toolchain-Steuerung | Durch die angebotenen Images, Installationsrechte und Aktualisierungsmöglichkeiten begrenzt | Abhängig von Zugriffsrechten und eigener Pflege; Änderungen müssen dokumentiert werden |
| Private Anbindung | Nur nutzen, wenn Netzwerkzugriff und Sicherheitsmodell die Anforderungen erfüllen | Kann sinnvoll sein, wenn Ihr Team den Zugang kontrollieren und die Anbindung betreiben kann |
| Signierung | Eignung hängt von Geheimnisverwaltung, Jobrechten und Freigabeweg ab | Zugangsdaten bleiben ebenfalls schutzbedürftig; zusätzliche Konfigurationsfreiheit ersetzt keine Governance |
| Diagnose und Wiederholung | Protokolle, Artefakte und Wiederholungsmöglichkeiten des Angebots verifizieren | Zugriff auf den Knoten kann Diagnose erleichtern, bringt aber Betriebs- und Wiederherstellungsaufwand mit sich |
| Kostenbetrachtung | Abrechnung und Nutzungsregeln des konkret gewählten Angebots prüfen | Miet- oder Beschaffungskosten mit Betrieb, Zugriffsschutz und Pflege zusammenrechnen |
Wichtig: Bewerten Sie nicht den Namen der Betriebsform, sondern die nachweisbare Fähigkeit, Ihre konkrete Pipeline auszuführen und zu betreiben. Ohne vergleichbaren Test sind Aussagen über Laufzeit, Verfügbarkeit oder Wiederherstellung nicht belastbar.
SECTION 03 Kompatibilitätsprüfung für den Testlauf
Ein erfolgreiches KMP-Kompilieren beweist nicht, dass jede Kombination aus Kotlin, Gradle, Xcode, macOS, iOS-Ziel und nativen Abhängigkeiten funktioniert. Prüfen Sie die Versionen als zusammengehörige Konfiguration und starten Sie mit dem Projektstand, den Sie tatsächlich ausliefern wollen: also mit dem eingecheckten Gradle Wrapper, der vorhandenen Plugin-Konfiguration und den festgelegten Abhängigkeiten. Die Kotlin-Multiplatform-Kompatibilitätsübersicht ist die Quelle für offizielle Kompatibilitätsgrenzen; sie ersetzt aber keine Prüfung der konkreten Plugins und nativen Bibliotheken Ihres Projekts.
Der Gradle Wrapper sorgt dafür, dass ein Projekt seine Gradle-Distribution über die mitgelieferte Wrapper-Konfiguration anfordert. Prüfen Sie deshalb nicht nur, ob auf einem Knoten irgendeine Gradle-Version installiert ist. Kontrollieren Sie auch, ob Wrapper-Dateien und Eigenschaften eingecheckt sind und ob der Job den Wrapper aufruft, statt unbemerkt eine systemweite Installation zu verwenden.
Erster Meilenstein: Projektstand festhalten
Notieren Sie aus dem Repository, welche Kotlin-Plugins, Gradle-Wrapper-Einstellungen, Xcode-Annahmen, iOS-Ziele und nativen Abhängigkeiten der aktuelle Branch verwendet. Erfassen Sie außerdem, welche Aufgaben in lokalen Entwickleranleitungen vorausgesetzt werden. Ändern Sie nicht gleichzeitig Toolchain und CI-Ausführungsform: Sonst lässt sich ein Fehler nach dem Test keinem einzelnen Wechsel zuordnen.
Zweiter Meilenstein: Offizielle Grenzen von Projektgrenzen trennen
Ordnen Sie jede Einschränkung einer Quelle zu. Eine offizielle Kompatibilitätsangabe ist etwas anderes als eine Einschränkung eines Drittanbieter-Plugins oder ein festgeschriebener Pfad in einem projektspezifischen Skript. Wenn eine native Bibliothek eine bestimmte Xcode- oder iOS-Konfiguration voraussetzt, prüfen Sie deren aktuelle Dokumentation und den realen Build, statt aus der Kotlin-Kompatibilität auf die gesamte App zu schließen.
Dritter Meilenstein: Auf dem vorgesehenen Agenten nachbauen
Führen Sie den bestehenden Wrapper und dieselben Build-Aufgaben auf dem Kandidaten aus. Verwenden Sie denselben Commit und dasselbe iOS-Ziel wie bei der Referenz. Halten Sie fest, welche Werkzeuge der Agent bereitstellt, welche Ihr Skript installiert und welche Einrichtung außerhalb der Pipeline manuell vorgenommen werden musste.
Wenn die Pipeline nur auf einem Knoten funktioniert, suchen Sie zuerst nach nicht versionierter Konfiguration, Umgebungsvariablen, lokal vorhandenen Abhängigkeiten und impliziten Toolchain-Annahmen. Ein einmaliger Erfolg ohne festgehaltene Umgebung ist kein Nachweis für reproduzierbare Kompatibilität.
SECTION 04 Signierung und Veröffentlichung getrennt abnehmen
Ja: Ein erfolgreicher Build bestätigt nicht, dass Signierung, Export und Upload ebenfalls funktionieren. Behandeln Sie diese Aufgaben als eigene Freigabekette mit festgelegten Zuständigkeiten. Für eine Verteilung müssen die für Ihre App erforderlichen Zertifikate und Profile verfügbar und korrekt zugeordnet sein; wer sie bereitstellt, welcher Job darauf zugreifen darf und wie ein Zugriff entzogen wird, gehört in die Abnahme.
Prüfen Sie den Ablauf in getrennten Abschnitten:
- Build: Erzeugt die Pipeline das erwartete iOS-Artefakt für den vorgesehenen Branch und das vorgesehene Ziel?
- Tests: Werden die benötigten Tests auf dem vorgesehenen System ausgeführt, und bleiben Ergebnisse und Fehlerprotokolle zugänglich?
- Signierung: Kann der freigegebene Job auf die notwendigen Geheimnisse zugreifen, ohne sie in Repository-Dateien, Konsolenausgaben oder dauerhaft gespeicherten Artefakten offenzulegen?
- Upload: Wird das Artefakt tatsächlich an App Store Connect übergeben, und können Sie das Ergebnis im vorgesehenen Konto prüfen?
Apple beschreibt die Vorbereitung einer App für die Verteilung in der Dokumentation zu App-Distribution. Die Anleitung zum Hochladen von Builds in App Store Connect behandelt den Upload als eigenen Schritt. Nutzen Sie diese Trennung bei Ihrer Abnahme: Ein grüner Compile-Job ist nicht dasselbe wie eine bestätigte Upload- und Freigabekette.
Bei einem verwalteten macOS Agenten prüfen Sie, ob die angebotene Geheimnisverwaltung, Zugriffssteuerung und Freigabefolge den internen Vorgaben entsprechen. Bei einem Remote Mac müssen Sie zusätzlich festhalten, wie Zugangsdaten abgelegt, wer sie auslesen darf und wie temporäre Dateien nach einem Job entfernt werden. Beides ist eine Frage der Zugriffsgestaltung; aus der Auswahl eines Knotentyps allein folgt keine Datenschutz- oder Sicherheitsgarantie. Für die Verarbeitung personenbezogener Daten sollten Sie die Zuständigkeiten und Aufbewahrungsregeln mit den geltenden DSGVO-Vorgaben abgleichen. Die VPSNIX-Datenschutzhinweise können Sie für die Prüfung der dort beschriebenen Verarbeitung heranziehen, ersetzen aber nicht Ihre eigene Bewertung des gesamten CI-Datenflusses.
SECTION 05 FAQ: Offene Punkte vor der Entscheidung
KMP-iOS ohne eigenen Mac in CI prüfen
Für gemeinsame Kotlin-Logik und geeignete plattformunabhängige Tests können Sie zunächst Ihre vorhandene Build-Umgebung nutzen. Für iOS-Ziele, Xcode-Aufgaben und Simulatorläufe planen Sie eine macOS-Stufe ein. Ein verwalteter Agent ist ein sinnvoller erster Kandidat, wenn seine Toolchain und seine Zugriffsbedingungen für den konkreten Job reichen. Prüfen Sie den vollständigen Ablauf mit Ihrem Repository, nicht nur mit einem Beispielprojekt.
Verwalteten Agenten oder Remote Mac auswählen
Wenn der Prozess standardisiert ist und das angebotene Image Ihre Aufgaben abdeckt, testen Sie zuerst den Managed Build. Ein Remote Mac ist zu prüfen, wenn Sie eine feste Toolchain selbst pflegen, den Knoten kontrollieren oder private Umgebungen anbinden müssen. Gleichen Sie vor der Entscheidung Zugriff, Installation, Protokolle, Geheimnisverwaltung und Wiederherstellung ab. Unterstellen Sie keinem Modell einen Stabilitäts- oder Geschwindigkeitsvorteil ohne überprüfbare Daten.
Signierung und TestFlight separat abnehmen
Führen Sie Build, Tests, Signierung und Upload als unterscheidbare Prüfschritte. Legen Sie fest, welche Identität Zugang zu Zertifikaten und Profilen erhält, wie eine Freigabe erfolgt und wo der Upload kontrolliert wird. Verifizieren Sie den Ablauf mit dem vorgesehenen App-Store-Connect-Konto. So erkennen Sie, ob ein Fehler aus der Kompilierung, der Geheimnisverwaltung oder der Verteilung stammt, anstatt einen erfolgreichen Build fälschlich als Veröffentlichungsfreigabe zu behandeln.
Remote Mac für KMP selbst betreiben oder mieten
Ein eigener oder gemieteter Remote Mac kommt infrage, wenn kontrollierbare Toolchains, private Netze oder eigene Betriebsabläufe Anforderungen und nicht bloße Wünsche sind. Bestimmen Sie, wer Updates, Zugangsdaten, Diagnose und Wiederherstellung verantwortet. Wenn der verwaltete Agent dieselben Anforderungen erfüllt und die erforderlichen Ergebnisse liefert, gibt es keinen technischen Grund, zusätzlich einen Mac-Knoten zu betreiben. Für eine Entscheidung zählen reale Aufgaben und Zuständigkeiten, nicht die CI-Bezeichnung.
SECTION 06 Betrieb und Reproduzierbarkeit nachweisen
Behandeln Sie den ersten grünen Lauf als Start der Prüfung, nicht als Abschluss. Ein zuverlässiger Entscheidungsnachweis braucht einen wiederholbaren Vergleich: gleicher Commit, gleiches iOS-Ziel, gleiche Eingaben und ein eindeutig zuordenbares Artefakt. Speichern Sie dazu die Laufprotokolle, Testberichte, verwendete Toolchain und relevante Jobparameter so, dass ein Teammitglied einen Fehler ohne Zugriff auf das ursprüngliche Terminal untersuchen kann.
Prüfen Sie anschließend gezielt, was bei einer Änderung oder einem Ausfall geschieht:
- Fehleranalyse: Sind Fehlermeldung, Build-Ausgabe und Testergebnis vollständig genug, um die fehlerhafte Stufe zu bestimmen?
- Wiederholung: Kann derselbe Job erneut ausgeführt werden, ohne dass manuelle Änderungen auf dem Knoten das Ergebnis verfälschen?
- Toolchain-Fixierung: Ist nachvollziehbar, welche System- und Werkzeugversionen eingesetzt werden, und können Änderungen kontrolliert eingeführt werden?
- Neustart und Wiederaufnahme: Sind notwendige Zustandsdaten außerhalb flüchtiger Arbeitsverzeichnisse gesichert, oder muss die Umgebung nach einem Neustart neu eingerichtet werden?
- Aktualisierung: Gibt es einen Testpfad, auf dem Sie System- und Werkzeugänderungen vor einer Übernahme in die Auslieferung prüfen können?
Diese Fragen gelten für beide Betriebsformen. Bei einem verwalteten Agenten prüfen Sie, welche Laufzeitinformationen und Wiederholungsmöglichkeiten der Anbieter tatsächlich zugänglich macht. Beim Remote Mac müssen Sie zusätzlich dokumentieren, wie der Knoten nach einer Aktualisierung wieder in den gewünschten Zustand gelangt. Ohne eigene Messung oder verbindliche Dokumentation sollten Sie keine Aussagen über Wiederanlaufzeit, Verfügbarkeit oder langfristige Betriebskosten treffen.
Vierter Meilenstein: Kontrollierten Vergleich abschließen
Führen Sie den gleichen Commit zunächst auf dem Kandidaten aus und lassen Sie den Lauf nach einer klar definierten Änderung erneut starten, etwa nach einer Änderung an einer Testdatei oder einem Build-Skript. Vergleichen Sie nicht nur den Status „erfolgreich“, sondern auch, ob Protokolle, Artefakt und Toolchain-Angaben auffindbar sind und ob ein anderes Teammitglied den Ablauf nachvollziehen kann. Dokumentieren Sie Abweichungen als offene Aufgaben, bevor Sie den Job für Veröffentlichungen freigeben.
So entsteht eine belastbare Freigabeentscheidung: Der Standardpfad ist reproduzierbar, die Zuständigkeit für Fehler ist klar, und ein Wechsel des Knotens verändert nicht unbemerkt die Voraussetzungen des Builds.
SECTION 07 Kosten und Zugang anhand realer Variablen bewerten
Vergleichen Sie nicht nur die sichtbare Laufzeitabrechnung. Für einen verwalteten Agenten gehören tatsächliche Nutzung, Abrechnungsregeln, verfügbare macOS-Umgebung und gegebenenfalls Kosten für zusätzliche Dienste in die Rechnung. Beim Remote Mac erfassen Sie neben Miet- oder Beschaffungskosten auch die Zeit für Konfiguration, Updates, Zugriffsverwaltung, Diagnose und Wiederherstellung. Wenn ein Team bereits einen nutzbaren Mac besitzt, berücksichtigen Sie außerdem dessen gebundene Kapazität und die Folgen, wenn der Rechner gleichzeitig für andere Aufgaben benötigt wird.
Ersetzen Sie erfundene Kostenschätzungen durch Ihre Messwerte. Erfassen Sie den realen Zeitraum, in dem CI-Aufgaben laufen, deren Häufigkeit, den Aufwand für Wartung und Geheimnisverwaltung sowie die Kosten eines späteren Wechsels. Prüfen Sie aktuelle Tarif- und Leistungsangaben unmittelbar vor Ihrer Entscheidung in der VPSNIX-Übersicht zu Mietangeboten; übernehmen Sie keine Paketdetails, die dort nicht ausdrücklich bestätigt sind. Ohne belastbare Nutzungsdaten lässt sich keine pauschale Aussage treffen, welches Modell günstiger ist.
Wählen Sie nach diesen Bedingungen:
- Standardisierte Builds und Tests: Erproben Sie zuerst den verwalteten Agenten, wenn Toolchain, Zugriff und Ergebnisprotokolle Ihren Abnahmekriterien entsprechen.
- Feste Umgebung oder private Anbindung: Bewerten Sie einen Remote Mac, wenn Sie den Knoten gezielt konfigurieren oder kontrollierte Netzwerkwege benötigen und die Betriebsverantwortung übernehmen können.
- Noch offene Signierung oder Wiederherstellung: Behalten Sie zunächst einen begrenzten Doppelbetrieb bei, bis der vollständige Lieferweg geprüft ist. Erweitern Sie ihn nicht dauerhaft, ohne Aufwand und Zuständigkeit zu dokumentieren.
- Nur gemeinsame Logik zu prüfen: Richten Sie nicht allein deshalb einen Mac-CI-Pfad ein. Ergänzen Sie macOS erst dort, wo Ihre iOS-Ziele, Simulatoren oder Apple-spezifischen Lieferaufgaben es erfordern.
Wenn Ihr heutiger Weg auf einem Linux-System endet, fehlen dort die Apple-spezifischen Ausführungsschritte; ein eigener Mac wiederum bindet Kapital und verlangt Pflege, während ein verwalteter Agent die Umgebungskontrolle begrenzen kann. Benötigen Sie nach der Prüfung einen festen macOS-Knoten, kann ein Remote Mac von VPSNIX eine flexiblere Alternative zum Kauf eigener Hardware sein, sofern die angebotene Umgebung Ihre Anforderungen erfüllt. Prüfen Sie die aktuellen Angebotsbedingungen und testen Sie Ihren tatsächlichen CI-Job, bevor Sie den Produktionspfad umstellen.