{"id":96161,"date":"2020-10-08T19:42:48","date_gmt":"2020-10-08T17:42:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd"},"modified":"2020-10-08T19:42:48","modified_gmt":"2020-10-08T17:42:48","slug":"bitva-jenkins-i-gitlab-ci-cd","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd","title":{"rendered":"La battaglia tra Jenkins e GitLab CI\/CD","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Negli ultimi dieci anni sono stati compiuti notevoli progressi nello sviluppo di strumenti di integrazione continua (Continuous Integration, CI) e distribuzione continua (Continuous Delivery, CD). L'evoluzione delle tecnologie di integrazione tra sviluppo e operazioni software (Development Operations, DevOps) ha portato a una rapida crescita della domanda di strumenti CI\/CD. Le soluzioni esistenti vengono costantemente migliorate per stare al passo con i tempi, vengono rilasciate nuove versioni e nel campo del controllo qualit\u00e0 del software (Quality Assurance, QA) appaiono continuamente nuovi prodotti. Con una cos\u00ec vasta gamma di opzioni, la scelta degli strumenti giusti pu\u00f2 risultare una sfida complessa.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/522334\/\"><img decoding=\"async\" alt=\"La battaglia tra Jenkins e GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/6cf6dfa92ebec7d6e44776e9c9bfbb6d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Tra tutti gli strumenti CI\/CD esistenti, ci sono due progetti a cui vale sicuramente la pena prestare attenzione per chi cerca qualcosa in questo campo. Si tratta di Jenkins e dello strumento GitLab CI\/CD, che \u00e8 parte della piattaforma GitLab. Jenkins ha pi\u00f9 di <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jenkinsci\/jenkins\">16000<\/a><\/noindex> stelle su GitHub. Il repository di GitLab su gitlab.com ha accumulato poco pi\u00f9 di <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab\">2000<\/a><\/noindex> stelle. Se confrontiamo la popolarit\u00e0 dei repository, risulta che Jenkins ha ottenuto 8 volte pi\u00f9 stelle della piattaforma che include GitLab CI\/CD. Tuttavia, nella scelta di uno strumento CI\/CD, questo non \u00e8 certo l'unico indicatore da considerare. Ci sono molti altri fattori, il che spiega perch\u00e9 in molti confronti Jenkins e GitLab CI\/CD risultano molto vicini l'uno all'altro.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPrendiamo, ad esempio, i dati dalla piattaforma G2, che raccoglie recensioni di vari prodotti e valutazioni fornite dagli utenti. Qui, la valutazione media <noindex><a rel=\"nofollow\" href=\"https:\/\/www.g2.com\/products\/jenkins\/reviews\">Jenkins<\/a><\/noindex>, calcolata su 288 recensioni, \u00e8 di 4,3 stelle. Per quanto riguarda <noindex><a rel=\"nofollow\" href=\"https:\/\/www.g2.com\/products\/gitlab\/reviews\">GitLab<\/a><\/noindex> , ci sono 270 recensioni, con una valutazione media di 4,4 stelle per questo strumento. Non commetteremmo un errore nel dire che Jenkins e GitLab CI\/CD competono tra loro su un piano di parit\u00e0. \u00c8 interessante notare che il progetto Jenkins \u00e8 nato nel 2011 ed \u00e8 diventato da allora lo strumento preferito dai tester. Nel frattempo, il progetto GitLab CI\/CD, lanciato nel 2014, ha conquistato le sue posizioni, molto elevate, grazie alle avanzate funzionalit\u00e0 offerte da questa piattaforma.<\/p>\n<p>Parlando della popolarit\u00e0 di Jenkins rispetto ad altre piattaforme simili, vale la pena notare che, dopo aver pubblicato un articolo in cui confrontavamo le piattaforme Travis CI e Jenkins, abbiamo condotto un sondaggio. Hanno partecipato 85 utenti. \u00c8 stato chiesto ai rispondenti di scegliere lo strumento CI\/CD che preferiscono di pi\u00f9. Il 79% ha scelto Jenkins, il 5% ha scelto Travis CI e il 16% ha indicato di preferire altri strumenti.<\/p>\n<p><img decoding=\"async\" alt=\"La battaglia tra Jenkins e GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/b66b5d3d5f27f3310c8bf0fc68f4c636.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Risultati del sondaggio<\/i><\/p>\n<p>Tra gli altri strumenti CI\/CD, GitLab CI\/CD \u00e8 stato il pi\u00f9 citato.<\/p>\n<p>Se ti occupi seriamente di DevOps, \u00e8 fondamentale selezionare gli strumenti appropriati, tenendo conto delle caratteristiche del progetto, del suo budget e di altri requisiti. Per aiutarti a fare la scelta giusta, ci proponiamo di analizzare Jenkins e GitLab CI\/CD. Questo, speriamo, ti aiuter\u00e0 a prendere la decisione corretta.<\/p>\n<h2>Introduzione a Jenkins<\/h2>\n<p>\n<img decoding=\"async\" alt=\"La battaglia tra Jenkins e GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/f7df92d1fb3f81f785fc59da82a943b7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.jenkins.io\/\">Jenkins<\/a><\/noindex> \u00e8 un noto e flessibile strumento CI\/CD progettato per automatizzare numerosi compiti legati ai progetti software. Jenkins \u00e8 completamente scritto in Java ed \u00e8 rilasciato con licenza MIT. Dispone di un potente set di funzionalit\u00e0, mirate all'automazione di compiti legati alla build, ai test, al deployment, all'integrazione e al rilascio del software. Questo strumento pu\u00f2 essere utilizzato su diversi sistemi operativi, tra cui macOS, Windows e diverse distribuzioni Linux, come OpenSUSE, Ubuntu e Red Hat. Esistono pacchetti di installazione di Jenkins progettati per i vari sistemi operativi, ed \u00e8 possibile installare questo strumento in Docker e su qualsiasi sistema che abbia JRE (Java Runtime Environment).<\/p>\n<p>Gli sviluppatori di Jenkins hanno creato un altro progetto, Jenkins X, progettato per funzionare nell'ambiente Kubernetes. Jenkins X integra Helm, il server Jenkins CI\/CD, Kubernetes e altri strumenti destinati alla creazione di pipeline CI\/CD che rispettano le migliori pratiche di DevOps. Ad esempio, si utilizza GitOps.<\/p>\n<p>Tra i punti a favore di Jenkins, si pu\u00f2 aggiungere il fatto che i suoi script sono ben strutturati, chiari e facili da leggere. Il team di Jenkins ha creato circa 1000 plugin, progettati per facilitare l'interazione di Jenkins con varie tecnologie. Negli script \u00e8 possibile utilizzare sistemi di autenticazione, il che, ad esempio, consente di connettersi a vari sistemi privati.<\/p>\n<p>Durante il funzionamento della pipeline Jenkins, \u00e8 possibile osservare cosa accade in ciascun passaggio, se le diverse fasi del lavoro si sono concluse con successo o meno. \u00c8 possibile monitorare tutto ci\u00f2, senza utilizzare un'interfaccia grafica, ma sfruttando le capacit\u00e0 del terminale.<\/p>\n<h2>Caratteristiche di Jenkins<\/h2>\n<p>\nTra le caratteristiche pi\u00f9 conosciute di Jenkins si possono notare la facilit\u00e0 di configurazione, l'alto livello di automazione di varie operazioni e l'ottima documentazione. Quando si parla di soluzioni per problemi DevOps, Jenkins \u00e8 considerato uno strumento molto affidabile, utilizzato per il quale, di solito, non ha senso monitorare attentamente l'intero processo di gestione del progetto. Con altri strumenti CI\/CD non \u00e8 cos\u00ec. Parliamo ora di alcune delle funzionalit\u00e0 pi\u00f9 importanti di Jenkins.<\/p>\n<h3>\u258d1. Gratuito, open source, supporta molte piattaforme<\/h3>\n<p>\nJenkins pu\u00f2 funzionare su piattaforme macOS, Windows e Linux. Pu\u00f2 operare anche in un ambiente Docker, il che consente l'esecuzione uniforme e rapida di compiti automatizzati. Questo strumento, inoltre, pu\u00f2 essere eseguito come servlet in contenitori che supportano Java, come Apache Tomcat e GlassFish. L'installazione di Jenkins \u00e8 ben documentata <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jenkins.io\/doc\/book\/installing\/\">.<\/a><\/noindex>.<\/p>\n<h3>\u258d2. Ecosistema di plugin avanzato<\/h3>\n<p>\nL'ecosistema di plugin di Jenkins risulta molto pi\u00f9 sviluppato rispetto a quelli di altri strumenti CI\/CD. Attualmente ci sono oltre 1500 plugin per Jenkins. Questi plugin sono progettati per affrontare una vasta gamma di esigenze, e possono automatizzare progetti di ogni tipo. La ricchezza nella scelta di moduli gratuiti significa che chi utilizza Jenkins non ha un'urgenza di acquistare costosi plugin a pagamento. C'\u00e8 la possibilit\u00e0 di <noindex><a rel=\"nofollow\" href=\"https:\/\/www.lambdatest.com\/support\/docs\/jenkins-with-lambdatest\/\">integrare<\/a><\/noindex> Jenkins con molteplici strumenti DevOps.<\/p>\n<h3>\u258d3. Installazione e configurazione semplici<\/h3>\n<p>\nJenkins \u00e8 abbastanza semplice da installare e configurare. Inoltre, anche il processo di aggiornamento del sistema \u00e8 molto comodo. \u00c8 opportuno menzionare nuovamente la qualit\u00e0 della documentazione, poich\u00e9 in essa \u00e8 possibile trovare risposte a una vasta gamma di domande relative all'installazione e configurazione di Jenkins.<\/p>\n<h3>\u258d4. Comunit\u00e0 accogliente<\/h3>\n<p>\nCome gi\u00e0 detto, Jenkins \u00e8 un progetto open source la cui ecosistema include un'enorme quantit\u00e0 di plugin. Attorno a Jenkins si \u00e8 sviluppata una grande comunit\u00e0 di utenti e sviluppatori che contribuiscono allo sviluppo del progetto. La comunit\u00e0 \u00e8 uno dei fattori che favorisce la crescita di Jenkins.<\/p>\n<h3>\u258d5. Presenza di un REST API<\/h3>\n<p>\nDurante il lavoro con Jenkins \u00e8 possibile utilizzare il REST API, il che amplia le possibilit\u00e0 del sistema. L'API per l'accesso remoto al sistema \u00e8 disponibile in tre formati: XML, JSON con supporto JSONP, Python. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.jenkins.io\/doc\/book\/using\/remote-access-api\/\">Ecco<\/a><\/noindex> pagina di documentazione che svela i dettagli su come lavorare con il REST API di Jenkins.<\/p>\n<h3>\u258d6. Supporto per l'esecuzione parallela delle attivit\u00e0<\/h3>\n<p>\nJenkins supporta la parallelizzazione delle attivit\u00e0 DevOps. Pu\u00f2 essere facilmente integrato con gli strumenti appropriati e ricevere notifiche sui risultati delle esecuzioni. L'esecuzione dei test del codice pu\u00f2 essere accelerata organizzando la build parallela del progetto utilizzando diverse macchine virtuali.<\/p>\n<h3>\u258d7. Supporto per il lavoro in ambienti distribuiti<\/h3>\n<p>\nJenkins consente di organizzare build distribuite utilizzando pi\u00f9 computer. Questa possibilit\u00e0 \u00e8 applicabile in grandi progetti e utilizza uno schema di lavoro in cui esiste un server principale di Jenkins e diverse macchine subordinate. Le macchine subordinate possono essere utilizzate anche in situazioni in cui \u00e8 necessario organizzare test del progetto in ambienti diversi. Queste caratteristiche distinguono favorevolmente Jenkins da altri progetti simili.<\/p>\n<h2>Introduzione a GitLab<\/h2>\n<p>\n<img decoding=\"async\" alt=\"La battaglia tra Jenkins e GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/aa89f462b8378c8efefef142ff0ca6be.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/\">GitLab CI\/CD<\/a><\/noindex> pu\u00f2 essere considerato uno degli strumenti pi\u00f9 recenti e amati dagli ingegneri DevOps. Questo strumento open source gratuito \u00e8 integrato nel sistema di gestione delle versioni GitLab. La piattaforma GitLab ha una versione community, supporta la gestione dei repository, strumenti per il tracciamento dei problemi, organizzazione delle revisioni del codice, meccanismi orientati alla creazione di documentazione. Le aziende possono installare GitLab localmente, collegando questo sistema a Active Directory e ai server LDAP per organizzare autenticazioni e autorizzazioni sicure degli utenti.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/3quCZ7ZMg0Y\">Ecco<\/a><\/noindex> video tutorial che ti aiuter\u00e0 a scoprire come creare pipeline CI\/CD utilizzando le capacit\u00e0 di GitLab CI\/CD.<\/p>\n<p>Inizialmente, GitLab CI\/CD \u00e8 stato rilasciato come progetto autonomo, ma nel 2015 questo insieme di strumenti \u00e8 stato integrato in GitLab 8.0. Un server GitLab CI\/CD separato pu\u00f2 supportare il lavoro di oltre 25.000 utenti. Su server simili si possono creare sistemi con alta disponibilit\u00e0.<\/p>\n<p>GitLab CI\/CD e il progetto principale GitLab sono scritti in Ruby e Go. Sono rilasciati con licenza MIT. GitLab CI\/CD, oltre alle normali funzionalit\u00e0 degli strumenti CI\/CD, supporta anche funzionalit\u00e0 aggiuntive, ad esempio, per la pianificazione delle attivit\u00e0.<\/p>\n<p>Integrarre GitLab CI\/CD in un progetto \u00e8 molto semplice. Quando si usa GitLab CI\/CD, il processo di elaborazione del codice del progetto \u00e8 suddiviso in fasi, ognuna delle quali pu\u00f2 consistere in pi\u00f9 attivit\u00e0 eseguite in un determinato ordine. Le attivit\u00e0 sono altamente configurabili.<\/p>\n<p>Le attivit\u00e0 possono essere eseguite in parallelo. Dopo aver configurato la sequenza delle fasi e delle attivit\u00e0, il pipeline CI\/CD \u00e8 pronto per l'uso. \u00c8 possibile monitorare il progresso seguendo lo stato delle attivit\u00e0. Di conseguenza, utilizzare GitLab CI\/CD \u00e8 molto conveniente, probabilmente pi\u00f9 conveniente rispetto ad altri strumenti simili.<\/p>\n<h2>Caratteristiche di GitLab CI\/CD e GitLab<\/h2>\n<p>\nGitLab CI\/CD \u00e8 uno degli strumenti DevOps pi\u00f9 popolari. Il progetto si distingue per la documentazione di qualit\u00e0 e le sue funzionalit\u00e0 sono facili e comodamente utilizzabili. Se non sei ancora familiare con GitLab CI\/CD, la seguente lista delle funzionalit\u00e0 di questo strumento ti dar\u00e0 una visione generale di cosa aspettarti. Va notato che molte di queste funzionalit\u00e0 sono correlate alla piattaforma GitLab stessa, in cui \u00e8 integrato GitLab CI\/CD.<\/p>\n<h3>\u258d1. Popolarit\u00e0<\/h3>\n<p>\nGitLab CI\/CD \u00e8 uno strumento relativamente nuovo, che ha trovato ampia applicazione. GitLab CI\/CD \u00e8 gradualmente diventato uno strumento CI\/CD estremamente popolare, utilizzato per il test automatizzato e il deployment del software. \u00c8 facile da configurare. Inoltre, \u00e8 uno strumento CI\/CD gratuito, integrato nella piattaforma GitLab.<\/p>\n<h3>\u258d2. Supporto per GitLab Pages e Jekyll<\/h3>\n<p>\nJekyll \u00e8 un generatore di siti statici che pu\u00f2 essere utilizzato all'interno del sistema GitLab Pages per creare siti basati su repository GitLab. Il sistema prende i materiali sorgente e genera un sito statico finale basato su di essi. \u00c8 possibile gestire l'aspetto e le funzionalit\u00e0 di tali siti modificando il file <code>_config.yml<\/code>, utilizzato da Jekyll.<\/p>\n<h3>\u258d3. Possibilit\u00e0 di pianificazione dei progetti<\/h3>\n<p>\nGrazie alla pianificazione delle fasi dei progetti, aumenta la facilit\u00e0 di monitoraggio dei problemi e dei loro gruppi. Questo consente di gestire l'organizzazione del lavoro sui progetti, pianificando la loro realizzazione in una data specifica.<\/p>\n<h3>\u258d4. Scalabilit\u00e0 automatica dei runner CI<\/h3>\n<p>\nGrazie alla scalabilit\u00e0 automatica dei runner, responsabili dell'esecuzione di attivit\u00e0 specifiche, \u00e8 possibile risparmiare significativamente sui costi di affitto delle risorse server. Questo \u00e8 particolarmente importante, specialmente quando si tratta di ambienti in cui il testing dei progetti viene eseguito in parallelo. Inoltre, \u00e8 cruciale per progetti di grandi dimensioni composti da pi\u00f9 repository.<\/p>\n<h3>\u258d5. Strumenti per il monitoraggio dei problemi<\/h3>\n<p>\nLe potenti capacit\u00e0 di monitoraggio dei problemi di GitLab hanno portato molteplici progetti open source ad utilizzare questa piattaforma. GitLab CI\/CD consente di eseguire test paralleli su diverse branche di codice. I risultati dei test sono facili da analizzare nell'interfaccia del sistema. Questo distingue favorevolmente GitLab CI\/CD da Jenkins.<\/p>\n<h3>\u258d6. Limitazione dell'accesso ai repository<\/h3>\n<p>\nLa piattaforma GitLab supporta la limitazione dell'accesso ai repository. Ad esempio, a coloro che lavorano insieme su un progetto in un certo repository possono essere assegnati diritti corrispondenti ai loro ruoli. Questo \u00e8 particolarmente rilevante per i progetti aziendali.<\/p>\n<h3>\u258d7. Attiva supporto della comunit\u00e0<\/h3>\n<p>\nAttorno a GitLab si \u00e8 formata una comunit\u00e0 attiva che promuove lo sviluppo di questa piattaforma e dei suoi strumenti, in particolare GitLab CI\/CD. L'integrazione profonda tra GitLab CI\/CD e GitLab, tra l'altro, semplifica la ricerca di risposte alle domande che sorgono durante l'utilizzo di GitLab CI\/CD.<\/p>\n<h3>\u258d8. Supporto per diversi sistemi di controllo di versione<\/h3>\n<p>\nGitLab CI\/CD \u00e8 un sistema capace di lavorare non solo con il codice ospitato nei repository GitLab. Ad esempio, il codice pu\u00f2 essere archiviato in un repository GitHub, mentre il pipeline CI\/CD pu\u00f2 essere organizzato su GitLab utilizzando GitLab CI\/CD.<\/p>\n<h2>Confronto tra Jenkins e GitLab CI\/CD<\/h2>\n<p>\nJenkins e GitLab CI\/CD sono strumenti di alta qualit\u00e0, ognuno dei quali \u00e8 in grado di garantire un normale funzionamento di un pipeline CI\/CD. Ma se li si confronta, si scopre che, sebbene simili sotto molti aspetti, presentano anche alcune differenze.<\/p>\n<p><strong>Caratteristiche<\/strong><br \/>\n<strong>Jenkins<\/strong><br \/>\n<strong>GitLab CI\/CD<\/strong><\/p>\n<p>Codice aperto o chiuso<br \/>\nCodice aperto<br \/>\nCodice aperto<\/p>\n<p>Installazione<br \/>\nRichiesto.<br \/>\nNon richiesto, poich\u00e9 \u00e8 una funzionalit\u00e0 integrata della piattaforma GitLab.<\/p>\n<p>Caratteristiche uniche<br \/>\nSupporto per plugin.<br \/>\nProfonda integrazione nel sistema di gestione delle versioni.<\/p>\n<p>Supporto<br \/>\nAssente.<br \/>\nDisponibile.<\/p>\n<p>Installazione e configurazione<br \/>\nNon presentano difficolt\u00e0<br \/>\nNon presentano difficolt\u00e0<\/p>\n<p>Distribuzione autonoma del sistema<br \/>\nQuesto \u00e8 l'unico modo per utilizzare il sistema.<br \/>\nSupportato.<\/p>\n<p>Creazione di pipeline CI\/CD<br \/>\nSupportato, utilizzando Jenkins Pipeline.<br \/>\nSupportato.<\/p>\n<p>Monitoraggio delle prestazioni delle applicazioni<br \/>\nAssente.<br \/>\nDisponibile.<\/p>\n<p>Ecosistema<br \/>\nEsistono oltre 1000 plugin.<br \/>\nIl sistema si sviluppa all'interno di GitLab.<\/p>\n<p>API<br \/>\nSupporta un sistema API avanzato.<br \/>\nOffre API per un'integrazione pi\u00f9 profonda nei progetti.<\/p>\n<p>Supporto per JavaScript<br \/>\nDisponibile.<br \/>\nDisponibile.<\/p>\n<p>Integrazione con altri strumenti<br \/>\n\u00c8 supportata l'integrazione con altri strumenti e piattaforme (Slack, GitHub).<br \/>\nNumerosi strumenti per l'integrazione con sistemi di terze parti, in particolare con GitHub e Kubernetes.<\/p>\n<p>Controllo della qualit\u00e0 del codice<br \/>\nSupportato - tramite il plugin SonarQube e altri plugin.<br \/>\nSupportato.<\/p>\n<p><\/p>\n<h2>Differenze tra Jenkins e GitLab CI\/CD<\/h2>\n<p>\nDopo aver descritto e confrontato Jenkins e GitLab CI\/CD, concentriamoci sulle differenze tra questi strumenti DevOps. Conoscere queste differenze permetter\u00e0 di capire chi preferisce uno di questi strumenti rispetto all'altro.<\/p>\n<ul>\n<li>GitLab CI\/CD pu\u00f2 controllare completamente i repository Git. Si tratta della gestione dei rami dei repository e di alcune altre funzionalit\u00e0. Jenkins, pur essendo in grado di lavorare con i repository, non offre lo stesso livello di controllo su di essi come GitLab CI\/CD.<\/li>\n<li>Jenkins \u00e8 un progetto open source gratuito. Chi lo sceglie lo distribuisce autonomamente. GitLab CI\/CD \u00e8 incluso nella piattaforma GitLab, ed \u00e8 una soluzione pronta all'uso.<\/li>\n<li>GitLab CI\/CD supporta strumenti avanzati di gestione delle attivit\u00e0, che operano a livello di progetto. Questo aspetto di Jenkins \u00e8 meno sviluppato.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Jenkins e GitLab CI\/CD: punti di forza e debolezza<\/h2>\n<p>\nOra hai un'idea di Jenkins e GitLab CI\/CD. Per familiarizzare ulteriormente con questi strumenti, esaminiamo i loro punti di forza e debolezza. Riteniamo che tu abbia gi\u00e0 deciso quale strumento ti serve. Speriamo che questa sezione ti permetta di mettere alla prova le tue conoscenze.<\/p>\n<h3>\u258dPunti di forza di Jenkins<\/h3>\n<p><\/p>\n<ul>\n<li>Un gran numero di plugin.<\/li>\n<li>Controllo completo sull'installazione dello strumento.<\/li>\n<li>Debugging semplice dei runner.<\/li>\n<li>Impostazione semplice dei nodi.<\/li>\n<li>Distribuzione del codice semplice.<\/li>\n<li>Un ottimo sistema di gestione dei dati.<\/li>\n<li>Flessibilit\u00e0 e versatilit\u00e0.<\/li>\n<li>Supporto per vari linguaggi di programmazione.<\/li>\n<li>Il sistema \u00e8 intuitivamente comprensibile.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u258dDebolezze di Jenkins<\/h3>\n<p><\/p>\n<ul>\n<li>Possono sorgere complicazioni nell'uso dei plugin.<\/li>\n<li>Nell'uso di Jenkins in piccoli progetti, il tempo necessario per la configurazione autonoma pu\u00f2 risultare eccessivo.<\/li>\n<li>Mancanza di informazioni analitiche generali sulle catene CI\/CD.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u258dPunti di forza di GitLab CI\/CD<\/h3>\n<p><\/p>\n<ul>\n<li>Ottima integrazione con Docker.<\/li>\n<li>Facile scalabilit\u00e0 dei runner.<\/li>\n<li>Esecuzione parallela delle attivit\u00e0 che fanno parte delle fasi del pipeline CI\/CD.<\/li>\n<li>Utilizzo di un modello di grafo aciclico orientato per la configurazione delle relazioni tra i compiti.<\/li>\n<li>Alto livello di scalabilit\u00e0 grazie alla possibilit\u00e0 di eseguire i runner in parallelo.<\/li>\n<li>Facilit\u00e0 di aggiunta di attivit\u00e0.<\/li>\n<li>Facile risoluzione dei conflitti.<\/li>\n<li>Sistema di sicurezza affidabile.<\/li>\n<\/ul>\n<p><\/p>\n<h3>\u258dDebolezze di GitLab CI\/CD<\/h3>\n<p><\/p>\n<ul>\n<li>Per ogni attivit\u00e0 \u00e8 necessario descrivere e caricare\/scaricare artefatti.<\/li>\n<li>Non \u00e8 possibile testare i risultati della fusione dei rami prima della loro effettiva fusione.<\/li>\n<li>Nella descrizione delle fasi del pipeline CI\/CD, attualmente non \u00e8 possibile evidenziare fasi separate.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Conclusioni<\/h2>\n<p>\nSia Jenkins che GitLab CI\/CD hanno punti di forza e debolezza. La scelta di cosa utilizzare dipende dalle esigenze e dalle caratteristiche specifiche del progetto. Ognuno degli strumenti CI\/CD esaminati oggi presenta specifiche peculiarit\u00e0, pur essendo stati creati per affrontare lo stesso problema. Jenkins \u00e8 uno strumento autonomo, mentre GitLab CI\/CD \u00e8 parte di una piattaforma destinata alla collaborazione sul codice.<\/p>\n<p>Quando si sceglie un sistema CI\/CD, \u00e8 importante considerare, oltre alle sue funzionalit\u00e0, anche i costi relativi e ci\u00f2 con cui sono abituati a lavorare gli ingegneri DevOps che supportano il progetto.<\/p>\n<p>Quali strumenti CI\/CD utilizzate?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=perevod&amp;utm_content=bitva_jenkins_i_gitlab_ci_cd#order\"><img decoding=\"async\" alt=\"La battaglia tra Jenkins e GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/cc25a9353b43773d11028a7a2caf96f1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/ruvds.com\/ru-rub\/news\/read\/123?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=perevod&amp;utm_content=bitva_jenkins_i_gitlab_ci_cd\"><img decoding=\"async\" alt=\"La battaglia tra Jenkins e GitLab CI\/CD\" src=\"\/wp-content\/uploads\/2020\/10\/efaafe7301c2f6a2fb00a22e7a0fa41a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/522334\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD). \u0420\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u041f\u041e (Development Operations, DevOps) \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0431\u044b\u0441\u0442\u0440\u043e\u043c\u0443 \u0440\u043e\u0441\u0442\u0443 \u0441\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 CI\/CD-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0442\u0441\u044f, \u0441\u0442\u0440\u0435\u043c\u044f\u0441\u044c \u0438\u0434\u0442\u0438 \u0432 \u043d\u043e\u0433\u0443 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0438\u0445 \u043d\u043e\u0432\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0432 \u043c\u0438\u0440\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":96162,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-96161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0411\u0438\u0442\u0432\u0430 Jenkins \u0438 GitLab CI\/CD | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD).\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-08T17:42:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-08T17:42:48+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47La battaglia tra Jenkins e GitLab CI\/CD | ProHoster","description":"Negli ultimi dieci anni sono stati fatti significativi progressi nello sviluppo di strumenti di integrazione continua (Continuous Integration, CI) e consegna continua (Continuous Delivery, CD).","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0411\u0438\u0442\u0432\u0430 Jenkins \u0438 GitLab CI\/CD | ProHoster","og:description":"\u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u0441\u044f\u0442\u0438\u043b\u0435\u0442\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043f\u0435\u0445\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (Continuous Integration, CI) \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f (Continuous Delivery, CD).","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/bitva-jenkins-i-gitlab-ci-cd","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-08T17:42:48+00:00","article:modified_time":"2020-10-08T17:42:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"96161","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:51:00","updated":"2026-08-11 12:50:09","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/96161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=96161"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/96161\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/96162"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=96161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=96161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=96161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}