Battaglia di Jenkins e GitLab CI/CD

Nell'ultimo decennio sono stati compiuti progressi significativi nello sviluppo di strumenti per l'integrazione continua (Continuous Integration, CI) e l'implementazione continua (Continuous Delivery, CD). Lo sviluppo di tecnologie per integrare lo sviluppo e il funzionamento del software (Development Operations, DevOps) ha portato a un rapido aumento della domanda di strumenti CI/CD. Le soluzioni esistenti vengono costantemente migliorate, cercando di stare al passo con i tempi, vengono rilasciate nuove versioni, nel mondo del software di garanzia della qualità (Quality Assurance, QA), compaiono costantemente molti nuovi prodotti. Con una tale ricchezza di scelta, scegliere lo strumento giusto non è un compito facile.

Battaglia di Jenkins e GitLab CI/CD

Tra tutti gli strumenti CI / CD esistenti, ci sono due progetti che meritano sicuramente attenzione per chi cerca qualcosa da quest'area. Stiamo parlando di Jenkins e del tool GitLab CI/CD, che fa parte della piattaforma GitLab. Jenkins ha più di 16000 stelle su GitHub. Il repository GitLab su gitlab.com ha ottenuto un punteggio leggermente superiore 2000 stelle. Se confrontiamo la popolarità dei repository, risulta che Jenkins ha ottenuto 8 volte più stelle rispetto alla piattaforma, che include GitLab CI / CD. Ma quando si sceglie uno strumento CI / CD, questo non è l'unico indicatore a cui prestare attenzione. Ce ne sono molti altri, e questo spiega perché in molti confronti, Jenkins e GitLab CI/CD sono molto vicini tra loro.

Prendiamo, ad esempio, i dati della piattaforma G2, che raccoglie le recensioni di un'ampia varietà di prodotti e le valutazioni che gli utenti danno loro. Ecco la valutazione media Jenkins, basato su 288 recensioni, è di 4,3 stelle. Oh, oh GitLab ci sono 270 recensioni, la valutazione media per questo strumento è di 4,4 stelle. Non sbaglieremo nel dire che Jenkins e GitLab CI / CD competono tra loro ad armi pari. È interessante notare che il progetto Jenkins è apparso nel 2011 e da allora è stato uno strumento preferito dai tester. Ma allo stesso tempo, il progetto GitLab CI/CD, lanciato nel 2014, ha preso posizione, molto in alto, grazie alle funzionalità avanzate offerte da questa piattaforma.

Se parliamo della popolarità di Jenkins rispetto ad altre piattaforme simili, notiamo che, dopo aver pubblicato un articolo che confronta le piattaforme Travis CI e Jenkins, abbiamo organizzato un sondaggio. Vi hanno partecipato 85 utenti. Agli intervistati è stato chiesto di scegliere lo strumento CI/CD che preferiscono. Il 79% ha scelto Jenkins, il 5% ha scelto Travis CI e il 16% ha indicato di preferire altri strumenti.

Battaglia di Jenkins e GitLab CI/CD
Risultati Sondaggio

Tra gli altri strumenti CI/CD, GitLab CI/CD è stato menzionato più spesso.

Se prendi sul serio DevOps, devi selezionare attentamente gli strumenti appropriati, tenendo conto delle specifiche del progetto, del suo budget e di altri requisiti. Per aiutarti a fare la scelta giusta, esamineremo Jenkins e GitLab CI/CD. Questo, si spera, ti aiuterà a fare la scelta giusta.

Introduzione a Jenkins

Battaglia di Jenkins e GitLab CI/CD
Jenkins è uno strumento CI/CD ben noto e flessibile progettato per automatizzare molte attività relative a progetti software. Jenkins è scritto interamente in Java e rilasciato sotto licenza MIT. Dispone di un potente set di funzionalità volte ad automatizzare le attività associate alla creazione, al test, alla distribuzione, all'integrazione e al rilascio del software. Questo strumento può essere utilizzato su vari sistemi operativi. Questi includono macOS, Windows e molte distribuzioni Linux come OpenSUSE, Ubuntu e Red Hat. Esistono pacchetti di installazione per Jenkins progettati per vari sistemi operativi, questo strumento può essere installato su Docker e su qualsiasi sistema che abbia un JRE (Java Runtime Environment).

