Team Foundation Build je součástí Team Foundation Server a slouží k automatizovanému sestavování aplikací. Typicky takový build získá nejnovější verze zdrojového kódu a odkazovaných komponent, zkompiluje aplikaci, spustí testy, vytvoří instalátor a tak dále. Dokáže také logovat a oznamovat výsledky buildu, přiřadit pracovním položkám číslo buildu, v kterém jsou zahrnuty, a mnoho dalšího. Buildy mohou být spouštěny ručně, jako noční buildy, po každém změně a tak podobně.
Smysl buildu je zřejmý – ověří, že do sebe všechny části zapadají, a připraví aplikaci do spustitelné podoby, takže ji lze testovat či distribuovat. A protože se aplikace skládají z mnoha komponent (na nich často pracují různé týmy nebo dokonce různé společnosti), není sestavení všech částí ve správných verzích triviální úkol. Často to vyžaduje to mnoho kroků i hodně času.
Zde je smysl automatizace – jakmile je proces zautomatizován (a otestován), odpadá složitá a k chybám náchylná manuální práce. Časová náročnost buildu také není zásadní problém, protože po zautomatizování vás build stojí jen výpočetní čas, ale lidé se mohou věnovat práci skutečně vyžadující lidské úsilí. A bez automatizace byste nikdy nedosáhli dostatečně častých buildů, takže problémy byste nemuseli identifikovat včas.
Protože je na tomto blogu řeč hlavně o Dynamics AX, představte si, že chcete připravit testovací prostředí Dynamics AX. Musíte získat aktuální verze X++ kódu a jakýchkoli dalších komponent (např. externích DLL knihoven), nasadit kód (v závislosti na verzi AX řešit také labely, indexy apod.), zkompilovat aplikaci, synchronizovat databázi, aktualizovat reporty atd. atd. Spousta kroků, spousta prostoru k chybám, trvání – minimálně hodina. Automatizace toto celé řeší a Team Foundation Build poskytuje ideální infrastrukturu, ačkoli není připraven přímo pro Dynamics AX.
Nasazení Team Foundation Build 2010
Zjednodušeně řečeno, Team Foundation Build se skládá z build controlleru, který řídí postup sestavení, a jednoho nebo více build agentů, které provádějí jednotlivé úkony. Minimálně potřebujete jeden build controller a jeden build agent.
Team Foundation Build lze nainstalovat z instalačního média Team Foundation Serveru. Pokud vám vyhovuje výchozí nastavení (jeden agent, vše na jednom stroji atd.), stačí jen přiřadit kolekci projektů TFS. V reálném nasazení asi budete chtít více plánovat s ohledem na výkon, zabezpečení, software dostupný jednotlivým build agentům atd.
Definice buildu se skládá z šablony procesu a konkrétních parameterů. Šablona je založena na Windows Workflow Foundation 4.0 – díky tomu je možné snadno definovat tok procesu včetně podmíněných bloků, cyklů, paralelního zpracování a podobně. Navíc je k dispozici grafický editor (viz obrázek níže) a několik způsobů, jak vytvářet vlastní stavební bloky.
Výchozí šablony jsou pochopitelně nachystané pro klasické .NET aplikace, pro Dynamics AX nebo jiné atypické scénáře je třeba šablonu modifikovat. To je naštěstí něco, s čím se v Team Foundation Buildu počítá a možnosti konfigurace a rozšiřování jsou velmi široké.
Použití
Funkce týkající se buildů jsou přístupné přímo z Team Exploreru:
V definici buildu můžete nastavit základní parametry, například automatické spouštění buildu.
Build Explorer zobrazuje naplánovaná a uskutečněná sestavení:
O každém buildu si můžete zobrazit také podrobnější informace:
Výsledky si můžete nechat zasílat e-mailem, můžete využít připravené reporty, build může v případě selhání automaticky vytvořit pracovní položku pro opravu atd. Integrace s pracovními položkami vám také umožní sledovat v jakém buildu byla objevena nebo opravena nějaká chyba, analyzovat jaké testy by měly být pro daný build spuštěny, dokumentovat obsah buildu (pracovní položky, soubory) a tak dále a tak dále.
Závěr
Díky Team Foundation Buildu může být sestavovací proces mnohem jednodušší, jednotnější a škálovatelnější než pomocí ad hoc skriptů. Šablona procesu postavená na Windows Workflow Foundation umožňuje snadno celý proces modifikovat a integrace s ostatními částmi TFS nabízí celou řadu unikátních možností.
Je pochopitelné, že se při zavádění Team Foundation Serveru klade důraz na správu pracovních položek a zdrojového kódu. I tak mi ale Team Foundation Build připadá neprávem trochu opomíjený. Přitom vývojové týmy plýtvají časem na ruční sestavování, sepisování změněných objektů, hledání “kde byla ta chyba opravena” a podobně, často v dost tristní kvalitě. Team Foundation Build je jednou z cest, jak zvýšit kvalitu a zároveň i ušetřit čas (a peníze).