Atlassian Bamboo vs Jetbrains Teamcity - je tu jasný vítěz

Používám servery pro kontinuální integraci více než deset let. Použil jsem Jenkins, Bamboo, Travis, vyzkoušel Circle, Jenkins, GOCD, Semaphore a BuildBot. Beru testování a nepřetržité nasazení velmi vážně a mám vysoké nároky na můj build server. Provozoval jsem samo hostovaného bambusu déle než 4 roky, integrovaný se serverem Jira a Bitbucket a byl spokojený, ne šťastný.

Když Atlassian také zvýšil své ceny za bambus, rozhodl jsem se zhodnotit nové řešení CI. S vývojem funkcí na bambusu jsem nebyl spokojen. Použil jsem cestu k mnoha inline skriptovým úkolům, protože pro mé případy použití nebylo dost pluginů. Nemohl jsem si dovolit jiného stavitele, nemohl jsem si dovolit bambusu na prvním místě, protože jsem jen vývojářský tým jednoho člověka.

Bodl jsem do nich všechny. Začal jsem s otevřeným zdrojovým kódem, ale Jenkins a GOCD jsme pro mě vážnou noční můrou. Jenkins kvůli rozhraní (i s modrým oceánem), GOCD kvůli chybějící integraci a nepružnosti. Byl jsem tak zklamaný ...

Začal jsem vyhodnocovat známé SaaS jako Circle a Semaphore a podobně. Všichni se ale cítili, že mi chybí celý pracovní postup, který jsem měl s bambusem.

Zdarma pro malé použití

Nakonec jsem se podíval na licencování pro Jetbrains Teamcity a byl jsem překvapen, že existuje malá úroveň pro malé podniky. Instalace se dala snadno provést pomocí ukotvitelného panelu a vše se začalo cítit velmi přirozeně. Uživatelské rozhraní je trochu oldschool, ale je zabaleno s věcmi. Byl jsem trochu skeptický, ale pak jsem prodal obrovské množství možností za všechno. Jeden týden v uživatelském rozhraní je jen vánek. Můžete si vše přizpůsobit a já jsem mohl nejen přesunout všechny své projekty z bambusu do Teamcity, ale vylepšit celé mé nastavení.

Vždycky jsem si myslel, že Teamcity je slabý v CI a příliš oldschool, ale nebylo to.

Zde je seznam funkcí, které drcení bambusu pro můj případ použití:

Automatické dokončení pro proměnné a parametry konfigurace

V každém CI-serveru je tolik proměnných, které chtějí být použity. Ale vždy je těžké si je zapamatovat. Bambusova dokumentace obsahuje všechny proměnné, ale nápad TC je mnohem lepší:

jakmile do% zadáte, bude autocomplete proměnné. Funguje to pro jednoduché možnosti konfigurace (jako je zde počitadlo sestavení), ale také pro inline skripty. Tak jednoduché, tak užitečné!

Přímá navigace

Jedním z důvodů, proč si musíte na uživatelské rozhraní zvyknout, je to, že hlavní herci mají k sobě malou šipku.

Malé šipky všude v uživatelském rozhraní od teamcity - označené červeným kruhem

Ale jsou tak HANDY. Když na ně kliknete, získáte kontextové navigační odkazy pro položku. Například, když kliknete na výsledek sestavení, můžete prozkoumat protokol, zobrazit výsledky testů, upravit konfiguraci atd. Vždy je výchozí cesta, kterou chcete jít, což je obvykle místo, kam chcete jít, ale především často můžete ušetřit dvě nebo více kliknutí. Jakmile se to dozví, je to tak obrovský čas bezpečnější.

Kontextová menu jsou při navigaci v bezpečí spoustu času

Sestavení a nasazení šablon

Teamcity má tolik promyšlených vylepšení, pokud jde o opakované použití běžných součástí ve vašich konfiguracích. To jsou věci, ze kterých jsou sny vyrobeny. Můžete vytvořit šablonu z sestavení nebo začít od nuly a vytvořit nové konfigurace sestavení založené na této šabloně. Po změně šablony zdědí konfigurace sestavení změn. Je to tak dobře, protože označily vše křišťálově jasné: je toto nastavení ze šablony? Změnil jsem to v této konfiguraci?

Projekty a projekty - hierarchie

