Lepší nástroj CI v roce 2022?

Pojďme se blíže podívat na dva oblíbené nástroje pro kontinuální integraci a prozkoumat, v čem se liší.

V posledních deseti letech se přístup k vývoji softwaru zásadně proměnil.

Od tradičního vodopádového modelu, přes agilní metodiky s iterativním vývojem, až po současný DevOps, kde vývoj i provoz probíhají v nepřetržitém cyklu, dokud není aplikace kompletní a nasazená.

Termín CI/CD, neboli kontinuální integrace a kontinuální dodávání, nabyl na významu. Jedná se o praxi DevOps, která urychluje a zefektivňuje vývoj a nasazování aplikací. Tato metodologie automatizuje všechny fáze od zadání požadavků až po finální produkční nasazení pomocí specializovaných nástrojů. Tento automatizovaný přístup je výrazně efektivnější a bezpečnější než manuální postupy.

V současnosti existuje mnoho CI/CD nástrojů, což může ztížit výběr toho správného.

Proč zvolit Jenkins?

Jenkins je dominantní open-source nástroj pro kontinuální integraci, který se stal de facto standardem v této oblasti.

Jelikož je Jenkins založený na Javě, lze jej instalovat na většinu hlavních operačních systémů, včetně Windows a Linuxu. Původně byl vyvíjen jako nástroj pro automatizaci sestavení aplikací v Javě, avšak jeho funkčnost se s časem rozšířila díky více než 1400 pluginům, které umožňují snadnou integraci s dalšími platformami a nástroji.

Jenkins slouží jako základní kámen pro kontinuální integraci a dodávání v rámci vývojového procesu. Jeho instalace je jednoduchá a nabízí uživatelsky přívětivý řídicí panel pro správu projektů, který je dostupný prostřednictvím webového prohlížeče.

Vývojáři využívají Jenkins k automatizaci sestavování, integrace, testování a nasazování kódu. Po odevzdání kódu Jenkins automaticky provede sestavení, spustí testy a informuje vývojáře o výsledku prostřednictvím řídicího panelu nebo zasláním notifikací.

Proč zvolit TeamCity?

TeamCity je komerční CI/CD server, taktéž postavený na Javě. Jedná se o nástroj pro automatizaci a správu sestavení vyvinutý společností JetBrains.

TeamCity se prezentuje sloganem „Výkonná kontinuální integrace ihned po vybalení“, což odpovídá jeho funkcionalitě. Nabízí většinu funkcí, které najdeme v Jenkins, a navíc přidává několik dalších. TeamCity se integruje s Dockerem pro automatické vytváření kontejnerů a také podporuje integraci s Jira pro snadné sledování problémů.

TeamCity podporuje .NET framework a lze ho jednoduše integrovat s různými IDE, například Eclipse nebo Visual Studio. Dále umožňuje ukládání artefaktů do systému TeamCity nebo externího úložiště.

Bezplatná verze TeamCity Professional nabízí možnost vytvořit 100 sestavení s 3 agenty sestavení bez nákladů.

Srovnání Jenkins vs. TeamCity

Open-source vs. komerční řešení

Zásadním rozdílem mezi těmito nástroji je, že Jenkins je open-source řešení pro kontinuální integraci, zatímco TeamCity je komerční produkt. Jenkins je vydáván pod licencí MIT a jeho vývoj a podpora je zajištěna globální komunitou. TeamCity je vyvíjen a udržován společností JetBrains.

Uživatelské rozhraní

TeamCity se pyšní moderním a přehledným uživatelským rozhraním, které je atraktivní pro uživatele, kteří s kontinuální integrací teprve začínají. V rozhraní TeamCity je možné označovat, komentovat a připínat sestavení pro lepší organizaci.

Rozhraní Jenkins je tradičnější a ne tak vizuálně atraktivní. Z pohledu uživatelského rozhraní má stále prostor pro vylepšení.

Exkluzivní funkčnosti

I když Jenkins nemá tolik vestavěných funkcí, jeho rozsáhlý ekosystém pluginů nabízí bohatou paletu možností, které jiné CI nástroje nenabízejí. Díky pluginům je Jenkins schopen provádět sestavení, analýzy kódu a tím pomáhat zlepšovat jeho kvalitu.

TeamCity nabízí řadu funkcí ihned po instalaci. Podporuje různé platformy, jako jsou Java, Ruby nebo .NET. Umožňuje vytváření Docker image. Díky podpoře Bugzilla a Jira je sledování problémů snadné. Historie sestavení a chyb se ukládá pro statistické účely, spouštění minulých sestavení a zobrazení historie testů.

Instalace