Gli sviluppatori di Jenkins hanno creato un altro progetto, Jenkins X, progettato per funzionare in un ambiente Kubernetes. Jenkins X integra Helm, Jenkins CI/CD Server, Kubernetes e altri strumenti per creare pipeline CI/CD che seguono le best practice DevOps. Ad esempio, qui viene utilizzato GitOps.

Si può aggiungere al tesoro dei vantaggi di Jenkins il fatto che i suoi script sono molto ben strutturati, comprensibili e facili da leggere. Il team di Jenkins ha creato circa 1000 plug-in volti a organizzare l'interazione di Jenkins con un'ampia varietà di tecnologie. Gli script possono utilizzare sistemi di autenticazione che, ad esempio, consentono di connettersi a vari sistemi chiusi.

Durante il funzionamento della pipeline Jenkins, puoi osservare cosa succede in ogni fase, se determinate fasi del lavoro sono state completate con successo o meno. Puoi guardare tutto questo, tuttavia, senza utilizzare una certa interfaccia grafica, ma utilizzando le funzionalità del terminale.

Caratteristiche di Jenkins

Tra le caratteristiche ben note di Jenkins ci sono la facilità di installazione, un alto livello di automazione di varie operazioni e un'eccellente documentazione. Se parliamo di risolvere le attività DevOps, qui Jenkins è considerato uno strumento molto affidabile, utilizzando il quale, di norma, non ha senso monitorare da vicino l'intero processo di elaborazione del progetto. Questo non è il caso di altri strumenti CI/CD. Parliamo di alcune delle caratteristiche più importanti di Jenkins.

▍1. Supporto gratuito, open source e multipiattaforma

Jenkins può essere eseguito su piattaforme macOS, Windows e Linux. Può funzionare anche in un ambiente Docker, che consente di organizzare l'esecuzione uniforme e rapida di attività automatizzate. Questo strumento può anche essere eseguito come servlet in contenitori abilitati per Java come Apache Tomcat e GlassFish. Installazione di Jenkins qualitativamente documentato.

▍2. Ecosistema di plug-in sviluppato

L'ecosistema di plug-in Jenkins sembra essere molto più maturo degli ecosistemi di plug-in di altri strumenti CI/CD. Attualmente ci sono oltre 1500 plugin per Jenkins. Questi plugin hanno lo scopo di risolvere una vasta gamma di compiti, con il loro aiuto puoi automatizzare una varietà di progetti. La ricchezza di plug-in gratuiti tra cui scegliere significa che se utilizzi Jenkins, non devi acquistare costosi plug-in a pagamento. C'è una possibilità integrazione Jenkins con molti strumenti DevOps.

▍3. Facile installazione e configurazione

Jenkins è abbastanza facile da installare e configurare. Allo stesso tempo, anche il processo di aggiornamento del sistema è molto conveniente. Anche in questo caso vale la pena menzionare la qualità della documentazione, poiché in essa è possibile trovare le risposte a una varietà di domande relative all'installazione e alla configurazione di Jenkins.

▍4. Comunità amichevole

Come già accennato, Jenkins è un progetto open source, il cui ecosistema include un numero enorme di plug-in. Una grande comunità di utenti e sviluppatori si è sviluppata attorno a Jenkins per aiutare a sviluppare il progetto. La comunità è uno dei fattori che guida lo sviluppo di Jenkins.

▍5. Disponibilità dell'API REST

Mentre lavori con Jenkins, puoi utilizzare l'API REST, che espande le capacità del sistema. L'API per l'accesso remoto al sistema è presentata in tre versioni: XML, JSON con supporto JSONP, Python. Qui Pagina della documentazione che copre i dettagli sull'utilizzo dell'API REST di Jenkins.

