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

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 che conta circa 300 installazioni e cresce di giorno in giorno. 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.

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 è un potente strumento che consiste in un insieme di strumenti progettati per host, monitore, compilare e test codice o modifiche al codice, come:

  • Server di integrazione continua (Jenkins, Bamboo, CruiseControl, TeamCity, e altri)
  • Strumento di controllo del codice sorgente (ad esempio, CVS, SVN, GIT, Mercurial, Perforce, ClearCase e altri)
  • Strumento di costruzione (Crea, ANT, Maven, Ivy, Gradle, e altri)
  • Quadro di test di automazione (Selenium, Appium, TestComplete, UFT, e altri)

Storia di Jenkin

  • 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 stanno lavorando su a repository condiviso. Alcuni sviluppatori completano la propria attività in 25 giorni mentre altri impiegano 30 giorni per completarla.

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 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 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 creato dopo ogni commit di un singolo sviluppatore, è facile individuare il codice che ha causato il fallimento della 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.

Later, 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.

Caso di studio reale sull'integrazione continua

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.

Jenkins plugin
Integrazione dei plugin in Jenkins

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.
  • Finora sono stati chiusi circa 280 ticket e il progetto pubblica una versione 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 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 non facile da usare rispetto alle attuali tendenze dell'interfaccia utente.
  • 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.

Conclusione

  • Nell'integrazione continua, dopo un commit del codice, il software viene creato e testato immediatamente
  • Jenkins Utilizzato per orchestrare una sequenza di azioni per l'integrazione continua in un progetto software
  • Before Jenkins Quando tutti gli sviluppatori avevano completato i compiti di programmazione assegnati, erano soliti effettuare il commit del codice contemporaneamente. Later, La build viene testata e distribuita.
  • Dopo Jenkins Il codice viene compilato e testato non appena lo sviluppatore effettua il commit. Jenkin compilerà e testerà il codice più volte durante la giornata.
  • 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 i plugin relativi a Git. Controlla anche Migliori Jenkins Strumenti alternativi
  • I maggiori vantaggi di Jenkins è che è gestito dalla comunità che tiene riunioni pubbliche e raccoglie input dal pubblico per lo sviluppo di Jenkins progetti
  • Il più grande svantaggio di Jenkins Il problema è che la sua interfaccia è obsoleta e non intuitiva rispetto alle attuali tendenze dell'interfaccia utente. Se stai valutando altre opzioni che potrebbero offrire un'esperienza utente più moderna, potresti voler esplorare alcune delle i migliori strumenti di integrazione continua a disposizione.

Riassumi questo post con: