Buildkite Enterprise-iOS-CI mit dem Mac verbinden? Leitfaden 2026

Buildkite beschreibt Agenten als Prozesse, die Jobs auf der selbst verwalteten Infrastruktur ausführen. Daraus folgt die zentrale Architekturentscheidung: Buildkite übernimmt die Pipeline-Orchestrierung, ein Mac Agent führt die Aufgaben aus, die macOS oder Xcode voraussetzen. Linux-taugliche Prüfungen bleiben dort, wo ihre Abhängigkeiten erfüllt sind. Eine Queue routet Jobs; sie ist kein Nachweis für Host-Isolation. Buildkite erläutert Agenten und Aufgabenrouting.

Dieser Leitfaden richtet sich an Plattformingenieure, die bestehende iOS-Pipelines an Buildkite anbinden und deren Routing nachweisen müssen.
IT-Verantwortliche erhalten Prüfpunkte für Mac-Konto, Agent-Start und Wartung.
Verantwortliche für Releases und Sicherheit können Testaufgaben von Produktionssignierungen abgrenzen.

Beginnen Sie mit einer Bestandsaufnahme der Pipeline, nicht mit der Installation. Erfassen Sie für jeden Schritt Betriebssystem, Werkzeuge, benötigte Geheimnisse und erzeugte Artefakte. Ein Kompilierungsschritt mit Xcode und ein plattformunabhängiger Quelltext-Check haben unterschiedliche Anforderungen. Werden beide vorschnell auf denselben Mac verschoben, steigen Wartungsaufwand und Konfliktrisiko, ohne dass die Pipeline davon zwingend profitiert.

Aufgabentyp Übliche Ausführungsumgebung Vor der Zuordnung prüfen
Format-, Quelltext- oder plattformunabhängige Prüfungen Eine Umgebung, die alle benötigten Abhängigkeiten bereitstellt Laufzeit, Pakete und Zugriff auf das Repository
iOS-Build mit Xcode macOS-Buildknoten mit passender Xcode-Installation Aktive Toolchain, Projektabhängigkeiten und Artefaktpfad
Tests mit iOS-Simulator Geeigneter Mac mit den erforderlichen Xcode-Komponenten Simulator-Verfügbarkeit, Testplan und Ergebnisablage
Archivierung oder Signierung macOS mit bewusst geregeltem Schlüsselbundzugriff Identität, Provisioning-Material, Freigabe und Geheimniszugriff

Das ist eine Zuordnung nach Abhängigkeiten, keine Vorgabe, die gesamte CI auf macOS zu verlagern. Apple dokumentiert, dass sich die aktiven Kommandozeilenwerkzeuge über die Xcode-Auswahl bestimmen lassen. Deshalb sollte die Pipeline den tatsächlichen Toolchain-Zustand protokollieren, statt nur den Namen einer Queue als Versionshinweis zu behandeln. Apples Anleitung zu Xcode-Kommandozeilenwerkzeugen.

Vor der Installation braucht das Team eine dokumentierte Host-Baseline. Halten Sie macOS-Version, Prozessorarchitektur, vorhandene Xcode-Installationen und geplante Update-Verantwortung fest. Diese Angaben sind Betriebsvoraussetzungen, keine Garantie dafür, dass ein Job damit funktioniert. Die Pipeline muss die konkret benötigte Toolchain verwenden und ihr Ergebnis nachweisen.

Legen Sie außerdem fest, welcher macOS-Benutzer den Buildkite Mac Agent betreibt. Ein interaktives Entwicklerkonto kann lokale Berechtigungen besitzen, die in einem Agent-Prozess nicht verfügbar oder für CI zu weitreichend sind. Ein dediziertes Konto macht Eigentümerschaft und Zugriffsrechte leichter prüfbar. Es muss auf Arbeitsverzeichnisse, Abhängigkeiten und Artefaktpfade zugreifen können; administrative Rechte sollten nicht pauschal erteilt werden.

