GitHub kennzeichnet den Runner xcode-27 in seiner Dokumentation zu GitHub-hosted Runnern als Public Preview. Symptom: Ein passendes Runner-Label ist vorhanden, aber der Build benötigt interne Dienste. Schnellste Lösung: Behandeln Sie das Label nicht als Nachweis für privaten Netzwerkzugang. Prüfen Sie den konkreten Runner-Typ; routen Sie Jobs mit nicht erreichbaren internen Abhängigkeiten zunächst auf einen selbst gehosteten Mac oder passen Sie deren Abhängigkeiten an.
Dieser Leitfaden richtet sich an IT-Verantwortliche, die GitHub Actions mit Unternehmens-Firewalls und privaten Diensten verbinden müssen.
Er hilft Plattformverantwortlichen, PR-, Geräte- und Release-Jobs passend aufzuteilen.
Technische Leiter erhalten Kriterien, um den Bedarf an eigener Mac-Kapazität einzugrenzen.
Zuletzt aktualisiert am 28.09.2026; geprüft anhand der GitHub-Runner-Dokumentation sowie der Apple-Developer-Dokumentation. Da Preview-Status und Runner-Fähigkeiten geändert werden können, prüfen Sie die verlinkten Referenzen unmittelbar vor einer Migration erneut.
SECTION 01Schnellentscheidung nach Build-Szenario
Entscheiden Sie pro Workflow und nicht pauschal für das gesamte Unternehmen. Ein verwalteter Runner kann eine sinnvolle Option für Builds sein, die ausschließlich öffentliche Ressourcen benötigen. Sobald ein Job einen internen Paketserver, eine private API, einen festgelegten Ausgang oder registrierte Geräte voraussetzt, muss genau diese Voraussetzung getestet werden. Ein funktionierender Checkout aus einem privaten Repository belegt für sich genommen weder eine Netzwerkroute ins Unternehmensnetz noch Zugriff auf andere private Dienste.
| Build-Aufgabe | Netzwerk- und Geräteanforderung | Geeigneter Startpunkt |
|---|---|---|
| Öffentliche Abhängigkeiten prüfen | Öffentliche Paketquellen; kein Unternehmenszugang nötig | Verwalteten Runner mit dem tatsächlich verfügbaren Label testen |
| Pull Request aus privatem Repository bauen | Repository-Zugriff erforderlich; interne Dienste möglicherweise nicht | Repository-Autorisierung und Dienst-Erreichbarkeit getrennt nachweisen |
| Build mit internem Paket- oder Artefaktserver | Private Netzwerkroute und passende Zugangsdaten erforderlich | Runner nur nach erfolgreichem Verbindungstest einsetzen; andernfalls selbst gehosteten Mac oder Abhängigkeitsänderung prüfen |
| Simulator-Tests ausführen | Keine Registrierung eines physischen Testgeräts, sofern der Test sie nicht zusätzlich verlangt | Verwalteten Runner anhand realer Tests validieren |
| Tests auf registrierten Geräten | Gerätebindung und gegebenenfalls passende Entwicklungs-Signierung | Gerät und Signierungsablauf separat abnehmen; kontrollierbaren Mac-Knoten vorsehen, falls Voraussetzungen nicht erfüllt sind |
| Produktionsfreigabe signieren | Geschützte Produktionsberechtigungen und streng kontrollierter Workflow | Signierungsjob getrennt routen und Geheimnisse nur in dafür freigegebenen Jobs bereitstellen |
Die Tabelle ist eine erste Routing-Entscheidung, keine Aussage, dass ein bestimmter Runner alle genannten Funktionen garantiert bereitstellt. Prüfen Sie Label, Betriebssystem, Architektur, Netzwerkverhalten und Berechtigungen für den konkreten Runner-Typ in den GitHub-Referenzen zu hosted Runnern. Insbesondere sollten Sie Fähigkeiten anderer Betriebssysteme oder Runner-Klassen nicht ungeprüft auf macOS übertragen.
SECTION 02Öffentliche Abhängigkeiten und normale Pull Requests
Wenn Quellcode und Abhängigkeiten für den Runner erreichbar sind und der Job weder einen privaten Netzzugang noch ein registriertes Gerät braucht, ist ein GitHub Actions macOS Runner ein Kandidat für einen kontrollierten Migrationstest. Das kann beispielsweise einen PR-Build mit öffentlicher Paketauflösung und Simulator-Tests betreffen. Entscheidend ist, ob die vollständige Pipeline gelingt – nicht, ob die Workflow-Datei ein bestimmtes Label akzeptiert.
Prüfen Sie vor der Verlagerung drei voneinander unabhängige Punkte:
- Label und Plattform: Lassen Sie einen Testlauf den tatsächlich ausgewählten Runner protokollieren. Kontrollieren Sie Plattform und Architektur gegen die Anforderungen Ihres Builds; nehmen Sie nicht an, dass eine Versionsbezeichnung jede benötigte Eigenschaft festlegt.
- Abhängigkeitspfad: Erfassen Sie, welche Paketquellen, Skripte, Lizenzdienste und Artefakt-Endpunkte während des Jobs angesprochen werden. Eine öffentliche Repository-Adresse kann zusätzliche interne Zugriffe verschleiern, etwa wenn ein Installationsskript einen privaten Spiegelserver verwendet.
- Actions-Kompatibilität: Testen Sie die im Workflow verwendeten Community-Actions und eigenen Composite Actions mit dem vorgesehenen macOS-Runner. Prüfen Sie dabei auch Shell-Annahmen, Werkzeugverfügbarkeit und den Umgang mit zwischengespeicherten Dateien.
Ein realistischer Testlauf enthält mindestens denselben Checkout-Pfad, dieselbe Abhängigkeitsauflösung und dieselben Prüfungen wie der spätere Workflow. Vergleichen Sie das erzeugte Ergebnis und die Fehlermeldungen mit dem bisherigen Job. Eine grüne Minimalpipeline, die nur den Runner startet, ist kein ausreichender Migrationsnachweis.
Praxisfall: Ein Team baut PRs mit frei erreichbaren Paketquellen, während der Release-Job zusätzlich ein internes Artefakt abruft. Der PR-Job kann nach erfolgreicher Prüfung auf einen verwalteten Runner wechseln; für den Release-Job muss das Team zuerst nachweisen, dass dessen benötigter Artefaktpfad erreichbar ist. So bleibt die Entscheidung an der einzelnen Aufgabe festgemacht, statt einen erfolgreichen PR-Build fälschlich als Freigabe für sämtliche Workflows zu behandeln.
SECTION 03Können GitHub Actions macOS Runner auf private Unternehmensdienste zugreifen?
Nur dann, wenn der konkrete Runner-Typ einen dokumentierten und im eigenen Netzwerk getesteten Pfad zu diesen Diensten hat. Privater Repository-Zugriff und private Netzwerkerreichbarkeit sind unterschiedliche Fähigkeiten: GitHub kann einem Workflow die nötigen Berechtigungen für einen Checkout geben, ohne dadurch eine Verbindung vom Runner zu einem internen API-Endpunkt, einem Paketserver oder einem Artefaktspeicher herzustellen.
Die GitHub-Dokumentation zu Runner-Konzepten und Netzwerken beschreibt die Netzwerkbedingungen von Runnern. Für die Entscheidung zählen jedoch die Einschränkungen des tatsächlich eingesetzten macOS-Typs. Auch die Dokumentation zu größeren Runnern ist separat zu prüfen: Leiten Sie aus Funktionen einer Runner-Klasse oder eines anderen Betriebssystems keine macOS-Funktion ab.
Prüfen Sie Netzwerkzugang in drei getrennten Fällen:
- Private Repository-Quelle: Kann der Workflow das Repository mit den vorgesehenen Berechtigungen auschecken? Halten Sie fest, welches Token oder welche App-Berechtigung dafür verwendet wird.
- Interne Laufzeitabhängigkeit: Kann der Runner den konkreten Paket-, Artefakt- oder API-Endpunkt erreichen? Ein erfolgreicher Checkout beantwortet diese Frage nicht.
- Firewall- und Ausgangsregeln: Benötigt die Firewall eine stabile Quelladresse oder verlangt die Architektur eine private Verbindung? Vergleichen Sie diese Anforderung mit den dokumentierten Möglichkeiten genau dieses macOS-Runner-Typs, statt eine Lösung für einen anderen Runner zu übernehmen.
Feste IP-Freigaben, eine private Netzwerkverbindung und allgemeiner ausgehender Internetzugang sind nicht austauschbar. Wenn eine Firewall nur freigegebene Quelladressen akzeptiert, muss der Netzbetrieb eine überprüfbare Zuordnung und einen erfolgreichen Verbindungstest bestätigen. Wenn ein Dienst ausschließlich aus dem Unternehmensnetz erreichbar ist, reicht eine erfolgreiche Verbindung zu öffentlichen Paketquellen nicht aus.
Dokumentieren Sie als Abnahmenachweis den betroffenen Firewall-Eintrag, das Ergebnis des Verbindungsversuchs zum konkreten Zieldienst und den Fehler- beziehungsweise Rückweg, falls die Verbindung scheitert. Scheitert ein erforderlicher Zugriff, routen Sie den Job nicht trotzdem mit produktiven Zugangsdaten auf diesen Runner. Verschieben Sie ihn zunächst auf einen Knoten mit nachweislich passendem Netzwerkpfad oder ändern Sie die Abhängigkeitsarchitektur.
SECTION 04Wann braucht Enterprise iOS CI einen selbst gehosteten Mac Runner?
Ein selbst gehosteter Mac Runner ist zu prüfen, wenn ein Job an ein internes Netz, einen kontrollierten Gerätestand oder eine bewusst begrenzte Vertrauenszone gebunden ist. Das bedeutet nicht, dass jeder iOS-Build einen eigenen Mac braucht. Trennen Sie stattdessen allgemeine Kompilierung und PR-Prüfung von Aufgaben, die nur unter den Bedingungen Ihrer Unternehmensumgebung möglich sind.
Private Abhängigkeiten und internes Routing
Wenn ein Build einen privaten Paketserver oder eine interne API benötigt, testen Sie zunächst, ob der verwaltete Runner den Dienst über einen dokumentierten Weg erreicht. Wenn nicht, ist ein selbst gehosteter Mac mit geeigneter Netzverbindung eine mögliche Route. Dabei tragen Sie allerdings auch Verantwortung für Betrieb, Zugriffskontrolle, Updates und Fehlerbehebung des eigenen Runner-Pools. Die GitHub-Dokumentation zu selbst gehosteten Runnern beschreibt die Betriebs- und Sicherheitsverantwortung, die mit dieser Wahl einhergeht.
Klären Sie außerdem, ob der private Dienst überhaupt im Build benötigt wird. Manchmal lässt sich eine Abhängigkeit über einen kontrollierten Artefaktpfad bereitstellen oder der Build so gestalten, dass nur ein gesonderter Job auf interne Ressourcen zugreift. Eine solche Änderung reduziert die Zahl der Workflows, die eine private Route benötigen, ersetzt aber nicht die Prüfung von Authentisierung und Netzsegmentierung.
Gerätetests und Entwicklungs-Signierung
Simulator-Tests und Tests auf registrierten physischen Geräten sind nicht dasselbe. GitHub weist in der Runner-Referenz darauf hin, dass macOS-arm64-Runner keine feste UUID beziehungsweise UDID bereitstellen. Wenn Ihr Ablauf eine dauerhaft registrierte Gerätekennung voraussetzt, dürfen Sie aus der erfolgreichen Kompilierung nicht auf die Eignung für diesen Gerätetest schließen.
Apple beschreibt, wie ein Gerät im Entwicklerkonto registriert wird und wie eine App für registrierte Geräte verteilt wird. Prüfen Sie daher getrennt, ob Ihr Testablauf eine konkrete Gerätekennung, eine Registrierung oder ein bestimmtes Provisioning-Profil voraussetzt. Für Entwicklungs-Signierung erläutert Apple die Erstellung eines Development Provisioning Profile. Ob der gewählte Runner den vollständigen Prozess Ihrer Organisation abbildet, muss ein echter Testjob belegen.
Produktionssignierung und Vertrauensgrenzen
Stellen Sie nicht allein deshalb Produktionszertifikate oder andere Signierungsgeheimnisse bereit, weil sich ein Build auf einem verwalteten Runner starten lässt. Jobs aus nicht vertrauenswürdigen PRs sollten eine andere Berechtigungsgrenze haben als freigegebene Release-Workflows. Für Produktionsfreigaben sollten Sie festlegen, wer den Job auslösen darf, welche Geheimnisse verfügbar sind und welche Artefakte vor der Signierung geprüft werden.
Die GitHub-Empfehlungen zur sicheren Verwendung von Actions unterstützen diese Trennung. Legen Sie fest, welche Workflows Zugriff auf Signierungsgeheimnisse erhalten und ob diese nur für genehmigte Veröffentlichungsabläufe verfügbar sind. Ein selbst gehosteter Knoten kann für einen kontrollierten Signierungsjob passend sein, bringt aber seinerseits Wartungs-, Isolations- und Zugriffsrisiken mit sich. Der Name „selbst gehostet“ ist kein Sicherheitsnachweis: Verantwortlich bleiben Sie für die Absicherung des Rechners und des Runner-Prozesses.
SECTION 05Abnahme vor der Migration: Aufgaben getrennt routen
Eine hybride Lösung ist häufig dann sinnvoll, wenn PR-Prüfungen keine internen Ressourcen brauchen, aber ein Teil der Tests oder Veröffentlichungen an private Netze, Geräte oder Produktionsgeheimnisse gebunden ist. Sie müssen dafür nicht sämtliche Jobs verschieben. Ordnen Sie jeden Workflow nach benötigten Berechtigungen und Abhängigkeiten ein und ändern Sie die Route erst, wenn der konkrete Job die Abnahme bestanden hat.
Gehen Sie schrittweise vor:
- Workflows inventarisieren. Erfassen Sie Checkout, Paketquellen, Artefaktspeicher, interne APIs, Geräteeinsatz und Signierungszugriffe je Job.
- Vertrauensniveau festlegen. Trennen Sie nicht vertrauenswürdige PRs, reguläre Builds und Produktionsfreigaben. Vergeben Sie keine Produktionsberechtigung an einen Job, der sie nicht benötigt.
- Test-Workflow abbilden. Verwenden Sie dieselbe Abhängigkeitsauflösung und dieselben relevanten Actions wie im produktiven Ablauf. Prüfen Sie das exakte Runner-Label und die tatsächliche Umgebung.
- Netzwerk nachweisen. Testen Sie jeden benötigten internen Endpunkt direkt. Lassen Sie Firewall-Protokoll, Verbindungsresultat und Fehlerbehandlung nachvollziehbar dokumentieren.
- Geräte und Signierung separat testen. Belegen Sie Simulator- und Gerätetests jeweils mit ihrem realen Ablauf. Prüfen Sie Entwicklungs- und Produktionssignierung mit getrennten Berechtigungen.
- Fehlerroute festlegen. Bestimmen Sie vor dem Umschalten, welcher Job bei nicht erfüllter Netzwerk- oder Gerätebedingung auf einen selbst gehosteten Mac zurückgeht und wer die Ursache untersucht.
- Migration begrenzen. Verschieben Sie zuerst nur die Jobs, deren Anforderungen nachweislich erfüllt sind. Behalten Sie den bisherigen Pfad für nicht abgenommene Aufgaben verfügbar.
Verwenden Sie für die Freigabe diese ausführbare Prüfliste:
- [ ] Das Workflow-Label wählt den vorgesehenen macOS-Runner tatsächlich aus.
- [ ] Checkout und alle während des Builds benötigten Abhängigkeiten funktionieren mit den vorgesehenen Berechtigungen.
- [ ] Interne Paket-, Artefakt- und API-Endpunkte sind einzeln erreichbar oder werden in diesem Job nicht mehr benötigt.
- [ ] Firewall- und Ausgangsanforderungen sind für genau diesen Runner-Typ nachgewiesen.
- [ ] Simulator-Tests und erforderliche Gerätetests sind getrennt erfolgreich abgenommen.
- [ ] Entwicklungs- und Produktionssignierung nutzen getrennte, passend begrenzte Berechtigungen.
- [ ] Fehler führen zu einer festgelegten sicheren Route und nicht zur stillen Freigabe zusätzlicher Geheimnisse.
| Anforderung | Verwalteten macOS Runner bevorzugen, wenn … | Selbst gehosteten Mac oder hybride Route prüfen, wenn … |
|---|---|---|
| Quellcode und Pakete | alle nötigen Quellen über nachgewiesene Pfade erreichbar sind | ein notwendiger privater Dienst keinen passenden Weg hat |
| Firewall | kein nicht erfüllter privater Netzzugang oder stabiler Ausgang verlangt wird | die Freigabe von einer spezifischen Netzwerkroute oder Quelladresse abhängt |
| Geräte | Simulator-Tests ausreichen oder die benötigte Gerätebedingung nachgewiesen ist | der Ablauf eine registrierte Gerätekennung voraussetzt, die nicht verfügbar ist |
| Signierung | der Job mit minimalen, passenden Berechtigungen auskommt | eine kontrollierte Produktions-Signierungsumgebung erforderlich ist |
| Betrieb | ein erfolgreicher Testlauf und eine klare Fehlerbehandlung vorliegen | interne Netz-, Wartungs- oder Vertrauensgrenzen einen eigenen Knoten erfordern |
„Muss die gesamte Pipeline migrieren?“ Nein. Leiten Sie aus dem Erfolg eines PR-Builds keine Freigabe für interne Release-Jobs ab. „Bedeutet ein GitHub-Label privaten Netzwerkzugang?“ Nein; Label-Verfügbarkeit und Netzwerkpfad sind getrennte Nachweise. „Sind Gerätetests immer betroffen?“ Nicht zwangsläufig: Entscheidend ist, ob ein konkreter Test eine registrierte Gerätekennung benötigt. „Wie behandeln Sie Signierungsschlüssel?“ Begrenzen Sie ihren Zugriff auf freigegebene Signierungsjobs und orientieren Sie sich an den Sicherheitsanforderungen Ihrer Workflows. „Wie wird eine hybride Architektur verteilt?“ Routet Aufgaben nach Abhängigkeiten, Geräten und Geheimnissen, nicht nur nach der macOS-Version.
Wenn Sie nach dieser Bestandsaufnahme interne Abhängigkeiten, Geräteprüfungen oder Produktionssignierung auf einem kontrollierbaren Mac-Knoten belassen müssen, vergleichen Sie die Betriebsfolgen mit der Alternative, Hardware selbst zu beschaffen und zu betreuen. Ein eigener Mac bietet Kontrolle über die Umgebung, bindet Sie aber an Beschaffung, Wartung und Kapazitätsplanung; ein verwalteter Runner spart diese Arbeit nicht automatisch, wenn Netzwerkpfad oder Gerätevoraussetzungen fehlen. Für eine mögliche Mac-Miete können Sie zunächst den MACNOX-Überblick und anschließend die Preisübersicht prüfen. Entscheiden Sie erst nach einem Arbeitsablauf-Test, ob ein solcher Mac Ihre selbst gehosteten Aufgaben tatsächlich abdeckt; aus dem xcode-27-Label allein folgt keine Zusage für privaten Netzwerkzugang oder bestimmte Signierungs- und Gerätefunktionen.