▍6. Supporto per l'esecuzione parallela di attività

Jenkins supporta la parallelizzazione delle attività DevOps. Può essere facilmente integrato con strumenti pertinenti e ricevere notifiche sui risultati delle attività. Il test del codice può essere accelerato organizzando una build parallela del progetto utilizzando diverse macchine virtuali.

▍7. Supporto per il lavoro in ambienti distribuiti

Jenkins ti consente di organizzare build distribuite utilizzando più computer. Questa funzione è applicabile in progetti di grandi dimensioni e utilizza uno schema di lavoro, in base al quale esiste un server Jenkins master e diverse macchine slave. Le macchine slave possono essere utilizzate anche in situazioni in cui è necessario organizzare il test di un progetto in ambienti diversi. Queste caratteristiche distinguono Jenkins da altri progetti simili.

Introduzione a GitLab

Battaglia di Jenkins e GitLab CI/CD
GitLab CI / CD può essere definito uno degli strumenti DevOps più nuovi e amati. Questo strumento open source gratuito è integrato nel sistema di controllo della versione GitLab. La piattaforma GitLab ha una versione community, supporta la gestione dei repository, strumenti di tracciamento dei problemi, organizzazione della revisione del codice, meccanismi orientati alla documentazione. Le aziende possono installare GitLab localmente, collegandolo ad Active Directory e ai server LDAP per l'autorizzazione e l'autenticazione sicura degli utenti.

Qui Un tutorial video per aiutarti a imparare a creare pipeline CI/CD utilizzando le funzionalità CI/CD di GitLab.

GitLab CI/CD è stato originariamente rilasciato come progetto autonomo, ma nel 2015 questo set di strumenti è stato integrato in GitLab 8.0. Un singolo server GitLab CI/CD può supportare oltre 25000 utenti. Sulla base di tali server, è possibile creare sistemi ad alta disponibilità.

GitLab CI/CD e il progetto GitLab principale sono scritti in Ruby and Go. Sono rilasciati con licenza MIT. GitLab CI/CD, oltre alle consuete funzionalità degli strumenti CI/CD, supporta anche funzionalità aggiuntive relative, ad esempio, alla pianificazione del lavoro.

Integrare GitLab CI/CD in un progetto è molto semplice. Quando si utilizza GitLab CI/CD, il processo di elaborazione del codice del progetto è suddiviso in fasi, ciascuna delle quali può consistere in diverse attività eseguite in un determinato ordine. Le attività possono essere perfezionate.

Le attività possono essere eseguite in parallelo. Dopo aver impostato la sequenza di fasi e attività, la pipeline CI/CD è pronta per l'uso. Puoi monitorarne l'avanzamento monitorando lo stato delle attività. Di conseguenza, l'utilizzo di GitLab CI / CD è molto conveniente, forse più conveniente di altri strumenti simili.

Caratteristiche di GitLab CI/CD e GitLab

GitLab CI/CD è uno degli strumenti DevOps più popolari. Il progetto si distingue per la documentazione di alta qualità, le sue funzionalità sono facili e convenienti da usare. Se non hai ancora familiarità con GitLab CI/CD, il seguente elenco delle funzionalità di questo strumento ti darà un'idea generale di cosa puoi aspettarti da esso. Va notato che molte di queste funzionalità sono correlate alla piattaforma GitLab stessa, in cui è integrato GitLab CI / CD.

▍1. Popolarità

GitLab CI/CD è uno strumento relativamente nuovo che ha trovato un uso diffuso. GitLab CI/CD è diventato lentamente uno strumento CI/CD estremamente popolare utilizzato per test automatizzati e distribuzione software. È semplice da configurare. È anche uno strumento CI/CD gratuito integrato nella piattaforma GitLab.

▍2. Supporto per GitLab Pages e Jekyll

Jekyll è un generatore di siti statici che può essere utilizzato all'interno del sistema GitLab Pages per creare siti basati su repository GitLab. Il sistema prende i materiali di partenza e genera un sito statico già pronto basato su di essi. È possibile controllare l'aspetto e le caratteristiche di tali siti modificando il file _config.yml, usato da Jekyll.