Element Vor der Installation festhalten Abnahmekriterium
macOS und Architektur Host-Inventar und zuständiges Wartungsteam Angaben sind dem Buildknoten eindeutig zugeordnet
Xcode Installationspfad und erwartete Auswahl Der Job protokolliert den tatsächlich verwendeten Pfad und die Version
Agent-Konto Benutzername, Verzeichnisrechte und Startverantwortung Ein Build funktioniert ohne interaktive Anmeldung
Agent Token Speicherort, Zugriff und Rotationsverantwortung Token erscheint weder in Pipeline-Ausgaben noch im Build-Protokoll
Repository-Zugang verwendete Credential-Methode und Berechtigungsumfang Zugang kann entzogen werden, ohne Signaturmaterial offenzulegen
Signaturmaterial zuständige Freigabe und erlaubte Workloads Nicht vertrauenswürdige Aufgaben erhalten keinen Zugriff

Behandeln Sie Agent Token und Repository-Zugang als getrennte Zugangsdaten. Das Token verbindet den Agent mit Buildkite; der Repository-Zugang ermöglicht den Abruf von Quellcode. Beide gehören nicht in ein eingechecktes Konfigurationsfile, Pipeline-Skript oder eine ungeschützte Protokollausgabe. Prüfen Sie die jeweils geltenden Rechte und Verwaltungsoptionen anhand der Buildkite-Dokumentation zu Agent Tokens.

Planen Sie auch die Schlüsselbundrechte als eigene Freigabe. Ein erfolgreicher Build ohne Signierung beweist nicht, dass der Agent auf das vorgesehene Signaturmaterial zugreifen kann. Umgekehrt sollte die Fähigkeit zur Signierung nicht allein deshalb dauerhaft verfügbar sein, weil ein gewöhnlicher Testjob auf demselben Host läuft.

Installieren und konfigurieren Sie den Agent anhand der aktuellen Buildkite-Anleitung für macOS. Die konkrete Installationsmethode kann sich ändern; verwenden Sie daher die dort dokumentierten Schritte, statt eine alte Befehlsfolge aus einem internen Wiki ungeprüft zu übernehmen. Notieren Sie, unter welchem Benutzer die Installation und der spätere Agent-Prozess laufen. Buildkite beschreibt die Installation selbst gehosteter macOS-Agenten.

Unterscheiden Sie bei der Betriebsprüfung zwischen einem manuell gestarteten Prozess in einer Terminalsitzung und einem nach der Teamkonfiguration dauerhaft verwalteten Dienst. Ein sichtbarer Agent-Prozess sagt allein nicht aus, ob der Dienst nach Abmeldung oder einem Neustart wieder verfügbar wird. Klären Sie, wer Konfiguration, Updates, Startverhalten und Fehlerbehebung verantwortet.

Gehen Sie bei der Einrichtung in dieser Reihenfolge vor:

  1. Host erfassen: Notieren Sie macOS, Architektur, Xcode-Installationen und den zuständigen Betrieb.
  2. Agent-Konto festlegen: Prüfen Sie Arbeitsverzeichnis, Schreibrechte, Schlüsselbundzugriff und Artefaktpfade unter genau diesem Konto.
  3. Agent installieren: Folgen Sie der aktuellen macOS-Anleitung von Buildkite und verwenden Sie ein verwaltetes Agent Token.
  4. Startweise dokumentieren: Halten Sie fest, ob der Agent manuell oder als dauerhaft verwalteter Dienst läuft und wer ihn betreut.
  5. Status und Protokolle prüfen: Kontrollieren Sie Agent-Status, Startprotokoll und Fehlerausgaben, ohne Geheimnisse auszugeben.
  6. Wiederanlauf testen: Führen Sie einen kontrollierten Neustart nach dem vorgesehenen Betriebsverfahren durch und prüfen Sie anschließend, ob der Agent tatsächlich Jobs annehmen und ausführen kann.

Für einen überprüfbaren Xcode-Basistest kann ein Job den aktiven Entwicklerpfad und die Xcode-Version ausgeben:

xcode-select -p
xcodebuild -version

Diese Befehle sind nützlich, weil sie den Zustand des ausführenden Jobs sichtbar machen. Führen Sie sie im Pipeline-Kontext aus, nicht nur in einer Administrationssitzung. Apple beschreibt die Auswahl der aktiven Kommandozeilenwerkzeuge in seiner Dokumentation zu Xcode-Einstellungen. Das Team sollte die erwartete Ausgabe mit der Projektvorgabe vergleichen und bei einer Abweichung den Build stoppen oder gezielt auf die freigegebene Toolchain verweisen.

