Jenkins — cos’è, architettura del sistema e configurazione del server CI/CD

Autore: IT Sectr Pubblicato: 2026-04-13 Tempo di lettura: 10 min

Jenkins è un server CI/CD open source che automatizza la creazione, il test e la consegna di applicazioni mobili. A differenza delle soluzioni cloud, Jenkins viene distribuito sulla propria infrastruttura e configurato tramite interfaccia web o codice. Secondo CloudBees, 2025, oltre 1,6 milioni di team utilizzano Jenkins per i processi CI/CD. Il sistema supporta build distribuite tramite un’architettura Master-Agent e oltre 1800 plugin per l’integrazione con strumenti di sviluppo.

Punti chiave

  • Jenkins — Server CI/CD open source su Java per automatizzare build e consegna di applicazioni
  • Pipeline — definizione del processo CI/CD come codice in Jenkinsfile con sintassi dichiarativa o scriptata
  • Master-Agent — architettura con distribuzione dei compiti tra nodo master e agenti per build parallele
  • Plugin — oltre 1800 moduli per integrazione con Git, Docker, Fastlane, XCTest e Gradle
  • Jenkinsfile — file di configurazione nel repository che definisce le fasi di build, test e deploy

Cos’è Jenkins e perché serve nello sviluppo mobile

Jenkins è un server CI/CD open source scritto in Java per automatizzare la creazione, il test e la consegna del software. Nel contesto dello sviluppo mobile, Jenkins consente ai team di creare automaticamente applicazioni iOS e Android, eseguire test unitari e UI, firmare i build e consegnarli all’App Store o a Google Play senza operazioni manuali.

La necessità di Jenkins sorge quando un progetto supera i build locali e richiede integrazioni regolari del codice da più sviluppatori. Creare manualmente ogni commit richiede tempo ed è soggetto a errori — Jenkins risolve questo problema lanciando pipeline automatiche a ogni modifica nel repository.

Secondo il rapporto JetBrains Developer Ecosystem 2025, il 54% dei team mobili utilizza Jenkins come piattaforma CI/CD principale. Il sistema supporta qualsiasi linguaggio e piattaforma grazie all’architettura a plugin — per Android sono disponibili Gradle e SDK Manager, per iOS Xcode Integration e Keychain Manager.

Utilizza Jenkins in progetti dove hai bisogno di controllo completo sull’infrastruttura di build, personalizzazione di ogni fase del processo CI/CD e integrazione con sistemi di sicurezza aziendali.

Architettura Jenkins: Master, Agents e funzionamento Pipeline

L’architettura di Jenkins si basa sul modello Master-Agent. Il server Master gestisce la configurazione, la pianificazione delle attività e l’interfaccia web, mentre gli agenti eseguono i build effettivi su macchine dedicate o temporanee. Questa architettura consente di creare in parallelo applicazioni iOS su un agente macOS e applicazioni Android su un agente Linux da un unico server Master.

Master e Agent in Jenkins

Il nodo Master di Jenkins memorizza tutte le impostazioni, i plugin e la cronologia dei build nella directory home $JENKINS_HOME. Gli agenti si collegano al Master tramite SSH, JNLP o WebSocket e ricevono i compiti dalla coda. Per lo sviluppo mobile, si consiglia di allocare agenti macOS separati per i build iOS e agenti Linux per i build Android con SDK e strumenti installati.

Ogni agente può essere un server permanente o un contenitore Docker dinamico. Secondo la documentazione di CloudBees, distribuire i build su 5 agenti riduce il tempo totale della pipeline CI/CD del 70% con 10 attività parallele.

Pipeline come codice

Jenkins Pipeline è la definizione dell’intero processo CI/CD come codice archiviato nel repository insieme al progetto. La Pipeline viene descritta in un Jenkinsfile e supporta due sintassi: dichiarativa (strutturata, con blocchi predefiniti) e scriptata (flessibile, basata su Groovy con controllo completo del flusso di esecuzione).

La sintassi dichiarativa è consigliata per la maggior parte dei progetti mobili poiché garantisce leggibilità e prevedibilità. La Pipeline scriptata è adatta per scenari complessi con fasi parallele dinamiche, gestione personalizzata degli errori e logica condizionale basata su variabili d’ambiente.

Jenkins Pipeline: sintassi dichiarativa e scriptata

Jenkins Pipeline supporta due sintassi che definiscono come vengono descritti i passaggi del processo CI/CD. La sintassi dichiarativa utilizza una struttura a blocchi con le parole chiave pipeline, stages, stage e steps, rendendola intuitiva per i nuovi utenti. La sintassi scriptata si basa su Groovy e fornisce il controllo completo sull’esecuzione tramite istruzioni condizionali e cicli.

La Pipeline dichiarativa crea automaticamente una Sandbox — un ambiente sicuro per eseguire script Groovy. Ciò limita l’accesso ai metodi pericolosi di Java e Groovy, fondamentale negli ambienti aziendali dove la sicurezza della pipeline è controllata da un amministratore.

Struttura della Pipeline dichiarativa

