La scelta della piattaforma CI/CD per un'app iOS dipende da tre fattori: con cosa è costruita l'app, dove risiede già il tuo code e quanto controllo vuoi avere su signing e manutenzione dei Mac. Xcode Cloud è ideale per team Apple-only, Bitrise, Codemagic e Appcircle per team mobile dedicati, GitHub Actions, GitLab CI, CircleCI e Azure DevOps per chi vuole un unico CI per tutto, e Capgo Build per i team Capacitor che vogliono build iOS senza runner macOS. Questo confronto analizza ciascuna piattaforma con i dati rilevanti per iOS nel 2026.
Cosa è cambiato per la CI/CD su iOS nel 2026
- Xcode 26 è obbligatorio. Dal 28 aprile 2026, App Store Connect rifiuta gli upload non costruiti con Xcode 26 e l'SDK iOS 26. Qualsiasi piattaforma tu scelga deve offrire immagini Xcode 26 e i Mac self-hosted devono essere aggiornati. Dettagli in Il requisito Xcode 26 di Apple.
- Apple Silicon è lo standard. I runner macOS hostati su GitHub, GitLab, CircleCI, Bitrise e Codemagic girano su Apple Silicon. Le immagini Intel stanno per essere dismesse.
- Restano solo due servizi gestiti. Microsoft App Center è stato dismesso il 31 marzo 2025. Ionic Appflow ha interrotto le nuove vendite a febbraio 2025 e terminerà il servizio il 31 dicembre 2027. I team che li utilizzano devono trovare una nuova soluzione.
- Le chiavi App Store Connect API hanno sostituito i login con Apple ID. Ogni piattaforma seria ora autentica con un
.p8API key, che evita i prompt di autenticazione a due fattori che in passato bloccavano i job CI.
Cosa confrontare
Una pipeline iOS ha più parti in gioco rispetto a una web. Queste sono le domande che distinguono le piattaforme:
- Chi fornisce il Mac? Hosted, self-hosted o del tutto astratto.
- Come viene gestito il signing? Secret manuali e script keychain, o certificati e profili gestiti.
- Può fare l'upload su TestFlight e inviare per la revisione senza tool aggiuntivi?
- Quanto velocemente arrivano le nuove versioni di Xcode?
- Come viene fatturato? Al minuto, a crediti, per concorrenza o ore incluse.
- Fa anche build per Android? La maggior parte delle app utilizza entrambi.
Tabella comparativa
| Piattaforma | Mac fornito | Firma gestita | Upload su TestFlight | Android | Modello di pricing |
|---|---|---|---|---|---|
| Azioni GitHub | Runner arm64 hosted (macos-15, macos-26) o self-hosted |
No, secret e script oppure fastlane | Via fastlane o altool |
Sì | Al minuto, macOS più costoso di Linux; gratuito per repo pubblici |
| GitLab CI | Runner macOS hostati (beta, Premium/Ultimate) o self-managed | No, ma un'integrazione con App Store Connect salva la chiave API | Con fastlane | Sì | Minuti di calcolo per piano |
| Bitrise | Stack Apple Silicon hostati | Sì, gestione certificati e profili | Step integrati | Sì | Crediti per minuto di build, livelli di piano |
| Codemagic | Mac mini Apple Silicon in hosting | Sì, recupera o crea profili tramite chiave API | Pubblicazione integrata | Sì | Pagamento al minuto o piani annuali fissi |
| Appcircle | Appcircle Server in hosting o self-hosted | Sì, signing identity store | Modulo publish integrato | Sì | Piani, enterprise self-hosted |
| Xcode Cloud | Gestito da Apple | Sì, automatico | Integrato | No | 25 ore/mese incluse con l'iscrizione, di più con abbonamento |
| CircleCI | Classi di risorse Apple Silicon hosted | No, segreti più fastlane | Con fastlane | Sì | Crediti al minuto per classe di risorsa |
| Azure DevOps | Agenti macOS hostizzati da Microsoft o self-hosted | Parziale, i task installano certificati e profili | Task di estensione App Store | Sì | Job in parallelo |
| Build Capgo | Gestito da Capgo, richiamabile da qualsiasi CI | Sì, configurazione guidata con build init |
Integrato, con invio per la revisione | Sì | Minuti di build, vedi prezzi |
Note sulla matrice: “managed signing” significa che la piattaforma memorizza o genera certificati e profili per te, non solo archiviazione di secret. Capgo Build esegue solo build di app Capacitor; gli altri buildano anche progetti Swift nativi.
Piattaforma per piattaforma
Azioni GitHub
La scelta predefinita per molti team perché il workflow è integrato con code. GitHub ospita runner macOS su Apple Silicon (macos-latest attualmente punta a macOS 26 arm64) con diverse versioni di Xcode installate, e puoi selezionarne una con xcode-select oppure maxim-lobanov/setup-xcode.
Tutto ciò che riguarda iOS è tuo: decifrando il .p12 in un keychain temporaneo, installazione dei profili, incremento dei build number e upload. La maggior parte dei team usa fastlane per questo. I minuti macOS sui repository privati costano molto più dei minuti Linux, quindi eseguire build iOS su ogni pull request diventa subito costoso.
Ideale per: team su GitHub che non hanno problemi a mantenere fastlane. Guida: Build iOS Capacitor automatica con GitHub Actions.
GitLab CI
GitLab offre runner macOS ospitati su GitLab.com per i piani Premium e Ultimate, ancora in beta, su macchine Apple Silicon (M1 e M2 Pro). Le immagini sono nominate in base a OS e Xcode, ad esempio macos-26-xcode-26. Su GitLab self-managed registri i tuoi Mac.
Le funzionalità Mobile DevOps di GitLab includono un'integrazione di progetto per App Store Connect che espone la chiave API ai job, rendendo la configurazione di fastlane più pulita. La firma resta comunque a carico dei tuoi script.
Ideale per: team già su GitLab Premium. Guida: Configura CI/CD in GitLab.
Bitrise
Un CI mobile-first con una vasta libreria di step. Bitrise mantiene stack macOS su Apple Silicon con ogni versione supportata di Xcode e di solito pubblica i nuovi stack Xcode poco dopo il rilascio di Apple. La firma Code può essere gestita tramite l'integrazione API con App Store Connect, che scarica o genera certificati e profili durante la build. Gli step coprono l'upload su TestFlight, il deploy su App Store e molti strumenti di testing. Include anche funzionalità di release management per rollout graduali.
Il pricing è basato su crediti, quindi le build iOS su macchine più grandi consumano crediti più velocemente. È una delle opzioni più costose per i team piccoli e una delle più complete per i team mobili grandi.
Codemagic
Iniziato con Flutter, ora copre iOS nativo, Android, React Native, Ionic e Capacitor. Le build vengono eseguite su istanze Mac mini con Apple Silicon. La configurazione si trova in codemagic.yaml o in un editor UI. La firma automatica code utilizza la tua chiave API di App Store Connect per recuperare o creare il certificato e il profilo corretti, eliminando la maggior parte degli script keychain. La pubblicazione su TestFlight e la revisione App Store sono integrate.
Il pricing è pay-as-you-go per minuto di build o un piano annuale fisso, con un limite mensile gratuito per gli account personali. Vedi Build iOS Capacitor con Codemagic.
Appcircle
Una piattaforma CI/CD mobile che include build, un archivio di identità di firma, distribuzione ai tester, un app store enterprise e pubblicazione sugli store. Il suo punto di forza è la scelta del deployment: puoi usare il servizio cloud o eseguire Appcircle Server sulla tua infrastruttura, il che è importante per le industrie regolamentate che non possono inviare code o chiavi di firma a un cloud condiviso. I framework ibridi vengono costruiti tramite passaggi di workflow e script personalizzati.
Xcode Cloud
La CI di Apple, configurabile da Xcode o App Store Connect. La firma è automatica perché eseguita all'interno del sistema di account di Apple, e la distribuzione su TestFlight è una semplice spunta. L'iscrizione al Apple Developer Program include 25 ore di calcolo al mese, con ore aggiuntive acquistabili tramite abbonamento. Si integra con GitHub, GitLab e Bitbucket, incluse le istanze self-managed.
Limiti: compila solo piattaforme Apple, quindi per Android serve un'altra CI. Lo tooling custom va in ci_scripts shell hooks. Per un'app Capacitor installi Node in ci_post_clone.sh, compili la web layer ed esegui cap sync. Consulta Come compilare un'app Capacitor in Xcode Cloud.
CircleCI
Una CI general-purpose con executor macOS su classi di risorse Apple Silicon e immagini Xcode. La configurazione è in YAML con orb riutilizzabili. Firma e upload sono fai-da-te, tipicamente con fastlane e match. La fatturazione usa crediti, e le classi di risorse macOS consumano più crediti al minuto rispetto a quelle Linux. Una scelta solida se CircleCI gestisce già il tuo backend.
Azure DevOps
Azure Pipelines fornisce agenti macOS hostizzati da Microsoft (macOS-latest) e supporta agenti Mac self-hosted. Ha task integrati che i team iOS usano davvero: InstallAppleCertificate@2 e InstallAppleProvisioningProfile@1 gestisce la configurazione di keychain e profili da file sicuri, Xcode@5 archivia ed esporta, e il task dell'estensione App Store AppStoreRelease@1 carica su TestFlight. La tariffazione è per job paralleli, non al minuto. Si adatta alle organizzazioni Microsoft-centriche, soprattutto a quelle che migrano da App Center.
Build Capgo
Build Capgo non è un CI. È un servizio di build che la tua pipeline chiama da un job Linux (GitHub Actions, GitLab, Bitbucket, Gitea, Azure DevOps o simili). Quel job esegue la web build e cap sync ios, poi richiede una build iOS da Capgo Build:
bunx @capgo/cli@latest build request com.example.app --platform ios --build-mode release
Capgo Build compila e firma l'app iOS nel cloud, trasmette i log al job CI Linux, incrementa il numero di build da App Store Connect e carica su TestFlight. --submit-to-store-review lo invia ad App Review. Esegui bunx @capgo/cli@latest build init --platform ios once during setup to save credentials locally. For CI, use bunx @capgo/cli@latest build credentials manage per esportare i valori di firma e App Store Connect come segreti CI, poi passa quei valori e CAPGO_TOKEN a bunx @capgo/cli@latest build request.
Limiti da conoscere: builda solo app Capacitor e una singola build ha un limite di 10 minuti. Il vantaggio principale è che nessun job della tua pipeline richiede un runner macOS, e lo stesso CLI distribuisce live updates per modifiche solo web, così molti rilasci saltano del tutto la build nativa.
Argent Cloud
Argent Cloud di Software Mansion non è nemmeno un servizio di build. Copre la fase successiva alla build: eseguire l'app su simulatori iOS. Ottieni hardware Apple dedicato con simulatori iOS isolati e preconfigurati, raggiungibili via rete. Così un job CI Linux, o un agente AI che gira su Linux, può pilotare un simulatore iOS senza che il tuo team debba allestire e mantenere una propria flotta di Mac.
Funziona con Maestro, Appium e script custom, e con Argent, il toolkit MCP di Software Mansion che permette ad agenti come Claude Code, Cursor e Codex di navigare l'app, leggere log e richieste di rete e profilare le prestazioni. Il prezzo è fisso: ogni Runner offre fino a 6 simulatori in parallelo su hardware non condiviso con altri clienti, a partire da 299 $ al mese con tempo di simulatore illimitato.
Argent Cloud integra una piattaforma di build senza sostituirla: puoi continuare a usare uno qualsiasi dei servizi sopra per compilare, firmare e fare upload su TestFlight, e indirizzare i tuoi test UI e agenti verso i simulatori di Argent Cloud. Il suo vantaggio principale è che suite di test lunghe e sessioni di agenti non consumano più tempo macOS fatturato al minuto.
Ionic Appflow e App Center
Entrambi compaiono ancora nei risultati di ricerca. App Center è stato dismesso. Appflow è disponibile per i clienti esistenti fino al 31 dicembre 2027 e non accetta nuovi clienti. Se usi una delle due, pianifica ora il passaggio. Guide alla migrazione: Migrazione da App Center e Alternativa ad Appflow.
Come scegliere
| La tua situazione | Ideale per |
|---|---|
| Swift nativo, solo piattaforme Apple, team piccolo | Xcode Cloud |
| iOS e Android nativi, team mobile dedicato, firma gestita | Bitrise, Codemagic o Appcircle |
| Devi self-hostare l'intera piattaforma | Appcircle Server, runner self-hosted su GitLab, GitHub o Azure DevOps |
| Tutto già su GitHub o GitLab, il team conosce fastlane | GitHub Actions o GitLab CI con runner macOS |
| Ambiente Microsoft, passaggio da App Center | Azure DevOps |
| App Capacitor, vuoi mantenere la CI attuale ed evitare runner macOS | Capgo Build richiamata dalla tua CI |
| App Capacitor con rilasci frequenti di modifiche web | Qualsiasi opzione sopra, più Capgo live updates |
| Test UI o agenti AI che richiedono simulatori iOS da CI Linux | Qualsiasi piattaforma di build sopra, più Argent Cloud |
Costi: cosa incide davvero sulla fattura
I prezzi esatti cambiano spesso, quindi confronta il modello, non il singolo numero:
- macOS hosted al minuto (GitHub, GitLab, CircleCI, Codemagic pay-as-you-go): il costo cresce con numero e durata delle build. Le voci che lo riducono di più sono il caching di CocoaPods o degli Swift package e il saltare le build native per le modifiche solo web.
- Crediti e tier (Bitrise, CircleCI, Appcircle): costi mensili prevedibili, ma le macchine più potenti consumano crediti più velocemente.
- Ore incluse (Xcode Cloud): economico finché non superi le 25 ore incluse.
- Job in parallelo (Azure DevOps): paghi per la concorrenza, non per i minuti.
- Simulatori a prezzo fisso mensile (Argent Cloud, per i test): un prezzo fisso per blocco di simulatori riservati, così le sessioni di test lunghe non fanno salire la fattura.
- Mac self-hosted: niente costi al minuto, ma hardware, elettricità e il tempo di un ingegnere per gli upgrade di Xcode e i problemi di keychain.
La build iOS più economica è quella che non esegui. Per le app ibride, inviare modifiche solo JavaScript come live update invece di nuovi binari di solito fa risparmiare più che cambiare provider CI.
Checklist di troubleshooting per il cambio piattaforma
- Esporta il tuo certificato di distribuzione come
.p12con la relativa chiave privata prima di lasciare la vecchia piattaforma. Alcuni servizi l'hanno generato e non ti hanno mai mostrato la chiave privata. - Crea una chiave API su App Store Connect con permessi di App Manager per la nuova piattaforma, invece di riutilizzare un Apple ID personale.
- Verifica che Xcode predefinito sulla nuova piattaforma sia 26 o successivo.
- Sposta la logica del build number. Se la vecchia piattaforma lo incrementava automaticamente, la prima build sulla nuova potrebbe andare in collisione.
- Mantieni
ITSAppUsesNonExemptEncryptionnellaInfo.plistcosì le build non rimangono in attesa della export compliance.
Per errori specifici della pipeline, consulta CI/CD per Capacitor: errori comuni. Per un confronto focalizzato su Capacitor che copra anche le live updates, vedi Confronto tra piattaforme CI/CD per app Capacitor.