Betriebshinweis: Ein erreichbarer Agent ist nur ein Teil der Wiederanlaufprüfung. Erst ein nach dem Neustart erfolgreich angenommener Job zeigt, dass Dienststart, Queue-Zuordnung, Benutzerrechte und Build-Werkzeuge zusammenarbeiten.

Erstellen Sie eine Queue-Zuordnung nach benötigter Ausführungsumgebung und Vertrauensstufe. Verwenden Sie für den Mac Agent eine Queue, die in den Pipeline-Schritten explizit angefordert wird. Buildkite dokumentiert Queues als Mittel, Agenten und Aufgaben zu verwalten; die Zuordnung belegt jedoch nicht automatisch Betriebssystemversion, Xcode-Version oder Host-Isolation. Die Buildkite-Dokumentation zur Queue-Verwaltung ist die maßgebliche Referenz für die aktuelle Konfiguration.

Trennen Sie Plattformanforderungen von Sicherheitsanforderungen. Ein Schritt kann macOS benötigen, ohne Signaturrechte zu benötigen. Ein anderer kann Produktionsmaterial erfordern und deshalb eine strengere Autorisierung und Ausführungsumgebung brauchen. Eine Queue-Benennung wie „signing“ ist nur ein Routingmerkmal, bis Berechtigungen und Host-Konfiguration unabhängig überprüft wurden.

Pipeline-Schritt Routing-Entscheidung Nachweis im Build
Plattformspezifischer Xcode-Build Mac Queue und erforderliche Agent-Merkmale anfordern Agent-Identität, Toolchain-Ausgabe und Build-Resultat
Simulator-Test Mac Queue mit benötigten Xcode-Komponenten nutzen Testprotokoll und gespeichertes Testergebnis
Plattformunabhängige Prüfung Auf einer Umgebung ausführen, die alle Abhängigkeiten erfüllt Job-Protokoll und erzeugtes Prüfergebnis
Produktionssignierung Nur nach Freigabe in eine dafür autorisierte Ausführungsumgebung routen Genehmigung, verwendete Identität und Protokollprüfung
Nicht vertrauenswürdiger Pull Request Keine Produktionsgeheimnisse bereitstellen Nachweis der erlaubten Credentials und der tatsächlichen Job-Zuordnung

Prüfen Sie die Routing-Regel anhand des Build-Protokolls. Der Queue-Name im Pipeline-Code reicht nicht als Beleg, dass der vorgesehene Agent den Schritt übernommen hat. Halten Sie Agent-Identität und relevante Metadaten fest und kontrollieren Sie, ob der Job tatsächlich auf dem erwarteten Host ausgeführt wurde. Eine solche Prüfung deckt auch falsch konfigurierte Agent-Filter oder eine unerwartete Zuordnung auf.

Als Entscheidungshilfe gilt:

  • Wenn ein Schritt Xcode, macOS oder einen iOS-Simulator voraussetzt, dann routen Sie ihn an einen passenden Mac Agent; andernfalls bleibt er in einer Umgebung, die seine tatsächlichen Abhängigkeiten erfüllt.
  • Wenn ein Testjob keine Produktionssignierung benötigt, dann geben Sie ihm keine Produktionsidentität; andernfalls muss vor der Freigabe eine gesonderte Autorisierung samt Zugriffsnachweis vorliegen.
  • Wenn ein Pull Request nicht vertrauenswürdig ist, dann sperren Sie Produktionsgeheimnisse für diesen Lauf; eine separate Queue ist nur ein Teil der Prüfung, kein Ersatz für Rechte- und Hostkontrollen.
  • Wenn ein Agent nach einem Neustart zwar online erscheint, aber kein repräsentativer Job erfolgreich läuft, dann gilt die Wiederherstellung als nicht abgenommen.

Die Sicherheitsentscheidung betrifft mehr als das Pipeline-YAML. Prüfen Sie gemeinsam Agent Token, Repository-Zugang, macOS-Benutzer, Host-Zugriff, Schlüsselbund, Signaturmaterial und Protokollierung. Legen Sie fest, wer diese Einstellungen genehmigt und wer Änderungen überwacht. Buildkite stellt eine Sicherheits-Checkliste für die Plattform bereit; die konkrete Freigabe muss zusätzlich zur eigenen Unternehmensrichtlinie passen.

