Wenn Sie ein Dedicated-SaaS-Deployment nutzen, wenden Sie sich bitte an Ihr Account-Team, um macOS-VMs zu aktivieren.
Funktionsweise
runs-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
- 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.
macOS-Blueprints schreiben
Blueprint für eine einzelne Plattform
runs-on: macos auf oberster Ebene:
Plattformübergreifender Blueprint
---. 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
runs-on wird einer registrierten Maschinenkonfiguration in Ihrem Konto zugeordnet:
Sie können
runs-on als Zeichenkette oder als Liste angeben:
Nutzung und Kosten
Was vorinstalliert ist
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
xcode-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
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
$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
Computer Use
iOS-Simulator
Tipps & Tricks
Build-Caches vorwärmen
maintenance in environment.yml, um den Cache vorzuwärmen.
Netzwerkzugriff
Container ausführen
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
DEVELOPER_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
maintenance 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.
