Cos'è Jenkins, il server open source per la CI/CD

Jenkins aiuta ad automatizzare le procedure di test e rilascio periodico del nuovo codice, con plugin verso qualsiasi ambiente di sviluppo

Autore: Redazione ImpresaCity

Per tutte le aziende che si occupano di sviluppo software, anche solo in minima parte, il mantra di questi ultimi tempi è DevOps: come gestire in maniera integrata le fasi di sviluppo, test e distribuzione del software, con l'obiettivo finale di arrivare a rilasci che siano allo stesso tempo frequenti e stabili. Il tema collegato è quello della Continuous Integration o della Continuous Delivery: idealmente i rilasci successivi di nuovo codice costituiscono un flusso continuo che si installa in produzione con la (relativa) certezza di non bloccare il buon funzionamento delle applicazioni che muovono il business d'impresa.

Ci sono diverse piattaforme software commerciali che aiutano a creare ambienti efficaci di DevOps e CI/CD, ma c'è anche una soluzione open source molto diffusa che, tra l'altro, muove proprio alcune delle soluzioni commerciali. Si tratta di Jenkins, un progetto che viene citato spesso nel mondo dello sviluppo e che vale la pena conoscere anche solo sommariamente.

Jenkins nasce oltre dieci anni fa in Sun Microsystems con un nome diverso (Hudson). Allora è in sintesi un modulo server che il suo creatore Kohsuke Kawaguch ha creato per automatizzare i processi di test e rilascio del codice Java. Qualche anno dopo da Hudson nasce Jenkins, che ne è sostanzialmente un fork e che attualmente ha una diffusione molto superiore a quella del predecessore.

Un esempio di pipleine per Jenkins

Il principio di base di Jenkins non è cambiato ma si è ampliato molto il suo raggio d'azione. Non copre solo il codice Java ma praticamente tutte le piattaforme principali, grazie a circa 1.400 plugin che gli permettono di dialogare con qualsiasi ambiente di sviluppo. Esiste ancora sotto forma di modulo eseguibile da un application server ma è anche distribuito come immagine Docker, il che ne semplifica l'uso in ambienti virtualizzati.

Jenkins dialoga tra l'altro con i principali repository di codice, in primis ovviamente GitHub, e la gestione del processo di sviluppo, test e distribuzione si basa su un elemento chiave: le pipeline. Una pipeline è, in sintesi e semplificando, una sorta di script che definisce i passi (step anche nel linguaggio di scripting) da eseguire in sequenza nel processo, raggruppati in più sezioni definite stage.



Uno sviluppatore può creare una pipeline molto dettagliata che indica gli step da fare (ad esempio richiamare un particolare comando di shell o lanciare uno specifico servizio) per compilare il codice, testarne il buon funzionamento e poi distribuirlo in un ambiente limitato o proprio in produzione. Idealmente queste fasi di compilazione, test e distribuzione a più stadi corrispondono ciascuna a un diverso stage. Per ogni stage si possono definire le operazioni da compiere alla fine, come minimo in funzione del fatto se lo stage si è completato con successo o meno.

Per semplificare la gestione delle pipeline è stata sviluppata una interfaccia grafica accessoria di Jenkins, denominata Blue Ocean. Il suo vantaggio principale sta proprio nella possibilità che offre di assemblare pipeline con un approccio di programmazione visuale. Oltre a ciò mostra in maniera sintetica ma completa lo stato di esecuzione delle varie pipeline, per verificare a colpo d'occhio dove sono eventuali problemi nei processi di CI/CD.

Visualizza la versione completa sul sito

Informativa
Questo sito o gli strumenti terzi da questo utilizzati si avvalgono di cookie necessari al funzionamento ed utili alle finalità illustrate nella cookie policy. Se vuoi saperne di più o negare il consenso a tutti o ad alcuni cookie, consulta la cookie policy. Chiudendo questo banner, acconsenti all’uso dei cookie.