Pro instalaci Jenkins na systém je nezbytná přítomnost Javy. Samotná instalace je jednoduchá a po dokončení se Jenkins zpřístupní prostřednictvím webového rozhraní.

Instalace TeamCity je taktéž jednoduchá. Stačí stáhnout TeamCity Server a postupovat podle pokynů v dokumentaci.

Integrace

V oblasti integračních schopností Jenkins nemá konkurenci. Jeho popularita plyne z podpory stovky bezplatných pluginů, které umožňují integraci s mnoha dalšími nástroji.

Ve srovnání s Jenkinsem má TeamCity méně pluginů, ale nabízí několik exkluzivních integrací, které jsou součástí jeho „funkcí ihned po vybalení“. Podporuje .NET framework, integruje se s Visual Studio Team Services a poskytuje integraci s cloudovými poskytovateli, jako AWS, Azure, GCP a VMware.

Zabezpečení

Výhodou TeamCity, jako komerčního produktu, je podpora od společnosti JetBrains, která se zaměřuje na bezpečnostní aspekty. TeamCity nabízí integraci s bezpečnostním pluginem Snyk, který dokáže provádět skenování zranitelností v rámci sestavení a tím identifikovat a řešit potenciální rizika.

U open-source Jenkins může být řešení bezpečnostních rizik zpožděno, jelikož závisí na aktivitě komunity vývojářů.

Komunita

Komunita kolem Jenkins je mnohem větší než u TeamCity. Jelikož je Jenkins open-source, každý vývojář může přispívat k jeho rozvoji. Nové funkce a vylepšení jsou přidávány každý den, díky čemuž je Jenkins stále lepším nástrojem.

TeamCity, naopak, je komerční produkt spravovaný týmem JetBrains. Disponuje profesionální komunitou, která tento nástroj vyvíjí.

Ceny

Jenkins je zdarma, protože se jedná o open-source řešení, což z něj dělá preferovanou volbu pro mnoho organizací. Díky tomuto šetří organizace náklady za CI nástroj.

TeamCity je komerční produkt s dvěma licencemi – profesionální a podniková. Profesionální licence nabízí 100 konfigurací sestavení a 3 agenty zdarma, další agent a 10 konfigurací stojí 299 $. Podniková licence začíná na 1999 $ za 3 agenty a poskytuje neomezený počet konfigurací sestavení.

Srovnávací tabulka

Jenkins TeamCity
Napsáno v Java Java
Vývojář CloudBees, Kohsuke Kawaguchi, open-source komunita JetBrains
Licence Licence MIT Komerční software
Funkce
  • Open-source
  • Bohatá sada pluginů
  • Snadné nastavení
  • Podpora pro budování potrubí
  • Workflow plugin
  • Tuny integrací
  • Hostováno interně
  • Sestavte, nasaďte nebo spusťte cokoli asynchronně
  • HTML vydavatel
  • Plyn se staví
  • Klíčové integrace
  • Integrace cloudu
  • Historie sestavení
  • Vybudujte infrastrukturu
  • Sledování kvality kódu
  • Interoperabilita VCS
  • Údržba systému
  • správa uživatelů
  • Rozšiřitelnost a přizpůsobení
  • Předem testovaný Commit
Snadnost použití Ano Ano
Uživatelské rozhraní Základní Atraktivní a moderní
Komunita Velká (open-source) Menší
Ceny Zdarma Profesionální licence: 299 $ / agent (po 3 zdarma)
Podniková licence: od 1999 $
Integrace 1400+ 300+
Bezpečnost Méně zabezpečené Více zabezpečené
API JSON, Python, RESTful API: XML RESTful API, Open API pro pluginy
Podporované jazyky Java, PHP, C, C++, Fortran, Python a další Python, C++, Java, .NET, Ruby, PHP, Node.js a další
Podpora kontejnerů Plugin Docker Podpora Docker ihned po instalaci
Uvolňovací cyklus Častější Méně častý
Hlášení Podrobné zprávy pro sestavení a testy Přehledy s lepším webovým rozhraním

Závěrem

Nyní znáte klíčové rozdíly mezi dvěma populárními nástroji pro kontinuální integraci – Jenkins a TeamCity.

Při výběru CI nástroje je důležité zvážit parametry, jako jsou možnosti hostování, dostupné integrace, knihovny kódu, podpora kontejnerů a snadnost používání a učení se s nástrojem. Vybraný nástroj by měl splňovat tyto parametry.

Pokud máte stále pochybnosti, vyzkoušejte bezplatnou verzi Jenkins a TeamCity. Po vytvoření několika sestavení si můžete lépe uvědomit, který nástroj je pro potřeby vašeho projektu vhodnější.