▍3. Capacità di pianificazione del progetto

Grazie alla capacità di pianificare le fasi dei progetti, aumenta la comodità di tenere traccia dei problemi e dei loro gruppi. Ciò consente di gestire l'organizzazione del lavoro sui progetti, pianificarne l'attuazione in una data specifica.

▍4. Ridimensionamento automatico dei corridori CI

Grazie al ridimensionamento automatico dei corridori responsabili dell'esecuzione di compiti specifici, puoi risparmiare molto sul costo del noleggio delle capacità del server. Questo è molto importante, soprattutto quando si tratta di ambienti in cui i progetti vengono testati in parallelo. Inoltre, questo è importante per progetti di grandi dimensioni costituiti da più repository.

▍5. Strumenti di monitoraggio dei problemi

Le potenti funzionalità di tracciamento dei problemi di GitLab hanno portato molti progetti open source a utilizzare la piattaforma. GitLab CI/CD consente il test parallelo di diversi rami di codice. I risultati dei test vengono comodamente analizzati nell'interfaccia di sistema. Questo distingue GitLab CI/CD da Jenkins.

▍6. Limitare l'accesso ai repository

La piattaforma GitLab supporta la limitazione dell'accesso ai repository. Ad esempio, a coloro che collaborano a un progetto in un repository possono essere assegnate autorizzazioni appropriate ai loro ruoli. Ciò è particolarmente vero per i progetti aziendali.

▍7. Supporto attivo della comunità

Attorno a GitLab si è sviluppata una comunità attiva, che contribuisce allo sviluppo di questa piattaforma e dei suoi strumenti, in particolare GitLab CI/CD. La profonda integrazione di GitLab CI/CD e GitLab, tra le altre cose, rende facile trovare risposte alle domande che sorgono quando si lavora con GitLab CI/CD.

▍8. Supporto per vari sistemi di controllo della versione

GitLab CI/CD è un sistema che può funzionare con qualcosa di più del semplice codice ospitato nei repository GitLab. Ad esempio, il codice può essere archiviato in un repository GitHub e la pipeline CI/CD può essere organizzata sulla base di GitLab utilizzando GitLab CI/CD.

Confronto tra Jenkins e GitLab CI/CD

Jenkins e GitLab CI/CD sono ottimi strumenti, entrambi in grado di far funzionare senza problemi la pipeline CI/CD. Ma se li confronti, si scopre che, sebbene siano simili in molti modi, differiscono l'uno dall'altro in qualche modo.

Caratterizzazione
Jenkins
GitLab CI / CD

Fonte aperta o fonte chiusa
fonte aperta
fonte aperta

Installazione
Necessario.
Non richiesto in quanto si tratta di una funzionalità integrata della piattaforma GitLab.

Caratteristiche uniche
Supporto plug-in.
Profonda integrazione nel sistema di controllo della versione.

Sostegno
Manca.
C'è.

Installazione e configurazione
Le difficoltà non causano
Le difficoltà non causano

Autodistribuzione del sistema
Questo è l'unico modo per utilizzare il sistema.
Supportato.

Creazione di pipeline CI/CD
Supportato, utilizzando Jenkins Pipeline.
Supportato.

Monitoraggio delle prestazioni dell'applicazione
Manca.
C'è.

ecosistema
Ci sono oltre 1000 plugin.
Il sistema è in fase di sviluppo all'interno di GitLab.

API
Supporta un sistema API avanzato.
Offre un'API per una più profonda integrazione nei progetti.

Supporto javascript
C'è.
C'è.

Integrazione con altri strumenti
È supportata l'integrazione con altri strumenti e piattaforme (Slack, GitHub).
Molti strumenti per l'integrazione con sistemi di terze parti, in particolare con GitHub e Kubernetes.

Controllo della qualità del codice
Supportato: utilizzo del plug-in SonarQube e altri plug-in.
Supportato.

