Cos'è Jenkins?
Jenkins è un server di integrazione continua open source in grado di orchestrare una catena di azioni che aiutano a realizzare il processo di integrazione continua (e non solo) in modo automatizzato.
Jenkins è gratuito ed è interamente scritto in Java. Jenkins è un'applicazione ampiamente utilizzata in tutto il mondo che ha circa 300.000 installazioni e cresce di giorno in giorno.
È un'applicazione basata su server e richiede un server web come Apache Tomcat. Il motivo per cui Jenkins è diventato così popolare è quello del suo monitoraggio delle attività ripetute che sorgono durante lo sviluppo di un progetto. Ad esempio, se il tuo team sta sviluppando un progetto, Jenkins testerà continuamente le build del tuo progetto e ti mostrerà gli errori nelle prime fasi del tuo sviluppo.
Utilizzando Jenkins, le società di software possono accelerare il processo di sviluppo del software, poiché Jenkins può automatizzare la creazione e il test a un ritmo rapido. Jenkins supporta il ciclo di vita di sviluppo completo del software dalla creazione, test, documentazione del software, distribuzione e altre fasi del ciclo di vita di sviluppo del software.
In questo tutorial imparerai
- Cos'è Jenkins?
- Cos'è l'integrazione continua?
- Storia di Jenkin
- Perché utilizzare l'integrazione continua con Jenkins?
- Caso di studio del mondo reale di integrazione continua
- Vantaggi dell'utilizzo di Jenkins
- Svantaggi dell'utilizzo di Jenkins
Cos'è l'integrazione continua?
In Continuous Integration dopo un commit del codice, il software viene creato e testato immediatamente. In un progetto di grandi dimensioni con molti sviluppatori, i commit vengono effettuati più volte durante il giorno. Con ogni commit il codice viene creato e testato. Se il test viene superato, la build viene testata per la distribuzione. Se la distribuzione ha esito positivo, il codice viene inviato alla produzione. Questo commit, compilazione, test e distribuzione è un processo continuo e da qui il nome integrazione / distribuzione continua.
Una pipeline di integrazione continua è un potente strumento costituito da un set di strumenti progettati per ospitare , monitorare , compilare e testare codice o modifiche al codice, come:
- Continuous Integration Server (Jenkins, Bamboo, CruiseControl, TeamCity e altri)
- Strumento di controllo del codice sorgente (ad es. CVS, SVN, GIT, Mercurial, Perforce, ClearCase e altri)
- Strumento di creazione (Make, ANT, Maven, Ivy, Gradle e altri)
- Framework di test di automazione (Selenium, Appium, TestComplete, UFT e altri)
Storia di Jenkin
- Kohsuke Kawaguchi, uno sviluppatore Java, che lavorava presso SUN Microsystems, era stanco di creare il codice e correggere gli errori ripetutamente. Nel 2004, ha creato un server di automazione chiamato Hudson che automatizza l'attività di compilazione e test.
- Nel 2011, Oracle, proprietaria di Sun Microsystems, ha avuto una controversia con la comunità open source di Hudson, quindi ha biforcato Hudson e l'ha ribattezzata Jenkins.
- Sia Hudson che Jenkins hanno continuato a operare in modo indipendente. Ma in un breve lasso di tempo, Jenkins ha acquisito molti progetti e collaboratori mentre Hudson è rimasto con solo 32 progetti. Con il tempo, Jenkins è diventato più popolare e Hudson non è più mantenuto.
Perché utilizzare l'integrazione continua con Jenkins?
Alcune persone potrebbero pensare che il modo vecchio stile di sviluppare il software sia il modo migliore. Comprendiamo i vantaggi di CI con Jenkins con il seguente esempio
Immaginiamo che ci siano circa 10 sviluppatori che stanno lavorando su un repository condiviso. Alcuni sviluppatori completano il loro compito in 25 giorni, mentre altri impiegano 30 giorni per completare.
Prima di Jenkins | Dopo Jenkins |
---|---|
Una volta che tutti gli sviluppatori avevano completato le attività di codifica assegnate, erano soliti eseguire il commit del codice contemporaneamente. Successivamente, Build viene testato e distribuito. Il commit del codice è stato compilato e il ciclo di test era molto raro e una singola build è stata eseguita dopo molti giorni. | Il codice viene creato e testato non appena lo sviluppatore esegue il commit del codice. Jenkin creerà e testerà il codice molte volte durante il giorno Se la compilazione ha esito positivo, Jenkins distribuirà l'origine nel server di test e informerà il team di distribuzione. Se la compilazione fallisce, Jenkins notificherà gli errori al team degli sviluppatori. |
Poiché il codice è stato creato tutto in una volta, alcuni sviluppatori avrebbero dovuto attendere che altri sviluppatori finissero di codificare per verificare la loro build | Il codice viene creato immediatamente dopo che uno qualsiasi degli sviluppatori esegue il commit. |
Non è un compito facile isolare, rilevare e correggere gli errori per più commit. | Poiché il codice viene creato dopo ogni commit di un singolo sviluppatore, è facile rilevare il codice che ha causato il fallimento della compilazione |
La compilazione del codice e il processo di test sono interamente manuali, quindi ci sono molte possibilità di fallimento. | Processo di build e test automatizzato per risparmiare tempo e ridurre i difetti. |
Il codice viene distribuito una volta che tutti gli errori sono stati corretti e testati. | Il codice viene distribuito dopo ogni compilazione e test di successo. |
Il ciclo di sviluppo è lento | Il ciclo di sviluppo è veloce. Le nuove funzionalità sono più prontamente disponibili per gli utenti. Aumenta i profitti. |
Caso di studio del mondo reale di integrazione continua
Sono sicuro che tutti voi conoscete il vecchio telefono Nokia. Nokia implementava una procedura chiamata nightly build. Dopo molteplici commit da diversi sviluppatori durante il giorno, il software è stato costruito ogni notte. Poiché il software è stato creato solo una volta al giorno, è un enorme problema isolare, identificare e correggere gli errori in una grande base di codice.
Successivamente, hanno adottato l'approccio dell'integrazione continua. Il software è stato creato e testato non appena uno sviluppatore ha inviato il codice. Se viene rilevato un errore, il rispettivo sviluppatore può correggere rapidamente il difetto.
Plugin Jenkins
Per impostazione predefinita, Jenkins viene fornito con un set limitato di funzionalità. Se desideri integrare la tua installazione di Jenkins con strumenti di controllo della versione come Git, devi installare i plugin relativi a Git. Infatti, per l'integrazione con strumenti come Maven, Amazon EC2, è necessario installare i rispettivi plugin nel tuo Jenkins.

