Portál AbcLinuxu, 24. dubna 2024 10:29

TeamCity – inteligentní server pro kontinuální integraci

17. 12. 2018 | Richard Voigts
Články - TeamCity – inteligentní server pro kontinuální integraci  

V Praze proběhla vývojářská konference, které se zúčastnil i Anton Arhipov, guru společnosti JetBrains. Měli jsme příležitost se ho zeptat na server TeamCity a jazyk Kotlin.

K čemu je TeamCity dobré?

TeamCity je výkonný server pro kontinuální integraci a nasazení od společnosti JetBrains. Nástroj vznikl na základě potřeb společnosti JetBrains pří vývoji vlastních produktů založených na platformě Java a .NET. Anton Arhipov

TeamCity se často využívá při vytváření velkých projektů s velkým množstvím vzájemných závislostí. Komplexní modulární kódové základny jsou přesně to, v čem TeamCity vyniká. Kdykoli je to možné, server využívá výsledky předchozích běhů, čímž šetří čas na zpracování a snižuje náklady na infrastrukturu.

Kontinuální integrace je zásadní pro produktivitu týmů. TeamCity pomáhá týmům vybudovat automatizovaný kanál pro sestavení a distribuci software s vestavěným kvalitativním sledováním výstupů.

Jaké další výhody má TeamCity?

Jedním z důvodů, proč je TeamCity někdy nazýván "Inteligentním CI serverem", je jeho přístup k integraci. Jestliže TeamCity deklaruje podporu konkrétního nástroje, snaží se ji zajistit všemi možnými způsoby. Podpora projektů Java například poskytuje automatickou detekci verzí nástrojů, podporu testovacích frameworků, pokrytí kódu testy, statickou analýzu kódů a další. Jistě potěší, že většina funkcí je k dispozici bez nutnosti instalace dalších pluginů.

TeamCity nabízí integrací s mnoha různými technologiemi. Kromě projektů Java a .NET umožňuje týmům pracovat s Ruby, Xcode, C ++, Node.JS, Python a dalšími technologiemi. V současné době projekty často závisejí na externích službách a integraci s nimi. VCS hostingové služby, Docker, sledování problémů a defektů (Issue trackers) a cloudová řešení (AWS, Azure, vSphere): toto je jen krátký seznam služeb integrovatelných s TeamCity. Podstatnou součástí procesu dodávky software je schopnost kontrolovat kvalitu vyrobených produktů. TeamCity je schopen pomocí svých standardně dodávaných nástrojů evidovat pokrytí kódu testy pro projekty Java a .NET. Pro statickou analýzu kódů využívá TeamCity několik stovek inspekčních pravidel známých vývojářům jak z IntelliJ IDEA tak z nástroje ReSharper. Tato pravidla v TeamCity analyzují konkrétní kód a identifikují potenciální problémy.

Každé hlášení o zjištěné kvalitě kódu poskytuje metriky, pomocí kterých lze snadno určit podmínky, za kterých se má sestava považovat za selhávající. Chcete-li zabránit degradaci některých metrik v průběhu času, je také možné nakonfigurovat sestavu tak, aby selhala v případě, že vzrostl počet detekovaných defektů od předchozího kontroly kvality či ve srovnání s určených benchmarkem.

Jak vypadá typická skupina uživatelů TeamCity?

Pro většinu produktů lze identifikovat nejméně tři různé typy uživatelů: vývojáři, build inženýři a správci systému. TeamCity podporuje každou skupinu specifickou sadou funkcí.

Následně CI pro vývojáře - primárním cílem serveru CI z pohledu vývojáře je sestavení produktu po změnách ve zdrojovém kódu, spuštění testů a co nejrychlejší hlášení o jejich výsledku. Pokud se něco pokazí, například při selhání některých testů, musí vývojář co nejdříve identifikovat příčinu. Uživatelské rozhraní TeamCity napomáhá diagnostikovat takové problémy tím, že přehledně předkládá základní informace o vytváření a provádění testů.

Neúspěšné testy při build execution
Obrázek 1. Neúspěšné testy při build execution

Další užitečnou vlastností TeamCity je schopnost ověřit změny před tím, než je vývojář vloží do úložiště pro správu verzí a sdílí s kolegy z vývojářského týmu. Tato funkce se nazývá Pre-tested Commit. Pokud změny projdou, TeamCity ve spolupráci s pluginem pro použité IDE je automaticky vloží do Version Control. Pokud ověření selže, nový kód se do VCS nedostane a vývojář obdrží o tomto selhání upozornění (e-mailem, IM, Windows Systém Tray nebo v IDE).

Pracovní proces Předběžně testováno
Obrázek 2. Pracovní proces Předběžně testováno

Funkce Pre-tested Commit chrání VCS před chybovým kódem.

CI pro build inženýry – pro „build“ inženýry nabízí TeamCity množství funkcí pro organizaci a správu sestav. Uživatelé mohou vytvářet logiku sestav buď v sofistikovaném uživatelském rozhraní TeamCity nebo popisem konfigurací v kódu s využitím open source programovacího jazyka Kotlin, který byl rovněž vyvinut společností JetBrains.

