Se utilizzi una distribuzione Dedicated SaaS, contatta il tuo account team per abilitare le VM macOS.
Come funziona
runs-on nel blueprint indica a Devin su quale piattaforma eseguire build e run, e ogni piattaforma ha il proprio snapshot.
Le principali differenze rispetto a Linux riguardano la shell, la struttura del file system e il gestore di pacchetti:
Avviare una sessione macOS
- Blueprint: aggiungi
runs-on: macosin modo che lo snapshot del repo venga creato per macOS (vedi sotto). - Slack: usa il bang command
!macper avviare una sessione su una VM macOS. - API: imposta
platform: "macos"quando crei una sessione, una pianificazione o un’automazione. Consulta l’API reference.
Scrivere blueprint per macOS
Blueprint per singola piattaforma
runs-on: macos al livello principale:
Blueprint multipiattaforma
---. Ogni documento dichiara la propria label runs-on. Per approfondire questo formato, consulta il riquadro Multi-document YAML nella guida ai blueprint.
Il campo runs-on
runs-on corrisponde a una configurazione di macchina registrata nel tuo account:
Puoi specificare
runs-on come stringa o come elenco:
Utilizzo e costo
Cosa è preinstallato
Le versioni cambiano man mano che Apple pubblica nuove release e l’immagine viene aggiornata. Per sapere esattamente cosa contiene una sessione, chiedi a Devin di eseguire:
Selezionare una versione di Xcode
xcode-select. Per usare un’altra versione installata per un singolo comando, imposta DEVELOPER_DIR:
/usr/bin/xcodebuild (lo shim che rispetta DEVELOPER_DIR) anziché un xcodebuild risolto dalla directory Contents/Developer/usr/bin di una specifica versione di Xcode presente nel PATH, che riporta la propria versione indipendentemente da DEVELOPER_DIR.
Oppure cambia l’impostazione predefinita per l’intera sessione:
Comportamento delle sessioni su macOS
Shell
sed -i richiede un argomento (sed -i '') e strumenti GNU come gsed, gdate e greadlink provengono dalla formula Homebrew coreutils.
Percorsi
/Users/devin/repos/<repo-name>, mentre i file che carichi in una sessione vengono scritti in /Users/devin/.files/.
Secrets
$SECRET_NAME), esattamente come su Linux. È così che si forniscono le API key di App Store Connect, le credenziali di firma o i token per registry privati:
Sleep e risveglio della sessione
Computer Use
iOS Simulator
Consigli e trucchi
Cache di build precaricate
maintenance in environment.yml per precaricare la cache.
Accesso alla rete
Esecuzione dei container
colima start. I container vengono poi eseguiti su CPU circa 15-25 volte più lentamente rispetto al nativo, con qualche secondo di avvio ciascuno; i pull avvengono alla velocità di rete dell’host. Accettabile per un container di linting o di packaging, molto penalizzante per la compilazione. Per attività che fanno un uso intensivo di container, usa una sessione Linux oppure punta la sessione macOS a un daemon Docker remoto.
Non installare Xcode in un blueprint se non è strettamente necessario
DEVELOPER_DIR o xcode-select. Se ti serve una release diversa o una beta, puoi memorizzare un Apple ID come secret e fare in modo che il blueprint scarichi quella versione, al costo di un build molto più lento.
Limitazioni
Troubleshooting
build-for-testing a maintenance, così lo snapshot includerà una build già “calda”.
xcodebuild seleziona la toolchain sbagliata. Verifica xcode-select -p e imposta esplicitamente DEVELOPER_DIR nel passaggio del blueprint.
Una destinazione non viene trovata. Esegui xcrun simctl list devices available per vedere cosa offrono effettivamente i runtime installati e fai corrispondere di conseguenza il nome e il sistema operativo indicati in -destination.
La risoluzione delle dipendenze si blocca o fallisce con un errore TLS. Probabilmente l’host non è presente nella network allowlist della tua organizzazione per macOS. Consulta Accesso di rete.
