TeamCity vs Jenkins per l'integrazione continua [Aggiornamento 2023]
Jenkins è uno strumento di integrazione continua open source, mentre TeamCity è un'offerta proprietaria di JetBrains. TeamCity è più facile da configurare e più semplice da usare, mentre Jenkins dispone di un ricco ecosistema di plug-in e integrazioni.
Questo è TeamCity vs Jenkins in breve, ma continua a leggere per un'analisi approfondita dell'integrazione continua e del motivo per cui sempre più team di sviluppo software utilizzano questi strumenti per accelerare il ciclo di rilascio.
L'integrazione continua, il controllo del codice sorgente e la gestione delle build sono concetti formativi alla base di DevOps, guidati dalla necessità di integrare regolarmente codice nuovo e modificato nel repository principale dei sistemi di controllo delle versioni come Github o Bitbucket di Atlassian. L'integrazione continua è spesso combinata con la consegna continua per ottenere processi di compilazione più rapidi e stabili con l'automazione.
Con l'integrazione continua, i team compilano il software e lo eseguono attraverso una serie di test che imitano l'ambiente di produzione per garantire una build di successo quando viene inviato alla produzione. La logica alla base di questo è semplice, ma è arrivata solo in risposta ai problemi nel ciclo di distribuzione tradizionale. Più si può costruire e testare durante lo sviluppo, meno gli ingegneri del software devono preoccuparsi di passare alla produzione. Invece di inviare una volta al trimestre, l'integrazione continua, la consegna continua e i test rendono il go-live un'altra semplice implementazione di routine.
TeamCity e Jenkins sono strumenti di integrazione continua che consentono agli sviluppatori di integrare rami di codice durante il processo di sviluppo ed eseguire una serie di test automatizzati su di essi. Ogni membro del team riceve un feedback immediato sulla prontezza di produzione del codice, anche se ha appena modificato una singola riga. In questo modo, tutti possono passare alla produzione mentre il processo di creazione, esecuzione dei test e distribuzione viene eseguito automaticamente, in modo da potersi concentrare sulla funzionalità o sulla correzione di bug successiva.
Sebbene entrambi gli strumenti coprano gran parte dello stesso terreno, lo fanno in modi diversi. Questo perché Jenkins è un progetto open source mentre TeamCity è un'offerta proprietaria di JetBrains. Nel nostro confronto, ti mostreremo come si accumulano e discuteremo alcune delle loro somiglianze, differenze e ciò che li rende adatti ad ambienti diversi. Entrambi offrono un ottimo supporto e documentazione, ma ancora una volta ci sono differenze in profondità e qualità.
Che cos'è TeamCity?

Lo slogan di TeamCity "Powerful Continuous Integration out of the box" parla di ciò che offrono nella loro soluzione oltre a un'opzione gratuita come Jenkins: usabilità pronta all'uso con un'eccellente cronologia di costruzione, controllo del codice sorgente e strumenti della catena di costruzione. La sua interfaccia grafica elegante e le caratteristiche di facilità d'uso lo rendono più appetibile per alcuni nuovi all'integrazione continua. TeamCity viene eseguito in un ambiente Java, di solito su un server Apache Tomcat, sebbene possa essere installato su server Windows e Linux. TeamCity offre lo stesso supporto per i progetti .NET e openstack, integrandosi sia in Visual Studio che in IDE come Eclipse.
TeamCity ha convertito molti fedeli di Jenkins con la sua interfaccia e la configurazione predefinita sicura. JetBrains offre anche un'edizione gratuita, con un massimo di 20 configurazioni di build e 3 agenti di build. Per andare oltre a ciò, è necessaria la loro edizione commerciale "enterprise".
Cos'è Jenkins?

Jenkins è un server open source di Continuous Integration e uno strumento di Continuous Delivery ampiamente utilizzato e considerato da molti lo standard de facto per i server CI. Jenkins funziona anche in Java, quindi è possibile installarlo su sistemi operativi Windows, unix o Linux. Altamente estensibile e con una galleria di plug-in a portata di mano, Jenkins offre una personalizzazione granulare per operazioni CI di qualsiasi dimensione. Ma come si può capire confrontando i due screenshot, l'interfaccia di Jenkins ricorda più l'ultima generazione di applicazioni web.
Jenkins era in precedenza il server CI di Hudson. Dopo l'acquisizione di Sun da parte di Oracle, il codice sorgente è stato biforcato e Oracle continua lo sviluppo con il nome Hudson.

