Cosa è JenkinsPerché utilizzare uno strumento di integrazione continua (CI)?

⚡ Riepilogo intelligente

Jenkins è il server di automazione open-source che compila e testa il codice ogni volta che uno sviluppatore effettua un commit, trasformando l'integrazione continua da un'attività notturna in un processo che viene eseguito continuamente durante l'intera giornata lavorativa.

  • 🔘 Scopo: Jenkins orchestra automaticamente le fasi di compilazione, test e distribuzione dopo ogni commit.
  • ☑️ Origine: Derivato da Hudson nel 2011, è ora il server CI più diffuso.
  • Condutture: A JenkinsIl file memorizzato insieme al codice definisce ogni fase della compilazione.
  • 🧪 plugin: Oltre duemila plugin si collegano Jenkins a Git, Maven, Docker e Kubernetes.
  • Scambio: L'hosting autonomo offre il pieno controllo, ma comporta anche la gestione del server.

Jenkins Panoramica del server di integrazione continua

Cosa è Jenkins?

Jenkins è un server di integrazione continua open source scritto in Java per orchestrare una serie di azioni al fine di realizzare il processo di integrazione continua in modo automatizzato. Jenkins Supporta l'intero ciclo di vita dello sviluppo del software, dalla creazione, al test, alla documentazione, alla distribuzione e ad altre fasi del ciclo di vita dello sviluppo del software.

Jenkins è un'applicazione ampiamente utilizzata in tutto il mondo, con centinaia di migliaia di installazioni e in continua crescita. Utilizzando Jenkins, le aziende di software possono accelerare il loro processo di sviluppo software, poiché Jenkins può automatizzare la compilazione e il test a una velocità elevata.

Si tratta di un'applicazione basata su server e richiede un server web come Apache Tomcat. Il motivo Jenkins Il software è diventato così popolare per il monitoraggio delle attività ripetute che si presentano durante lo sviluppo di un progetto. Ad esempio, se il tuo team sta sviluppandoping un progetto, Jenkins Verificherò continuamente le build del tuo progetto e ti mostrerò gli errori nelle prime fasi dello sviluppo.

Nota: schierare la WAR in Apache Tomcat funziona ancora, ma le versioni attuali includono un contenitore di servlet incorporato, quindi Jenkins normalmente funziona da solo. La linea 2.555.x LTS richiede Java 21

Cos'è l'integrazione continua?

Integrazione continua è un processo di integrazione più volte delle modifiche al codice apportate da più sviluppatori in un unico progetto. Il software viene testato immediatamente dopo il commit del codice. Con ogni commit del codice, 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.

Il commit, la creazione, il test e la distribuzione sono un processo continuo e da qui il nome integrazione/distribuzione continua.

Che aspetto ha e come funziona il Jenkins funziona?

Jenkins è un'applicazione basata su server e richiede un server web come Apache Tomcat per funzionare su varie piattaforme come Windows, Linux, macOS, Unix, ecc. Per utilizzare Jenkins, devi creare pipeline che sono una serie di passaggi che un Jenkins il server prenderà. Jenkins La pipeline di integrazione continua (CIP) è un potente strumento che consiste in un insieme di strumenti progettati per ospitare, monitorare, compilare e testare il codice o le modifiche al codice, come ad esempio:

  • Server di integrazione continua (Jenkins, Bamboo, CruiseControl, TeamCity, e altri)
  • Strumento di controllo della versione (ad esempio, CVS, SVN, GIT, Mercurial, Perforce, ClearCase e altri)
  • Strumento di compilazione (Make, ANT, Maven, Ivy, Gradle, e altri)
  • Framework di test di automazione (Selenium, Appium, TestComplete, UFT, e altri)

Nelle versioni attuali questi passaggi si trovano in un JenkinsFile inserito accanto al codice. Jenkins Il controller legge quel file e passa ogni fase a un agente, che è la macchina che esegue effettivamente il lavoro.