La Pipeline dichiarativa si basa su quattro blocchi principali: pipeline (blocco radice), agent (specifica dell’agente), stages (sequenza di fasi) e post (azioni dopo il completamento). Ogni stage contiene steps con comandi di build, e il blocco post definisce le azioni in caso di successo, fallimento o stato di build instabile.

Il blocco post è particolarmente utile per i progetti mobili — puoi configurare notifiche Slack in caso di fallimento del build o archiviare artefatti IPA e APK dopo il completamento con successo. Jenkins garantisce le azioni post anche se la pipeline viene interrotta manualmente.

groovy
// Pipeline dichiarativa per applicazione iOS
pipeline {
    agent { label 'macos' }
    stages {
        stage('Build') {
            steps {
                sh 'xcodebuild -workspace App.xcworkspace -scheme App clean build'
            }
        }
        stage('Test') {
            steps {
                sh 'xcodebuild -workspace App.xcworkspace -scheme App test'
            }
        }
    }
}

La Pipeline scriptata fornisce un blocco node invece di agent e permette di utilizzare costrutti Groovy per ramificazioni dinamiche. Questa sintassi è comoda per pipeline dove l’insieme delle fasi dipende dai parametri di build o dai risultati delle fasi precedenti.

groovy
// Pipeline scriptata con fasi parallele
node('macos') {
    stage('Parallel Builds') {
        parallel(
            ios: { buildIOS() },
            android: { buildAndroid() }
        )
    }
}
def buildIOS() {
    sh 'fastlane ios build'
}

Jenkinsfile: configurazione CI/CD per progetti iOS

Per i progetti iOS, il Jenkinsfile richiede un agente macOS con Xcode, CocoaPods o Swift Package Manager e Fastlane installati. Una pipeline tipica include fasi: installazione dipendenze, build, esecuzione test, firma del codice e consegna a TestFlight o all’App Store.

Una caratteristica chiave dei build iOS in Jenkins è la gestione di certificati e profili di provisioning. Si consiglia di utilizzare Fastlane Match per il recupero automatico dei certificati da un repository o il plugin Jenkins Credentials Binding per l’archiviazione sicura delle chiavi.

groovy
pipeline {
    agent { label 'macos' }
    environment {
        MATCH_PASSWORD = credentials('match-password')
    }
    stages {
        stage('Install Dependencies') {
            steps {
                sh 'pod install --repo-update'
            }
        }
        stage('Build and Test') {
            steps {
                sh 'fastlane scan'
                sh 'fastlane gym'
            }
        }
        stage('Deploy to TestFlight') {
            when { branch 'main' }
            steps {
                sh 'fastlane upload_testflight'
            }
        }
    }
}

Per i test unitari iOS, utilizza xcodebuild test con specifica del simulatore. Jenkins supporta la pubblicazione dei report XCTest tramite il plugin JUnit — converti .xcresult in formato XML per incorporare i risultati dei test nella dashboard di build.

Jenkinsfile: configurazione CI/CD per progetti Android

I build Android in Jenkins vengono eseguiti su agenti Linux con Java JDK, Android SDK, Gradle ed emulatori installati. La pipeline include fasi: controllo del linter, test unitari, build APK o AAB, test strumentati sull’emulatore e pubblicazione su Google Play Console.

Per gestire Android SDK, utilizza sdkmanager nel Jenkinsfile per installare le piattaforme e gli strumenti di build necessari. Si consiglia di memorizzare nella cache le directory .gradle e .android tra i build per accelerare le esecuzioni successive.

groovy
pipeline {
    agent { label 'linux' }
    stages {
        stage('Lint Check') {
            steps {
                sh './gradlew lint'
            }
        }
        stage('Unit Tests') {
            steps {
                sh './gradlew testDebugUnitTest'
            }
        }
        stage('Build APK') {
            steps {
                sh './gradlew assembleDebug'
            }
            post {
                success {
                    archiveArtifacts artifacts: '**/build/outputs/apk/**/*.apk'
                }
            }
        }
    }
}

I test strumentati su Android richiedono un emulatore in esecuzione. Jenkins supporta il plugin Android Emulator, che crea e avvia automaticamente un emulatore prima dei test. Per i dispositivi fisici, utilizza Firebase Test Lab — l’integrazione è disponibile tramite il plugin Google Cloud SDK.

Plugin Jenkins per automazione build

Il sistema di plugin Jenkins è un vantaggio chiave della piattaforma. Oltre 1800 plugin coprono tutte le fasi del CI/CD: dall’integrazione con i sistemi di controllo versione al deployment nei servizi cloud. Ogni plugin aggiunge nuovi passaggi alla pipeline ed estende l’interfaccia web con pagine di configurazione aggiuntive.

Per lo sviluppo mobile, è essenziale un set di plugin per la gestione delle credenziali: Credentials Binding per memorizzare token App Store Connect e account di servizio Google Play. Il plugin Xcode Integration aggiunge passaggi di build per applicazioni iOS dall’interfaccia Jenkins.

