Il miglior strumento CI nel 2022?

Discutiamo di questi due popolari strumenti di integrazione continua e delle loro differenze.

Il metodo del ciclo di vita dello sviluppo del software è cambiato drasticamente nell’ultimo decennio.

In precedenza, il modello a cascata era la via da seguire, poi è arrivata la metodologia agile dove lo sviluppo avveniva in modo iterativo e ora con DevOps, sia lo sviluppo che le operazioni avvengono in modo iterativo e continuo fino a quando l’applicazione completa non viene sviluppata e distribuita.

Il termine CI/CD, che sta per integrazione continua e consegna continua, è diventato molto popolare. È una pratica DevOps che aiuta a sviluppare e distribuire l’applicazione molto più velocemente e in modo affidabile. È una metodologia che automatizza tutti i passaggi a partire dai requisiti aziendali fino all’implementazione in produzione utilizzando uno strumento CICD. È molto meglio e più sicuro che fare tutto manualmente.

Ora ci sono molti strumenti disponibili per CI/CD, quindi può essere fonte di confusione scegliere gli strumenti giusti.

Perché Jenkins?

Jenkins è lo strumento di integrazione continua open source più popolare. È lo standard di fatto per la soluzione di integrazione continua.

Puoi installare Jenkins sui principali sistemi operativi come Windows o Linux, poiché funziona su Java. È stato originariamente creato come strumento di automazione della compilazione per applicazioni Java. Da allora, si è evoluto molto e ha più di 1400 plugin per integrarsi facilmente con altre piattaforme e strumenti.

Jenkins è lo strumento principale per l’integrazione continua e la distribuzione continua nel processo di sviluppo del software. È semplice da installare e fornisce una dashboard per la gestione dei progetti, a cui è possibile accedere facilmente tramite un browser.

Gli sviluppatori utilizzano Jenkins per creare, integrare, testare e distribuire automaticamente il proprio codice. In primo luogo, gli sviluppatori archiviano il loro codice, quindi Jenkins preleva il codice sorgente modificato, avvia una build ed esegue un test, se necessario. Al termine della build, riceverai l’output nella dashboard di Jenkins e una notifica può essere inviata allo sviluppatore se è impostata.

Perché TeamCity?

TeamCity è un server CI/CD commerciale anch’esso basato su java. È uno strumento di gestione e automazione delle build creato da JetBrains.

Lo slogan di TeamCity è “Powerful Continuous Integration out of the box”, e questo strumento lo giustifica. Offre quasi tutte le funzionalità di Jenkins con poche aggiuntive. TeamCity può integrarsi con Docker per la creazione automatica di contenitori tramite docker-compose. Ha il supporto dell’integrazione per lo strumento Jira per tenere traccia dei problemi facilmente.

TeamCity supporta il framework .NET e puoi facilmente integrare TeamCity con diversi IDE come Eclipse, Visual Studio, ecc. Con l’integrazione per creare un repository di artefatti, TeamCity può archiviare gli artefatti sul filesystem del server TeamCity o su uno storage esterno.

Con la versione gratuita TeamCity della licenza server Professional, puoi creare 100 build e 3 build agent a costo zero.

Jenkins contro TeamCity

Open Source vs commerciale

La differenza fondamentale è che Jenkins è uno strumento di integrazione continua open source e TeamCity è uno strumento commerciale. Il progetto Jenkins è rilasciato con licenza MIT e supportato da sviluppatori in tutto il mondo. TeamCity è sviluppato e mantenuto dalla sua società madre JetBrains.

Interfaccia

L’interfaccia di TeamCity è adorabile e l’interfaccia aiuta ad attirare molti principianti che iniziano con l’integrazione continua e cercano uno strumento CI. Nell’interfaccia di TeamCity, puoi taggare, commentare e aggiungere build per organizzarli in un modo migliore.

L’interfaccia di Jenkins è vecchia scuola. Non è molto interessante da guardare e ha un enorme margine di miglioramento dal punto di vista dell’interfaccia utente.

Funzionalità esclusive

Sebbene Jenkins non abbia molte funzionalità integrate, il suo enorme ecosistema di plugin offre tonnellate di funzionalità che altri strumenti CI non possono offrire. Con tali funzionalità del plug-in, Jenkins viene utilizzato per creare build e analizzare il codice, il che aiuta a migliorare la qualità del codice.

D’altra parte, a parte alcune normali funzionalità dello strumento CI, TeamCity viene fornito con molteplici funzionalità pronte all’uso. Supporta più piattaforme come Java, Ruby, .NET, ecc. Puoi anche creare immagini docker tramite TeamCity. Con il supporto di Bugzilla e Jira, puoi eseguire facilmente il monitoraggio dei problemi. Inoltre, le modifiche alle build e la cronologia degli errori vengono archiviate per conservare le informazioni passate sulle statistiche, eseguire build precedenti e rapporti sulla cronologia dei test.

Installazione

Per installare Jenkins sul tuo sistema, devi avere Java presente su di esso. L’installazione di Jenkins è semplice quando entrambi sono già presenti sul sistema. Al termine dell’installazione, puoi iniziare a lavorare su Jenkins sulla sua interfaccia web.

Anche l’installazione di TeamCity è molto semplice. Devi scaricare TeamCity Server e andare alla documentazione e seguire le istruzioni menzionate.