Jenkins Storia

  • Kohsuke Kawaguchi, a Java Lo sviluppatore, che lavorava presso SUN Microsystems, era stanco di creare codice e correggere errori ripetutamente. Nel 2004, ha creato un server di automazione chiamato Hudson che automatizza le attività di creazione e test.
  • Nel 2011, Oracle chi possedeva Sun Microsystems ebbe una disputa con la comunità open source di Hudson, quindi crearono un fork di Hudson e lo rinominarono come Jenkins.
  • Sia Hudson che Jenkins hanno continuato a operare in modo indipendente. Ma in breve tempo, Jenkins ha acquisito molti progetti e collaboratori mentre Hudson è rimasto con solo 32 progetti. Col tempo, Jenkins Il fiume Hudson è diventato più popolare e non viene più sottoposto a manutenzione.

Perché utilizzare l'integrazione continua con Jenkins?

Alcune persone potrebbero pensare che il vecchio modo di sviluppareping il software è la soluzione migliore. Comprendiamo i vantaggi della CI con Jenkins con il seguente esempio

Immaginiamo che ci siano circa 10 sviluppatori che lavorano su un repository condiviso. Alcuni sviluppatori completano il loro lavoro in 25 giorni, mentre altri impiegano 30 giorni.

Before Jenkins Dopo Jenkins

Una volta che tutti gli sviluppatori avevano completato le attività di codifica assegnate, erano soliti impegnare il codice tutto nello stesso tempo. Later, La build viene testata e distribuita.

Code Il commit è stato compilato e il ciclo di test è stato molto infrequente, e una singola build è stata eseguita dopo molti giorni.

Il codice viene compilato e testato non appena lo sviluppatore effettua il commit del codice. Jenkins compilerò e testerò il codice molte volte durante la giornata

Se la build ha successo, allora Jenkins distribuirà il codice sorgente sul server di test e avviserà il team di distribuzione.

Se la compilazione fallisce, allora Jenkins segnalerà gli errori al team di sviluppo.

Poiché il codice è stato creato tutto in una volta, alcuni sviluppatori dovrebbero attendere fino a quando altri sviluppatori non finiranno di scrivere per verificare la loro build Il codice viene creato immediatamente dopo il commit di uno sviluppatore.
Non è un compito facile isolare, rilevare e correggere errori per più commit. Poiché il codice viene compilato dopo ogni commit di un singolo sviluppatore, è facile individuare quale codice ha causato l'errore di compilazione.
Code costruire e processo di prova sono interamente manuali, quindi ci sono molte possibilità di fallimento. Processo automatizzato di creazione e test che consente di risparmiare tempi e ridurre i difetti.
Il codice viene distribuito una volta corretti e testati tutti gli errori. Il codice viene distribuito dopo ogni compilazione e test riusciti.
Il ciclo di sviluppo è lento Il ciclo di sviluppo è veloce. Le nuove funzionalità sono più facilmente disponibili per gli utenti. Aumenta i profitti.

Caso di studio reale di integrazione continua

Sono sicuro che tutti voi siate a conoscenza del vecchio telefono Nokia. Nokia implementava una procedura chiamata nightly build. Dopo molteplici commit da parte di diversi sviluppatori durante il giorno, il software veniva creato ogni notte. Poiché il software veniva creato solo una volta al giorno, isolare, identificare e correggere gli errori in una base di codice di grandi dimensioni è estremamente complicato.

LaterHanno adottato un approccio di integrazione continua, illustrato di seguito. Il software veniva compilato e testato non appena uno sviluppatore effettuava un commit del codice. Se veniva rilevato un errore, lo sviluppatore responsabile poteva correggerlo rapidamente.

La build notturna di Nokia è stata sostituita da un ciclo di integrazione continua attivato da commit.

Jenkins plugin

Per impostazione predefinita, Jenkins viene fornito con un set limitato di funzionalità. Se desideri integrare il tuo Jenkins installazione con strumenti di controllo della versione come Git, quindi è necessario installare plugin relativi a Git. Infatti, per l'integrazione con strumenti come Maven, Amazon EC2, devi installare i rispettivi plugin nel tuo Jenkins, come mostra il gestore dei plugin qui sotto.

Jenkins Gestione plugin: elenco dei plugin disponibili pronti per l'installazione