V Teamcity je prvním občanem sestavení konfigurace. Existují také konfigurace nasazení. Žijí uvnitř projektu. Samotný projekt by však mohl být součástí větší hierarchie projektů, například: „Projekty pro zákazníka A“ nebo „Projekty s backendem Symfony“. Tím se vaše Dashboard projektů tak dobře organizuje. Je možné zdědit nastavení a proměnné také od nadřazených projektů - zabijáckou funkci.

Meta běžci (vyhodí vaši mysl)

Máte spoustu sestavení sestav? Budují se odlišně, ale vy vždy provádíte testy stejným způsobem? (například: zkoušky běhu příze). Teamcity pro vás má funkci: nazývá se meta běžci. Můžete je extrahovat z jedné ze svých konfigurací sestavení a použít je jako soubor sestavení kroků, které budou spojeny pro další konfigurace sestavení. Meta runner je poskytován jako xml, který můžete upravit. Použijte meta runner na další konfigurace sestavení a stejné stejné kroky se budou nazývat pokaždé, když bude sestavení spuštěno. Je možné poskytnout parametry meta runneru.

XML Definice metaznačky

To mě srazilo z nohou. Kdybych to věděl před několika lety: zachránil by mě hodně stresu! Používám meta běžce k sestavení kroků sestavení, abych spustil celou svou testovací sadu. Např. spouštět testy příze phpunit, analyzovat zkušební protokoly a čištění.

Nahrajte ssh klíče

Je tak těžké používat pověření ssh v bambusu. Je to tak snadné v Teamcity. Můžete nahrát klíče pomocí uživatelského rozhraní nebo je pouze zkopírovat do složky, kterou připojíte k obrázku ukotvení. Poté klíče použijete všude pro ssh úkoly, scp nebo rsync. Tak snadné, tak promyšlené - přeji si, aby jim poskytli pouze trezor.

Spravujte agenta ssh přímo pro vaše sestavení

Už jste někdy měli problémy s přístupem k soukromým úložištím při instalaci se skladatelem? Už jste někdy měli potřebu vydávat příkazy ssh ve svých sestavách? Po celou dobu? Že jo!
Funkce sestavení Teamcity vám umožňuje přidat do vaší sestavy pověření ssh. Poté vytvoří agenta ssh, který vám umožní použít ssh v inline skriptech. To se snadno používá a čistí. Proč na to nikdo vůbec nepomyslel?

Dialogy „Vyberte soubor“

Nemohu vyjmenovat všechny věci v uživatelském rozhraní, díky nimž se cítíte jako: „Ach! To je užitečné “. Zde je jen jeden příklad. Když odkazujete na konfigurační soubory v zásuvných modulech v bambusu, musíte si vždy pamatovat relativní cestu a jaký byl opět aktuální pracovní adresář? V Teamcity kliknete na malou ikonu vedle konfiguračního nastavení a rozmachu: vypíše vám poslední rezervovaný strom stromů z vašeho úložiště.

Sledujte své testy, live a direct!

Obrovskou bolestí bambusu jsou protokoly testů a vyšetřování protokolů. Když se vše pokazí, musíte přejít k neformátovanému a nezvýrazněnému protokolu sestavení a zjistit, který testovací případ selhal. Chybějící integrace nástrojů jako phpunit nebo jiných běžných testovacích běžců vás nutí, abyste to občas udělali v bambusu.

Průběh testů je zobrazen naživo při stavbě

V aplikaci Teamcity jsou testy uvedeny v uživatelském rozhraní ve výsledcích sestavení. Extrahuje aktuální běžící test, průběh a výsledky testů přímo z výstupu z příkazového řádku. Pokud používáte phpunit, vše, co musíte udělat, je přidat --log-teamcity k vašemu volání phpunit a Teamcity si vyzvedne výsledky testů naživo z protokolů. Toto je nejlepší ukazatel pokroku, jaký jsem kdy měl.

Nikdy jsem si nemyslel…

... že bych byl znovu v LOVE s kontinuálním integračním serverem. Jetbrains, udělej něco pro svůj obrázek. Vážně si zasloužíš být králem CI-serverů.

Zřeknutí se odpovědnosti: Jetbrains mi nezaplatil ani nepodporoval, abych napsal tento kus.

Chtěl jsem, aby to bylo chvála o Teamcity, ne chvástání o bambusu. Pokud vás zajímá kousek o tom, „co se v bambusu děje“, dejte mi vědět! Budu rád propracovaný.

Sledujte mě prosím na twitteru!