PluginScopoPiattaforma
Git IntegrationClonazione repository, gestione branch e Pull RequestiOS, Android
Gradle PluginEsecuzione task Gradle per build Android con pubblicazione reportAndroid
Xcode IntegrationBuild progetti iOS senza JenkinsfileiOS
Docker PipelineEsecuzione build in contenitori Docker con ambiente isolatoiOS, Android
Slack NotificationNotifiche stato build nei canali SlackiOS, Android

Il plugin Docker Pipeline permette di eseguire ogni fase di build in un contenitore separato, garantendo la riproducibilità dell’ambiente ed eliminando il problema delle differenze ambientali. Per i build Android, utilizza immagini con Android SDK preinstallato dalla comunità Gradle.

Jenkins vs Travis CI: confronto per team mobili

La scelta tra Jenkins e Travis CI dipende dalle dimensioni del team, dal budget e dai requisiti infrastrutturali. Jenkins è una soluzione self-hosted con controllo completo, che richiede un server dedicato e un amministratore. Travis CI è un servizio cloud con pagamento a consumo, che non richiede gestione del server.

Per startup e team piccoli, Travis CI è preferibile — costi infrastrutturali zero, integrazione semplice con GitHub e build pronti per iOS e Android. Per progetti Enterprise, Jenkins offre vantaggi: propri esecutori macOS, conformità alle policy di sicurezza aziendali e configurazione granulare della pipeline tramite Jenkinsfile.

Secondo Stack Overflow Survey 2025, Jenkins è utilizzato dal 42% degli sviluppatori professionisti contro il 12% di Travis CI. Tuttavia, Travis CI rimane popolare nella comunità Open Source grazie al suo piano gratuito per repository pubblici e alla barriera d’ingresso minima.

Vantaggi di Jenkins nei processi CI/CD

Jenkins offre una serie di vantaggi che lo rendono lo standard CI/CD per lo sviluppo mobile. La licenza MIT gratuita consente di utilizzare il server senza restrizioni in progetti commerciali e il codice open source garantisce l’indipendenza dal fornitore e la possibilità di audit di sicurezza.

L’architettura Master-Agent consente il dimensionamento orizzontale — l’aggiunta di un nuovo agente aumenta la produttività della pipeline linearmente. Jenkins supporta agenti dinamici in Kubernetes tramite Jenkins X, consentendo di creare e distruggere automaticamente i builder secondo necessità.

L’ecosistema di plugin copre tutti gli strumenti moderni: Docker, Kubernetes, Fastlane, SonarQube, GitLab, Bitbucket. Se un plugin pronto non è disponibile, puoi scrivere la tua estensione in Java o utilizzare Pipeline Shared Libraries per riutilizzare il codice tra progetti.

Domande frequenti

Cos’è Jenkins nello sviluppo mobile?

Jenkins è un server CI/CD open source per automatizzare la creazione, il test e la consegna di applicazioni iOS e Android. Funziona su Java, supporta build distribuiti tramite architettura Master-Agent e si configura tramite interfaccia web o Jenkinsfile nel repository del progetto.

In che cosa Jenkins si differenzia dagli altri sistemi CI/CD?

Jenkins si differenzia per l’infrastruttura autogestita e il sistema di plugin. A differenza di Travis CI o GitHub Actions, Jenkins richiede l’installazione su un proprio server, ma offre il controllo completo sull’ambiente di build, la sicurezza e le policy di accesso per progetti aziendali.

Cos’è Jenkins Pipeline e come funziona?

Jenkins Pipeline è la definizione di un processo CI/CD come codice Groovy archiviato in un Jenkinsfile. La Pipeline consiste in fasi (stages) e passaggi (steps) che descrivono la creazione, il test e il deploy. Supporta due sintassi: dichiarativa per scenari semplici e scriptata per quelli complessi.

Quali plugin Jenkins servono per lo sviluppo mobile?

Per iOS, Xcode Integration e Keychain Manager sono essenziali. Per Android — Gradle Plugin e Android Emulator. Per entrambe le piattaforme: Git Integration, Credentials Binding, Docker Pipeline e Slack Notification per notifiche dello stato del build.

Come configurare Jenkins per build iOS e Android?

Installa Jenkins su un server, aggiungi un agente macOS per iOS e un agente Linux per Android con SDK installati. Crea un Jenkinsfile nella radice del repository descrivendo le fasi di build. Per iOS, usa Fastlane per la firma del codice; per Android, task Gradle con caching delle dipendenze.

Riepilogo

  • Jenkins — Server CI/CD open source su Java per automatizzare creazione, test e consegna di applicazioni mobili
  • L’architettura Master-Agent consente build distribuiti su macOS per iOS e Linux per Android
  • Jenkins Pipeline descrive il processo CI/CD come codice in Jenkinsfile con sintassi dichiarativa o scriptata Groovy
  • I plugin estendono la funzionalità — oltre 1800 moduli per Git, Docker, Fastlane e altri strumenti
  • Il Jenkinsfile per iOS include installazione pod, build Xcode, test e consegna a TestFlight tramite Fastlane
  • Il Jenkinsfile per Android include linter, test unitari, build APK e test su emulatore
  • Per startup si consiglia Travis CI cloud; per progetti Enterprise, Jenkins con controllo completo dell’infrastruttura

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche