Guida
Runner self-hosted di GitHub Actions su un Mac mini
Configura un runner self-hosted di GitHub Actions su un Mac mini dedicato. Installa Xcode, registra il runner, avvialo come servizio e mantieni le build veloci e private.
30 minuti, aggiornato: 2026-09-15
I runner macOS ospitati da GitHub sono macchine condivise. Fanno coda nelle ore di punta, partono a freddo ogni volta e si pagano al minuto.
Un runner self-hosted sul tuo Mac mini parte subito, conserva le cache tra una build e l'altra e costa lo stesso ogni mese.
Questa guida richiede circa trenta minuti. Ti servono:
- Un Mac mini con Apple silicon e accesso SSH
- Diritti di amministratore sul repository o sull'organizzazione GitHub
- Un Apple ID, per scaricare Xcode
1. Prepara il Mac
Accedi via SSH e impedisci al Mac di andare in stop:
sudo pmset -a sleep 0 disksleep 0 displaysleep 0Installa Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Consigliamo un utente separato per il runner, così le build non girano mai con il tuo account amministratore:
sudo sysadminctl -addUser runner -fullName "CI Runner" -password -Accedi con quell'utente per i passaggi seguenti.
2. Installa Xcode
Il modo più semplice via SSH è `xcodes`:
brew install xcodesorg/made/xcodes
xcodes install --latest
xcodes selectAccetta la licenza e completa il primo avvio:
sudo xcodebuild -license accept
xcodebuild -runFirstLaunch
xcodebuild -downloadPlatform iOS3. Registra il runner
Su GitHub apri il repository, poi Settings, Actions, Runners, New self-hosted runner. Scegli macOS e ARM64.
GitHub mostra i comandi esatti, con la versione attuale e un token. Sono più o meno così:
mkdir actions-runner && cd actions-runner
curl -o actions-runner-osx-arm64.tar.gz -L <download URL from GitHub>
tar xzf ./actions-runner-osx-arm64.tar.gz
./config.sh --url https://github.com/<owner>/<repo> --token <token>Il token scade dopo un'ora, quindi registra subito il runner. Quando `config.sh` chiede le etichette, aggiungi quelle che userai nei workflow, come `xcode` o `m4`.
4. Avvialo come servizio
./svc.sh install
./svc.sh start
./svc.sh statusOra il runner parte con la sessione dell'utente. Se i tuoi job eseguono test di UI o hanno bisogno del portachiavi di login, attiva il login automatico per l'utente del runner in Impostazioni di Sistema, Utenti e gruppi. Puoi farlo tramite condivisione schermo. Il login automatico non è disponibile mentre FileVault è attivo.
5. Usalo in un workflow
name: iOS build
on: [push]
jobs:
build:
runs-on: [self-hosted, macOS, ARM64]
steps:
- uses: actions/checkout@v4
- name: Build
run: xcodebuild -scheme MyApp -destination 'generic/platform=iOS Simulator' buildFai push di un commit. Il job compare sotto Actions e parte sul tuo Mac in pochi secondi.
6. Mantienilo in salute
- Solo repository privati. Su un repository pubblico, una pull request da un fork può eseguire codice sul tuo Mac. GitHub sconsiglia i runner self-hosted sui repository pubblici.
- Fai pulizia ogni tanto. DerivedData e i vecchi simulatori crescono nel tempo:
rm -rf ~/Library/Developer/Xcode/DerivedData
xcrun simctl delete unavailable- Firma. Tieni i certificati in un portachiavi dedicato, oppure usa fastlane match.
- Aggiornamenti. Il runner si aggiorna da solo per impostazione predefinita. Aggiorna Xcode secondo i tuoi tempi, non nel mezzo di una release.
Perché un Mac mini dedicato
- Nessun altro sopra. Le build partono nel momento in cui fai push.
- Cache già calde. DerivedData, pacchetti Swift e CocoaPods restano su disco, quindi le build incrementali sono molto più veloci.
- Chip reali. Testa sullo stesso Apple silicon dei tuoi utenti.
- Un mese a prezzo fisso. Nessuna fatturazione al minuto, nessuna sorpresa alla fine di uno sprint intenso.
MacDuty ospita nei suoi rack nell'UE Mac mini da M1 a M6, con macOS installato. Aggiungi la tua chiave SSH dall'area clienti.
Disponibili oggi
Questi sono già nel rack. Scegline uno, guarda cosa include e crea l'account solo quando ordini.
Controllo dei rack in corso
Un Mac mini tutto tuo
Scegli una configurazione. Se non è disponibile, lasciaci la tua email e ti scriviamo il giorno in cui è nel rack.
Annuale: almeno 19% in meno rispetto al pagamento mensile
Avanti