Für gewöhnliche Build- und Testjobs sollte nur die Berechtigung verfügbar sein, die für Quellcode, Abhängigkeiten und Testresultate benötigt wird. Produktionssignierung ist davon zu trennen. Wird ein gemeinsamer Host verwendet, darf die Queue nicht als ausreichende Sicherheitskontrolle interpretiert werden: Jobs können auf derselben Infrastruktur laufen, während der tatsächliche Schutz von Benutzerrechten, Prozesszugriff und Credential-Verwaltung abhängt.

Untersuchen Sie für nicht vertrauenswürdige Beiträge, ob Pipeline-Änderungen selbst geheime Werte auslesen oder in Ausgaben schreiben könnten. Verlassen Sie sich nicht allein auf die Absicht des Beitragenden oder auf eine Maskierung im Protokoll. Begrenzen Sie den verfügbaren Zugang und kontrollieren Sie, welche Geheimnisse der konkrete Job erhält. Die Buildkite-Sicherheitscheckliste sollte neben den internen Freigaben als Kontrollpunkt dienen, nicht als Ersatz für die Bedrohungsanalyse des eigenen Workflows.

Für die Produktionssignierung dokumentieren Sie den genehmigenden Verantwortlichen, den vorgesehenen Job, die zugänglichen Signaturidentitäten und den Ort der Freigabeaufzeichnung. Prüfen Sie außerdem, ob Build-Protokolle sensible Pfade, Credential-Inhalte oder ungewollt ausgegebene Umgebungswerte enthalten. Bei einer Abweichung muss der Lauf gestoppt und die Ursache geklärt werden, bevor eine Veröffentlichung freigegeben wird.

Wählen Sie einen repräsentativen Projektlauf, der den tatsächlichen Weg von der Quellcode-Abholung bis zum Testergebnis abbildet. Ein Agent, der lediglich als online angezeigt wird, ist kein ausreichender Abnahmenachweis. Der Lauf muss zeigen, dass die Pipeline den richtigen Agent erreicht, der Agent unter dem vorgesehenen macOS-Konto arbeitet und die erwartete Xcode-Toolchain verwendet.

Prüfen Sie die Ausführung in einer nachvollziehbaren Reihenfolge:

  1. Quellcode: Bestätigen Sie, dass der Agent das erwartete Repository und den vorgesehenen Commit erhält.
  2. Routing: Kontrollieren Sie im Job-Protokoll, welcher Agent und welche Queue die Aufgabe ausgeführt haben.
  3. Toolchain: Vergleichen Sie xcode-select -p und xcodebuild -version mit der freigegebenen Projektvorgabe.
  4. Build und Tests: Führen Sie den realen Build und die vorgesehenen Tests aus; prüfen Sie Fehlerausgaben statt nur den Job-Endstatus.
  5. Testergebnisse: Speichern Sie die Ergebnisse so, dass sie später geprüft werden können. Apple beschreibt den Ablauf zum Ausführen von Tests und Interpretieren der Ergebnisse.
  6. Artefakte und Freigabe: Kontrollieren Sie Ablage, Zugriff und Aufbewahrung der erzeugten Artefakte. Führen Sie Archivierung und Signierung nur dann aus, wenn sie zum Abnahmefall gehören und die Freigabe vorliegt.
  7. Betriebsnachweis: Bewahren Sie Agent-Status, relevante Protokolle, Toolchain-Ausgabe, Testergebnisse und gegebenenfalls die Release-Genehmigung zusammen auf.

Bei Tests kann ein Ergebnis-Bundle die spätere Analyse erleichtern. Apple erläutert in der Dokumentation zum Testen und Interpretieren von Ergebnissen, wie Xcode Testergebnisse bereitstellt. Legen Sie im Team fest, wo dieses Ergebnis abgelegt wird und wer darauf zugreifen darf. Ein erfolgreiches Build ohne aufbewahrbares Testergebnis kann für Fehleranalyse und Audit weniger aussagekräftig sein.

Die Abnahme ist erst vollständig, wenn auch der Betriebsweg geprüft wurde: Wer aktualisiert macOS und Xcode? Wer rotiert Zugangsdaten? Wie wird ein defekter Agent erkannt und wiederhergestellt? Welche Protokolle werden geprüft, und wie lange bleiben Build-Artefakte verfügbar? Diese Fragen sind keine pauschale Eigenschaft einer Queue. Sie gehören in die Zuständigkeiten und Betriebsdokumentation des Teams.

Welche Pipeline-Schritte gehören auf einen Mac Agent?