Vantaggi dell'utilizzo di Jenkins
- Jenkins è gestito dalla community che è molto aperta. Ogni mese tengono riunioni pubbliche e ricevono input dal pubblico per lo sviluppo del progetto Jenkins.
- Finora sono stati chiusi circa 280 biglietti e il progetto pubblica un rilascio stabile ogni tre mesi.
- Con la crescita della tecnologia, cresce anche Jenkins. Finora Jenkins ha circa 320 plugin pubblicati nel suo database di plugin. Con i plugin, Jenkins diventa ancora più potente e ricco di funzionalità.
- Jenkins supporta anche l'architettura basata su cloud in modo da poter distribuire Jenkins in piattaforme basate su cloud.
- Il motivo per cui Jenkins è diventato popolare è che è stato creato da uno sviluppatore per sviluppatori.
Svantaggi dell'utilizzo di Jenkins
Sebbene Jenkins sia uno strumento molto potente, ha i suoi difetti.
- La sua interfaccia è obsoleta e non facile da usare rispetto alle attuali tendenze dell'interfaccia utente.
- Sebbene Jenkins sia amato da molti sviluppatori, non è così facile mantenerlo perché Jenkins viene eseguito su un server e richiede alcune competenze come amministratore del server per monitorare la sua attività.
- Uno dei motivi per cui molte persone non implementano Jenkins è dovuto alla sua difficoltà nell'installazione e configurazione di Jenkins.
- Le integrazioni continue si interrompono regolarmente a causa di alcune piccole modifiche alle impostazioni. L'integrazione continua verrà sospesa e pertanto richiede una certa attenzione da parte dello sviluppatore.
Conclusione:
- In Continuous Integration, dopo un commit del codice, il software viene creato e testato immediatamente
- Jenkins è un server di integrazione continua open source in grado di orchestrare una catena di azioni
- Prima di Jenkins, quando tutti gli sviluppatori avevano completato le attività di codifica assegnate, erano soliti eseguire il commit del codice tutti contemporaneamente. Successivamente, Build viene testato e distribuito.
- Dopo Jenkins il codice viene creato e testato non appena lo sviluppatore esegue il commit del codice. Jenkin costruirà e testerà il codice molte volte durante il giorno
- Per impostazione predefinita, Jenkins viene fornito con un set limitato di funzionalità. Se desideri integrare la tua installazione di Jenkins con strumenti di controllo della versione come Git, devi installare i plugin relativi a Git
- Il più grande vantaggio di Jenkins è che è gestito dalla comunità che tiene riunioni pubbliche e riceve input dal pubblico per lo sviluppo dei progetti Jenkins
- Il più grande svantaggio di Jenkin è che la sua interfaccia è obsoleta e non facile da usare rispetto alle attuali tendenze dell'interfaccia utente.