
Wenn Sie ein Dedicated-SaaS-Deployment nutzen, wenden Sie sich bitte an Ihr Account-Team, um macOS-VMs zu aktivieren.
Funktionsweise
Die macOS-Unterstützung basiert auf demselben System zur deklarativen Konfiguration wie Linux. Das Feldruns-on in Ihrem Blueprint legt fest, auf welcher Plattform Devin baut und ausführt, und jede Plattform erhält ihren eigenen Snapshot.
Die wesentlichen Unterschiede zu Linux betreffen die Shell, den Aufbau des Dateisystems und den Paketmanager:
Eine macOS-Sitzung starten
Sie können macOS pro Sitzung auswählen:- Blueprint: Fügen Sie
runs-on: macoshinzu, damit der Snapshot des Repos für macOS erstellt wird (siehe unten). - Slack: Verwenden Sie den Bang-Befehl
!mac(Bang-Befehle), um eine Sitzung auf einer macOS-VM zu starten. - API: Setzen Sie beim Erstellen einer Sitzung, eines Zeitplans oder einer Automatisierung
platform: "macos". Siehe API Reference. - Organisationsstandard: Ein Admin kann macOS unter Settings → Devin → Default platform oder über die API Set Organization Default Platform als Standard für neue Sitzungen festlegen. Den aktuellen Wert rufen Sie mit Get Organization Default Platform ab.
macOS-Blueprints schreiben
Blueprint für eine einzelne Plattform
Wenn dein Repository ausschließlich auf Apple-Plattformen abzielt, verwenderuns-on: macos auf oberster Ebene:
Plattformübergreifender Blueprint
Um dasselbe Repository für mehrere Plattformen zu bauen, definieren Sie jede Plattform als eigenes YAML-Dokument, getrennt durch---. Jedes Dokument deklariert sein eigenes runs-on-Label. Hintergrundinformationen zu diesem Format finden Sie im Hinweis Multi-document YAML im Blueprint-Leitfaden.
Das Feld runs-on
Das Feld runs-on wird einer registrierten Maschinenkonfiguration in Ihrem Konto zugeordnet:
Sie können
runs-on als Zeichenkette oder als Liste angeben:
Nutzung und Kosten
macOS-Sitzungen verursachen derzeit dieselbe Nutzung wie vergleichbare Linux-Sitzungen. Ein Aufschlag für macOS fällt nicht an.Hierbei handelt es sich um Einführungspreise zur Markteinführung, die sich ändern können.
Was vorinstalliert ist
macOS-Sitzungs-Images werden mit bereits installierter Apple-Toolchain ausgeliefert, sodass Ihr Blueprint sie nicht erst herunterladen muss:
Die Versionen ändern sich, sobald Apple neue Releases veröffentlicht und das Image aktualisiert wird. Um genau zu sehen, was in einer Sitzung vorhanden ist, bitten Sie Devin, Folgendes auszuführen:
Eine Xcode-Version auswählen
Standardmäßig wird das Xcode verwendet, auf dasxcode-select verweist. Um für einen einzelnen Befehl eine andere installierte Version zu nutzen, setzen Sie DEVELOPER_DIR:
/usr/bin/xcodebuild (den Shim, der DEVELOPER_DIR berücksichtigt) und nicht ein xcodebuild, das über PATH aus dem Verzeichnis Contents/Developer/usr/bin einer bestimmten Xcode-Version bezogen wird, denn dieses meldet unabhängig von DEVELOPER_DIR seine eigene Version.
Oder ändern Sie den Standard für die gesamte Sitzung:
Sitzungsverhalten unter macOS
Shell
macOS-Sitzungen verwenden zsh als Standard-Shell. Die meisten POSIX-Shell-Befehle funktionieren unverändert wie in Linux-Blueprints, beachten Sie jedoch das BSD-Userland:sed -i erfordert ein Argument (sed -i ''), und GNU-Tools wie gsed, gdate und greadlink stammen aus der Homebrew-Formula coreutils.
Pfade
/Users/devin/repos/<repo-name> geklont, und Dateien, die Sie in eine Sitzung hochladen, werden unter /Users/devin/.files/ abgelegt.
Secrets
Secrets stehen während Sitzungen als Umgebungsvariablen zur Verfügung ($SECRET_NAME), genau wie unter Linux. So hinterlegen Sie App Store Connect API keys, Signing-Credentials oder Tokens für private Registries:
Schlafen und Aufwachen von Sitzungen
Beim Schlafen wird von Sitzungen ein Snapshot auf die Festplatte geschrieben. Alles, was auf der Festplatte liegt, übersteht das Aufwachen: installierte Tools, geklonte Repos, Build-Caches, abgeleitete Daten. Laufende Prozesse hingegen nicht: Dev-Server, Simulatoren und Watcher müssen nach dem Aufwachen der Sitzung neu gestartet werden.Computer Use
Computer Use funktioniert in macOS-Sitzungen: Devin erhält einen vollständigen macOS-Desktop mit Chrome, Maus und Tastatur, kann sowohl macOS-native Apps als auch Web-Apps testen und aufzeichnen, was er dabei tut. Für macOS-Tastenkürzel verwendet Devin die Command-Taste (⌘C, ⌘V, ⌘Tab) statt Control.iOS-Simulator
Devin kann den iOS-Simulator direkt starten und bedienen:Tipps & Tricks
Build-Caches vorwärmen
Ein kalter Xcode-Build führt zu längeren Build-Zeiten und damit zu einer schlechteren Entwicklererfahrung. Verwende das Feldmaintenance in environment.yml, um den Cache vorzuwärmen.
Netzwerkzugriff
Builds, die Pakete von CocoaPods, dem Swift Package Manager, Firebase oder einer privaten Registry beziehen, benötigen Zugriff auf diese Hosts. Wenn Ihre Organisation mit einer eingeschränkten Netzwerkrichtlinie arbeitet, stellen Sie sicher, dass die macOS-Allowlist dieselben Registries abdeckt wie Ihre Linux-Builds. Beide werden getrennt konfiguriert, und ein fehlender Eintrag zeigt sich meist als Fehler bei der Abhängigkeitsauflösung oder als TLS-Fehler mitten im Build.Container ausführen
macOS-VMs bieten keine verschachtelte Hardware-Virtualisierung, weshalb eine Container-Runtime auf die Software-Emulation von QEMU (TCG) zurückgreifen muss. Colima erkennt dies und wechselt selbstständig zur Emulation:colima start bei einem Fehlschlag daher einfach erneut aus. Container laufen anschließend auf der CPU etwa 15- bis 25-mal langsamer als nativ und brauchen jeweils einige Sekunden zum Starten; Pulls erfolgen mit der Netzwerkgeschwindigkeit des Hosts. Für einen Container zum Linting oder Packaging reicht das aus, zum Kompilieren ist es jedoch mühsam. Nutzen Sie für containerlastige Aufgaben besser eine Linux-Sitzung oder richten Sie die macOS-Sitzung auf einen entfernten Docker-Daemon aus.
Installiere Xcode nur dann in einem Blueprint, wenn es sich nicht vermeiden lässt
Xcode ist ein mehrere Gigabyte großer Download, und Apple gibt ihn nur mit einer Apple-ID frei. Verwende bevorzugt die Versionen, die bereits im Image enthalten sind, und wähle sie überDEVELOPER_DIR oder xcode-select aus. Wenn du eine andere Version oder eine Beta benötigst, kannst du eine Apple-ID als Secret hinterlegen und den Blueprint diese Version herunterladen lassen – allerdings um den Preis eines deutlich langsameren Builds.
Einschränkungen
Troubleshooting
Builds sind in der ersten Sitzung nach einem Snapshot-Rebuild deutlich langsamer. DerivedData wurde komplett neu erzeugt. Fügen Sie inmaintenance einen build-for-testing-Schritt hinzu, damit der Snapshot einen warmen Build enthält.
xcodebuild verwendet die falsche Toolchain. Prüfen Sie xcode-select -p und setzen Sie DEVELOPER_DIR im Blueprint-Schritt explizit.
Eine Destination wird nicht gefunden. Führen Sie xcrun simctl list devices available aus, um zu sehen, welche Geräte die installierten Runtimes tatsächlich bereitstellen, und passen Sie Namen und Betriebssystem in -destination entsprechend an.
Die Auflösung der Abhängigkeiten hängt oder schlägt mit einem TLS-Fehler fehl. Wahrscheinlich fehlt der Host in der Netzwerk-Allowlist Ihrer Organisation für macOS. Siehe Netzwerkzugriff.