Schritte, die Xcode, macOS oder iOS-Simulatoren voraussetzen, gehören auf einen passenden macOS-Buildknoten. Plattformunabhängige Prüfungen können außerhalb des Macs laufen, wenn ihre Werkzeuge und Abhängigkeiten dort verfügbar sind. Entscheidend ist der Nachweis aus dem echten Job: Toolchain-Ausgabe, Agent-Identität, Testergebnis und Artefaktablage.

Ist ein eigener macOS-Benutzer für den Agent sinnvoll?

Ein dediziertes Konto erleichtert die Kontrolle von Verzeichnis- und Schlüsselbundrechten sowie die Trennung von Entwicklerzugängen. Es sollte nicht automatisch Administratorrechte erhalten. Testen Sie den Build unter genau diesem Konto und erweitern Sie Signaturzugriffe nur für freigegebene Aufgaben. Eine erfolgreiche interaktive Sitzung eines Administrators ersetzt diesen Test nicht.

Beweist eine Queue die Trennung von Test und Produktion?

Nein. Eine Queue routet Jobs zu Agenten, beweist aber allein keine Isolation des Hosts und keine Trennung der lokalen Berechtigungen. Prüfen Sie zusätzlich Benutzerkonto, Host-Zugriff, Agent Token, Repository-Credentials und Schlüsselbundrechte. Produktionssignaturen sollten nicht für nicht vertrauenswürdige Beiträge verfügbar sein.

Wie weise ich die verwendete Xcode-Installation nach?

Geben Sie im konkreten Build xcode-select -p und xcodebuild -version aus und vergleichen Sie die Werte mit der Projektvorgabe. Bei mehreren Installationen sollte die Pipeline die gewünschte Auswahl kontrolliert festlegen. Bewahren Sie die Ausgabe mit dem Job-Protokoll auf, damit sie einer tatsächlichen Ausführung zugeordnet bleibt.

Ein vorhandener Linux-Runner kann allgemeine Prüfungen weiterhin effizient übernehmen, führt aber keine Xcode-abhängigen iOS-Builds auf macOS aus. Eigene Mac-Hardware bietet direkte Kontrolle, bindet das Unternehmen jedoch an Beschaffung, Wartung, Ersatzplanung und die Organisation des Fernzugriffs. Ein gemieteter Remote Mac kann für ein Projekt oder einen zeitlich begrenzten CI-Ausbau eine Alternative sein; die passende Entscheidung hängt von Zugriff, Laufzeit und eigener Betriebsverantwortung ab.

Vor einer Umstellung sollte das Team deshalb dieselben Punkte prüfen wie bei einem selbst betriebenen Knoten: Wer erhält Zugriff? Wie werden Updates und Neustarts behandelt? Welche Agent- und Signaturrechte sind vorgesehen? Welche Leistung, Verfügbarkeit, Region und Lieferbedingungen sind tatsächlich zugesichert? Diese Angaben müssen vor einer Kauf- oder Mietentscheidung anhand der konkreten Angebotsinformationen geprüft werden; hier werden keine nicht belegten Preise oder Leistungswerte angesetzt.

Wenn eigene Hardware dauerhaft ausgelastet ist und das Unternehmen Host-Betrieb und Ersatz selbst steuern möchte, kann der Kauf besser passen. Wenn dagegen ein zusätzlicher Mac-Knoten für eine neue Pipeline, einen begrenzten Zeitraum oder eine flexible Kapazitätsphase gebraucht wird, lässt sich ein Remote-Mac-Angebot von NOVAKVM als weitere Betriebsoption prüfen. Verfügbare Modelle und Bedingungen sind vor der Entscheidung auf der NOVAKVM-Seite zu Mac-mini-Angeboten zu verifizieren. Entscheidend bleibt, dass der gewählte Knoten die in diesem Leitfaden beschriebenen Zugriffs-, Toolchain- und Abnahmekriterien erfüllt.

Richten Sie Ihre iOS-Builds auf einem eigenen Mac-Knoten ein

Mit NOVAKVM nutzen Sie physische Apple-Silicon-Macs als dedizierte Knoten für Ihre macOS-Build-Umgebung.

Verbinden Sie sich per SSH mit vollem Root-Zugriff und richten Sie Ihre Werkzeuge und Agenten nach Ihren Anforderungen ein.

Preise ansehen →