Se stai considerando l'IC, stai considerando Jenkins. Ma come molti progetti software open source ricchi di funzionalità, Jenkins ha la reputazione di avere un processo di installazione e configurazione difficile, che è il divario che TeamCity cerca di colmare con la sua offerta commerciale.
Aggiornamento, venerdì 13 maggio: Jenkins 2.0 ha migliorato significativamente l'interfaccia utente.
Punteggio fianco a fianco: TeamCity contro Jenkins
1. Set di capacità
Davvero, entrambi questi sono prodotti abbastanza capaci. Jenkins è all'avanguardia per la CI, come ha fatto per un po' di tempo, quindi il suo set di funzionalità è piuttosto ricco, offrendo molti modi diversi per ottenere sia la CI che la distribuzione continua.
TeamCity potrebbe non essere esattamente abbinato a Jenkins quando si tratta del set di funzionalità, ma le differenze sono piccole e TeamCity servirà altrettanto bene la maggior parte delle operazioni CI.
Buone notizie per TeamCity, che non sarebbe in grado di competere se non offrisse la maggior parte delle stesse funzionalità della sua controparte open source, ma supporta diverse piattaforme come Ruby, .NET e Java, oltre a un supporto Docker di prima classe.
| Città di squadra | Jenkins |
| 5/5 | 5/5 |
2. Facilità d'uso
L'interfaccia, la configurazione semplice e la sicurezza pronta all'uso di TeamCity gli conferiscono un vantaggio rispetto a Jenkins in termini di facilità d'uso. Il punto di forza di qualsiasi alternativa commerciale a un prodotto open source è che riduce il sovraccarico amministrativo visualizzando o semplificando in altro modo l'accesso al set di funzionalità.
Questo non vuol dire che Jenkins non sia utilizzabile, perché lo è, ed è stato utilizzato bene da molte persone, ma per coloro che possono permetterselo e non hanno il tempo o la voglia di imparare Jenkins dentro e fuori, TeamCity offre un'interfaccia più usabile per la stessa tecnologia di base.
| Città di squadra | Jenkins |
| 5/5 | 3/5 |
3. Supporto della comunità
Sia TeamCity che Jenkins hanno a disposizione il supporto della comunità dal loro sito Web, consentendo agli utenti del loro software di condividere informazioni e risolvere i problemi collettivamente, oltre a fornire una base di conoscenze da sfogliare quando si cercano risposte specifiche.
Jenkins ha un leggero vantaggio qui, se non altro perché è in circolazione da più tempo e, essendo un progetto open source, gli utenti di Jenkins si affidano maggiormente alla loro comunità per la risoluzione dei problemi.
| Città di squadra | Jenkins |
| 4/5 | 5/5 |
4. Tasso di rilascio
TeamCity è attualmente alla versione 2019.1.4, uscita l'11 ottobre 2019. Le loro uscite sono state regolari e ben documentate.
La cronologia dei rilasci di Jenkins è piuttosto impressionante, riassunta nel registro delle modifiche, con informazioni dettagliate su ogni rilascio. La versione 2.200 è stata pubblicata il 14 ottobre 2019.
Poiché realizzano prodotti CI, queste aziende sanno che la prova è nel budino, quindi non dovrebbe sorprendere che i loro processi di rilascio siano di alta qualità.
| Città di squadra | Jenkins |
| 5/5 | 5/5 |
5. Prezzi e supporto
>TeamCity offre due versioni del suo prodotto CI. TeamCity Professional è gratuito per 100 configurazioni di build e tre agenti di build. Le licenze aggiuntive dell'agente di compilazione possono essere acquistate per $299 e includono un agente di compilazione aggiuntivo e dieci configurazioni di compilazione aggiuntive.
TeamCity Enterprise consente un numero illimitato di configurazioni di build e le licenze partono da $1999 per 3 agenti di build, scalando fino a 100 agenti per $21.999. Il prezzo è scontato del 50% per le startup e gratuito per i progetti open source.
Come abbiamo accennato, Jenkins è open source, sotto licenza MIT, e come tale può essere scaricato e utilizzato gratuitamente. Per questo motivo, le aziende più piccole potrebbero voler affrontare la CI da una prospettiva del tipo "perché non dovremmo usare Jenkins".
Una potenziale risposta a questa domanda potrebbe essere che la tua organizzazione non ha la forza lavoro, le conoscenze o la capacità di organizzare e gestire una soluzione Jenkins. TeamCity offre servizi di supporto professionale, mentre il supporto per Jenkins proviene principalmente dalla comunità e dalle risorse online, sebbene le società di terze parti offrano servizi professionali specifici per Jenkins.
| Città di squadra | Jenkins |
| 2/5 | 5/5 |
6. API ed estensibilità
Sia TeamCity che Jenkins offrono un'API RESTful. L'API di Jenkins è disponibile in tre versioni: XML, JSON e Python. Jenkins ha una maggiore estensibilità in quanto quasi ogni parte può essere personalizzata in base alle esigenze. La loro pagina di estendibilità ha risorse eccellenti per quasi ogni tipo di personalizzazione possibile. TeamCity ha molte meno informazioni disponibili sul proprio sito, un'altra differenza tra le offerte commerciali e quelle open source; tuttavia, gli utenti di TeamCity sembrano soddisfatti dell'API nel complesso.
| Città di squadra | Jenkins |
| 4/5 | 5/5 |
7. Integrazioni di terze parti
I plugin sono il nome del gioco per Jenkins, che offre centinaia di plugin gratuiti, dalla gestione del codice sorgente, agli strumenti di build, agli strumenti di sviluppo specifici per il linguaggio. Questo database preesistente di plugin utili rende molto più semplice l'inserimento di Jenkins nel tuo ambiente, sperando di risparmiare la necessità di costose personalizzazioni interne o contrattualizzate. TeamCity ha anche oltre 380 plug-in gratuiti sviluppati dalla folla disponibili, che offrono così come sono, al di fuori del prodotto commerciale supportato. TeamCity ha anche ottime integrazioni cloud (Google Cloud, AWS, VMWare, ecc.) e integrazioni "chiave" (VSCode, Jira, persino NuGet).
| Città di squadra | Jenkins |
| 4/5 | 5/5 |
8. Aziende che lo utilizzano
TeamCity vanta una vasta gamma di aziende di alto livello come clienti, tra cui Twitter, eBay e Wikipedia. Anche Jenkins non manca di grandi nomi nella sua lista di utenti, tra cui Dell, Tumblr e Netflix. Chiaramente entrambi questi prodotti sono in grado di funzionare ad un livello elevato anche su larga scala.
| Città di squadra | Jenkins |
| 5/5 | 5/5 |
9. Curva di apprendimento
Come per la facilità d'uso, la curva di apprendimento su TeamCity è più breve di Jenkins come parte del valore che offrono per il loro prodotto commerciale. Le persone che non conoscono l'integrazione continua potrebbe avere un tempo più facile per comprendere i concetti e le procedure nell'interfaccia superiore di TeamCity, invece di adattarsi all'interfaccia utente vecchio stile di Jenkins. Detto questo, la documentazione abbonda per Jenkins, e gli amministratori di sistema salati potrebbero preferire la sua essenza simile a Linux alla scatola nera proprietaria di TeamCity.
| Città di squadra | Jenkins |
| 5/5 | 3/5 |
10. Valutazione della sicurezza
Sia JetBrains che Jenkins hanno valutazioni esterne di sicurezza informatica nella gamma "buona". Il sito web principale di TeamCity, JetBrains, ha un punteggio di sicurezza di un rispettabile 827/950, mentre Jenkins ha ottenuto un punteggio più alto di 865/950.
Quadro di valutazione e riepilogo
| Città di squadra | Jenkins | |
| Set di funzionalità | 5/5 | 5/5 |
| Facilità d'uso | 5/5 | 3/5 |
| Supporto della comunità | 4/5 | 5/5 |
| Tasso di rilascio | 5/5 | 5/5 |
| Prezzi e supporto | 2/5 | 5/5 |
| API ed estensibilità | 4/5 | 5/5 |
| Integrazioni di terze parti | 4/5 | 5/5 |
| Aziende che lo utilizzano | 5/5 | 5/5 |
| Curva di apprendimento | 5/5 | 3/5 |
| Classificazione di sicurezza | 827 | 865 |
| Totale | 4,4/5 | 4,6/5 |
È un risultato vicino, ma le grandi differenze tra i due prodotti dovrebbero guidarti: hai bisogno di una soluzione open source estensibile all'infinito che sei disposto a imparare, o preferisci pagare in anticipo per una soluzione commerciale orientata ad aumentare l'usabilità? Entrambe le soluzioni sono in grado di gestire correttamente l'ambiente CI/CD e di migliorare le offerte in futuro. Tieni presente che CI e CD sono fantastici, ma possono essere completati da una soluzione di visibilità, come UpGuard. Garantire che le configurazioni corrispondano alle aspettative è il primo passo importante verso CI, CD e automazione.
Altri strumenti di integrazione continua da considerare
Ci sono altri server CI/CD là fuori. Il bambù di Atlassian è una scelta popolare. Come Jenkins e TeamCity, consente agli sviluppatori di creare, integrare e testare automaticamente il codice sorgente, quindi preparare le app per lo sviluppo. Bamboo funziona perfettamente con altri strumenti Atlassian come Jira (gestione dei progetti) e Hipchat.
Un'altra scelta popolare è GitLab CI, insieme ai progetti di test e costruzione, GitLab CI può anche distribuire le build sulla tua infrastruttura, offrendoti la possibilità di tenere traccia delle diverse distribuzioni sapendo dove è andato a finire ogni pezzo di codice. L'aspetto positivo di GitLab CI è che viene offerto gratuitamente come parte di GitLab. È semplice come aggiungere un file .gitlab-ci.yml alla directory principale del repository e configurare il progetto GitLab per l'utilizzo di un Runner. Successivamente, ogni commit o push attiverà la pipeline CI che prevede tre fasi: compilazione, test e distribuzione.
Travis CI è un'altra alternativa che fornisce più runtime (ad esempio versioni Node.js o PHP), archivi dati e altro ancora. Per questo motivo, l'hosting del progetto su travis-ci.com significa che è possibile testare la libreria o le applicazioni su più runtime e archivi dati senza averli installati localmente.
CircleCI è un'altra scelta. Si tratta di una piattaforma di integrazione e distribuzione continua che aiuta i team software a rilasciare il codice automatizzando il processo di creazione, test e distribuzione. Non come le altre alternative sopra elencate.