Differenze tra Jenkins e GitLab CI/CD

Dopo aver descritto e confrontato Jenkins e GitLab CI/CD, concentriamoci sulle differenze tra questi strumenti DevOps. Conoscere queste differenze ti aiuterà a capire chi preferisce uno di questi strumenti rispetto all'altro.

  • GitLab CI/CD può controllare completamente i repository Git. Stiamo parlando della gestione dei rami del repository e di alcune altre funzionalità. Ma Jenkins, sebbene possa funzionare con i repository, non offre lo stesso livello di controllo su di essi di GitLab CI / CD.
  • Jenkins è un progetto open source gratuito. Chi lo sceglie lo schiera in autonomia. E GitLab CI / CD è incluso nella piattaforma GitLab, questa è una soluzione chiavi in ​​​​mano.
  • GitLab CI/CD supporta strumenti avanzati di gestione delle attività che funzionano a livello di progetto. Questo lato di Jenkins è meno sviluppato.

Jenkins e GitLab CI/CD: punti di forza e di debolezza

Ora hai qualche idea su Jenkins e GitLab CI/CD. Ora, per farti conoscere ancora meglio questi strumenti, diamo un'occhiata ai loro punti di forza e di debolezza. Supponiamo che tu abbia già deciso di quale strumento hai bisogno. Si spera che questa sezione ti permetta di metterti alla prova.

▍ Punti di forza di Jenkins

  • Un gran numero di plugin.
  • Pieno controllo sull'installazione degli strumenti.
  • Semplice debugging dei corridori.
  • Facile configurazione del nodo.
  • Facile distribuzione del codice.
  • Ottimo sistema di gestione delle credenziali.
  • Flessibilità e versatilità.
  • Supporto per vari linguaggi di programmazione.
  • Il sistema è comprensibile a livello intuitivo.

▍ Debolezze di Jenkins

  • I plugin possono essere difficili da usare.
  • Quando si utilizza Jenkins in piccoli progetti, il tempo necessario per configurarlo da soli può essere irragionevolmente lungo.
  • Mancanza di informazioni analitiche generali sulle catene CI/CD.

▍Punti di forza di GitLab CI/CD

  • Buona integrazione con Docker.
  • Ridimensionamento semplice dei corridori.
  • Esecuzione parallela di attività che fanno parte delle fasi della pipeline CI/CD.
  • Utilizzo del modello grafico aciclico diretto durante l'impostazione delle relazioni tra attività.
  • Elevato livello di scalabilità grazie alla possibilità di esecuzione parallela dei corridori.
  • Facilità di aggiunta di attività.
  • Semplice risoluzione dei conflitti.
  • Sistema di sicurezza affidabile.

▍ Punti deboli di GitLab CI/CD

  • Per ogni attività è necessario descrivere e caricare/scaricare artefatti.
  • Non è possibile testare i risultati dell'unione dei rami prima che vengano effettivamente uniti.
  • Quando si descrivono le fasi della pipeline CI / CD, non è ancora possibile individuarne le singole fasi.

Risultati di

Sia Jenkins che GitLab CI/CD hanno punti di forza e di debolezza. La risposta alla domanda su cosa scegliere dipende dalle esigenze e dalle caratteristiche di un particolare progetto. Ciascuno degli strumenti CI/CD recensiti oggi ha determinate caratteristiche, sebbene questi strumenti siano stati creati per risolvere lo stesso problema. Allo stesso tempo, Jenkins è uno strumento autonomo e GitLab CI/CD fa parte di una piattaforma progettata per collaborare al codice.

Quando si sceglie un sistema CI / CD, oltre alle sue capacità, vale la pena tenere conto dei costi che possono essere associati ad esso e con cosa sono abituati a lavorare esattamente gli ingegneri DevOps che supportano il progetto.

Quali strumenti CI/CD utilizzi?

Battaglia di Jenkins e GitLab CI/CD

Battaglia di Jenkins e GitLab CI/CD

Fonte: habr.com

Aggiungi un commento