Kotlin DSL konfigurace pro projekty TeamCity
Obrázek 3. Kotlin DSL konfigurace pro projekty TeamCity

Deklarováním jednotlivých kroků a zadáním závislostí mezi nimi můžete rozdělit jednu proceduru na několik částí, které lze provést na různých TeamCity agentech v různých prostředcích, a to buď postupně nebo paralelně. Build Chain v TeamCity nabízí grafickou vizualizaci jednotlivých kroků sestavy a jejich závislostí. Jde o další přesvědčivý koncept TeamCity.

Build Chains v TeamCity
Obrázek 4. Build Chains v TeamCity

Vzhledem k tomu, že TeamCity je navrženo pro práci s různými repozitáři zdrojových kódů jednoho projektu, synchronizace zdrojového kódu proběhne spolehlivě a automaticky v rámci sestavovacích řetězců. To překvapivě snadno umožňuje konzistentní vytváření projektu nad úložišti odlišných typů - Git, Perforce, Subversion, TFS a další.

Dobří vývojáři softwaru nemají rádi duplicitní kód; obdobně, dobrým build inženýrům se nelíbí duplicitní nastavení. TeamCity toto chápe a nabízí několik způsobů, jak znovu použít nastavení nebo jejich části. Je možné vytvořit šablonu s výchozím nastavením a potom odvodit libovolný počet konkrétních konfigurací sestav od této šablony.

Administrátor projektu může nastavit výchozí šablonu pro všechny konfigurace. Takto je možné zajistit změny všech sestav v projektu, i těch již existujících, pouhou změnou v této šabloně. Připojení jedné konkrétní konfigurace k více šablonám je také možné.

CI pro systémové administrátory – údržba systému a správa uživatelů jsou pro správce systému dva nejběžnější úkoly. TeamCity usiluje o to, aby svým uživatelům ulehčil život i v této oblasti.

Údržba systému – možnosti zálohování a obnovy umožňují uložit stav systému a obnovit jej v případě potřeby. Zpráva o využití disku poskytuje jasný přehled o tom, kolik místa každý projekt zabírá, právě tak jako informaci o sestavách s neobvykle velkými sestavovacími protokoly (logy) nebo artefakty. Podobně jako při přehledu využití disku, TeamCity informuje o tom, kolik zdrojů a jakých využívá každý projekt i se svými případnými podprojekty.

Zpráva o využití disku
Obrázek 5. Zpráva o využití disku

TeamCity je také vybaven centrálním místem, kde můžete sledovat stav svého serveru. Tam lze mimo jiné snadno identifikovat různé problémy s konfigurací: redundantní nebo nepoužívané kořeny VCS, konfigurace s velkými sestavovacími protokoly, kritické chyby apod.

Zpráva o stavu serveru
Obrázek 6. Zpráva o stavu serveru

Správa uživatelů – velké týmy s sebou nesou potřebu různých rolí v projektu s různými přiřazenými odpovědnostmi. V TeamCity je systémový administrátor vybaven sadou nástrojů pro ovládání oprávnění uživatelů.

Uživatelé TeamCity mohou být organizováni do skupin a mohou jim být přidělena různá oprávnění. Po zařazení získá uživatel všechny role přidělené skupině. Skupiny je možno organizovat hierarchicky, což zjednodušuje správu uživatelů pro velké společnosti. TeamCity podporuje mnoho schémat ověřování, včetně domén Windows a LDAP. Můžete i víc – z jednoho schématu lze jednoduše migrovat ověřování na jiné nebo kombinovat tato schémata dohromady a používat je všechna najednou.

Kromě toho TeamCity zapisuje akce uživatele do protokolu auditu. Tento protokol vám ušetří mnoho času, pokud potřebujete zjistit, kdo a kdy smazal některou konfiguraci nebo projekt, přidělil uživateli danou roli, přidal uživatele do skupiny a podobně.

Jakým způsobem je TeamCity distribuováno a kde je možné je získat a koupit?

Distribuční balíček TeamCity lze stáhnout z webu jetbrains.com/teamcity/download/ jako instalační program systému Windows nebo archiv tar.gz pro Linux a MacOS.

Je také možné spustit TeamCity jako kontejner Docker, instalovat server ze šablony CloudFormation v Amazon Web Services nebo spustit jako zdroj v aplikaci Microsoft Azure. S licenčním modelem freemium získávají uživatelé přístup ke všem produktovým funkcím s až 100 konfiguracemi sestav a 3 licencemi pro build agenty.

Dodatečné licence pro build agenty a komerční podporu lze zakoupit na stránce jetbrains.com/teamcity/buy.

Další články z této rubriky

Jarní výprodej s až 91% slevou: originální a permanentně aktivovaný OS Windows 10 jen za €14, Office za €24!
Speciální jarní slevy na software, Windows 11 za €21 na Goodoffer24
Goodoffer24 uvádí v březnu výprodej Windows 11 za €20 a mnoho dalších slev
Výprodej u Goodoffer24 v březnu: 91% sleva na Windows 11 za €20, Office za €24
Valentýnský výprodej s až 91% slevami! Kupte Windows jen za €12 od Goodoffer24

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.