Integrazioni

Non credo che nessuno strumento CI sia nemmeno vicino alla concorrenza di Jenkins quando parliamo di capacità di integrazione. La popolarità di Jenkins è presente sul mercato perché fornisce l’integrazione con centinaia di plugin gratuiti.

Rispetto a Jenkins, TeamCity può integrarsi con plugin molto minori. Ma offre poche integrazioni esclusive, che si aggiungono alle sue “caratteristiche pronte all’uso”. Supporta il framework .NET e si integra con Visual Studio Team Services, fornendo integrazione cloud con provider cloud come AWS, Azure, GCP, VMware.

Sicurezza

La parte buona del fatto che TeamCity sia commerciale è che JetBrains lo supporta in modo che venga fissato come priorità per qualsiasi rilevamento di sicurezza. TeamCity fornisce l’integrazione con il Plugin di sicurezza Snyk, che può eseguire la scansione delle vulnerabilità nella pipeline di compilazione. Ti aiuta a identificare e correggere tutti i rischi e le minacce presenti nelle tue build.

Considerando che Jenkins è open source, la mitigazione del rischio potrebbe subire ritardi poiché tutto dipende dalla comunità degli sviluppatori.

Comunità

La comunità di Jenkins è vasta rispetto a TeamCity. Poiché Jenkins è open source, qualsiasi sviluppatore può contribuire a questo progetto. Ogni giorno, nuovi sviluppatori continuano ad aggiungere il loro contributo a questo progetto per aggiungere nuove funzionalità e renderlo uno strumento migliore.

D’altra parte, TeamCity è uno strumento commerciale e gestito dal team di JetBrains. Ha una comunità di supporto professionale per far crescere questo strumento.

Prezzo

Jenkins è gratuito, in quanto open source, ed è per questo che è una scelta preferibile per molte organizzazioni. Le organizzazioni risparmiano una buona somma non spendendo nulla per uno strumento CI come Jenkins.

TeamCity non è gratuito. Viene fornito con due licenze, che sono una licenza server Professional e una licenza server Enterprise. In una licenza server professionale, puoi utilizzare 100 configurazioni di build e 3 agenti di build gratuitamente e, successivamente, 299 $ per 1 agente di build aggiuntivo e 10 configurazioni di build. La licenza del server aziendale di TeamCity inizia con 3 agenti, che fornisce configurazioni di build illimitate a partire da 1.999 $.

Tavola di comparazione

Jenkins
TeamCity
Scritto in
Giava
Giava
Sviluppatore
CloudBees, Kohsuke Kawaguchi, software gratuito e open source
JetBrains
Licenza
Licenza MIT
Software commerciale proprietario
Caratteristiche

  • Open-source
  • Ricco set di plugin
  • Installazione facile
  • Supporto per la creazione di pipeline
  • Plugin del flusso di lavoro
  • Tonnellate di integrazioni
  • Ospitato internamente
  • Crea, distribuisci o avvia qualsiasi cosa asincrona
  • Editore HTML
  • Acceleratore costruisce
  • Integrazioni chiave
  • Integrazione cloud
  • Costruisci la storia
  • Costruisci infrastrutture
  • Monitoraggio della qualità del codice
  • Interoperabilità VCS
  • Sistema in manutenzione
  • Gestione utenti
  • Estensibilità e personalizzazione
  • Commit pretestato

Facilità d’uso


Interfaccia utente
Interfaccia molto semplice
Ha un’interfaccia attraente e bella
Comunità
Dal momento che è open source, la community è più grande
Più piccolo rispetto a Jenkins
Prezzo
Gratuito
La licenza Professional Server costa 299 $ per agente di compilazione dopo 3 agenti di compilazione gratuiti

invece

I costi della licenza di Enterprise Server partono da 1999 $

Integrazioni
Oltre 1400 integrazioni
Oltre 300 integrazioni
Sicurezza
Meno sicuro
Più sicuro
API
Supporta JSON, Python, API RESTful: XML
Supporta l’API RESTful utilizzando i messaggi di servizio e crea plug-in utilizzando l’API aperta
Supporto del linguaggio di programmazione
Java, PHP, C, C++, Fortran, Python e molti altri linguaggi di scripting
Python, C++, Java, .NET, Ruby, PHP, Node.js e altro
Supporto per container
Utilizzo del plug-in Docker per Jenkins
Supporto Docker di prima classe pronto all’uso
Ciclo di rilascio
Più frequente
Meno frequente
Segnalazione
Fornisce report dettagliati per build e test
Fornisce report con una migliore interfaccia utente web

Conclusione

Ora conosci le differenze tra i due strumenti di integrazione continua più popolari: Jenkins e TeamCity.

Quando scegli uno strumento CI per la tua organizzazione, devi controllare alcuni parametri come le opzioni di hosting, le integrazioni disponibili, la libreria di codici riutilizzabile, il supporto del contenitore e quanto sia facile usare e imparare lo strumento. Lo strumento di integrazione continua che supera questi parametri sarebbe un’opzione eccellente.

Se hai ancora dei dubbi, vai avanti e prova con Jenkins e la versione gratuita di TeamCity. Dopo aver creato alcune build su queste piattaforme, ti saresti in una situazione più comoda per decidere quale strumento è migliore per l’integrazione continua per i tuoi progetti.