Vantaggi dell'uso Jenkins

  • Jenkins è gestito dalla comunità, che è molto aperta. Ogni mese, tengono riunioni pubbliche e raccolgono contributi dal pubblico per lo sviluppo di Jenkins progetto.
  • Il progetto mantiene un ritmo di rilascio prevedibile: ogni dodici settimane viene scelta una nuova baseline per il supporto a lungo termine, che riceve poi aggiornamenti programmati.
  • Con la crescita della tecnologia, cresce anche Jenkins. Il database dei plugin ora contiene oltre duemila plugin. Con i plugin, Jenkins diventa ancora più potente e ricco di funzionalità.
  • Jenkins Lo strumento supporta anche l'architettura basata su cloud, quindi è possibile implementarlo Jenkins nelle piattaforme basate sul cloud.
  • La ragione per cui Jenkins La sua popolarità è dovuta al fatto che è stato creato da uno sviluppatore per gli sviluppatori.

Svantaggi dell'utilizzo Jenkins

Anche se Jenkins È uno strumento molto potente, ma ha i suoi difetti.

  • La sua interfaccia è obsoleta e poco intuitiva rispetto alle attuali tendenze in fatto di interfacce utente, sebbene le versioni recenti abbiano modernizzato gran parte del design dello schermo.
  • Anche se Jenkins è amato da molti sviluppatori, ma non è così facile da mantenere perché Jenkins Viene eseguito su un server e richiede alcune competenze da amministratore di server per monitorarne l'attività.
  • Uno dei motivi per cui molte persone non implementano Jenkins è dovuto alla difficoltà di installazione e configurazione Jenkins.
  • Le integrazioni continue si interrompono regolarmente a causa di alcune piccole modifiche alle impostazioni. L'integrazione continua verrà sospesa e pertanto richiederà l'attenzione dello sviluppatore.
  • I conflitti di dipendenza tra plugin si verificano quando molti plugin vengono aggiornati in momenti diversi, pertanto gli aggiornamenti dei plugin necessitano di una finestra di manutenzione dedicata.

Se questi compromessi sono importanti per la tua squadra, confronta i Migliori Jenkins Strumenti alternativi e l'elenco più ampio di i migliori strumenti di integrazione continua prima di optare per un server self-hosted.

DOMANDE FREQUENTI

Sì. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Jenkins È rilasciato sotto licenza MIT e non costa nulla scaricarlo o eseguirlo. La spesa è indiretta: il server, lo spazio di archiviazione e il tempo dell'amministratore necessari per mantenere efficiente un controller self-hosted.

La linea di supporto a lungo termine 2.555.x è in esecuzione su Java 21, con Java 25 hanno inoltre sostenuto la tesi; Java Il requisito 17 è stato rimosso nella versione 2.555.1. Verificare i requisiti prima dell'aggiornamento, poiché una versione obsoleta di JDK impedisce l'avvio del controller.

A JenkinsIl file è un file di testo contenente la definizione della pipeline, inserito insieme al codice dell'applicazione. Può essere scritto in sintassi dichiarativa o scriptata e mantenerloping Insererlo nel sistema di controllo versione rende la build revisionabile come qualsiasi altra modifica.

Il controller è il Jenkins Un'installazione che pianifica il lavoro e gestisce l'interfaccia web. Un agente è una macchina separata che esegue i passaggi di compilazione che gli vengono assegnati, distribuendo il carico e consentendo la compilazione su diversi sistemi operativi.

I modelli di machine learning raggruppano gli errori ripetuti, distinguono le regressioni reali dai test instabili e individuano il commit con maggiore probabilità responsabile. In questo modo, un lungo log della console si trasforma in un breve elenco ordinato per lo sviluppatore di turno.

Copilota GitHub bozze di fasi dichiarative e passaggi comuni da un commento. RevEsamina attentamente ogni suggerimento, perché spesso vengono inventati nomi di passaggi per i plugin che non sono installati sul tuo controller.

I servizi ospitati non necessitano di manutenzione del server e si avviano più velocemente, mentre Jenkins offre il controllo completo su hardware, plugin e posizione dei dati. I team con ambienti di compilazione insoliti di solito mantengono Jenkins; i progetti di piccole dimensioni spesso preferiscono un runner ospitato.

Sì. I passaggi di compilazione possono richiamare Maven, Gradle o Formica e JUnit, TestNG or Selenium I risultati vengono pubblicati sulla pagina del lavoro, quindi una suite di test fallimentare contrassegna l'intera build in rosso.

Riassumi questo post con: