Kontinuální integrace

08 April 2013

Kontinuální integrace je vývoj softwaru praxe, kdy členové týmu integrovat své práci často, obvykle každý člověk spojuje alespoň jednou denně - vedoucí k více integrace denně. Každá integrace je ověřena automatizovaným výroby (včetně testu) detekovat chyby integrace tak rychle, jak je to možné. Mnoho týmů zjistíte, že tento přístup vede k výraznému snížení integračních problémů a umožňuje vyvinout soudržný tým software rychleji. Tento článek je stručný přehled Kontinuální integrace shrnující techniku ​​a aktuální využití.

Živě si vzpomínám jeden z mých prvních pozorování velkého softwarového projektu. Bral jsem letní stáž v rozsáhlý anglický elektroniky společnosti. Můj manažer, který je součástí skupině QA, mi dal prohlídku webu a jsme vstoupili do obrovské skličující sklad zaplněným s kostkami. Bylo mi řečeno, že tento projekt byl ve vývoji po dobu několika let a byl v současné době integrace, a byl integraci za několik měsíců. Můj průvodce mi řekl, že nikdo vlastně nevěděl, jak dlouho to bude trvat až do konce integraci. Z toho jsem se dozvěděl, společný příběh softwarových projektů: integrace je dlouhý a nepředvídatelný proces.

Ale to nemusí být cesta. Většina projektů provádí mého kolegy na ThoughtWorks, a mnoho dalších po celém světě, zacházet integraci jako non-událost. Každý jednotlivec vývojáře práce je jen pár hodin jízdy od sdíleného stavu projektu a mohou být integrovány do tohoto stavu během několika minut. Na integraci chyby zjištěny rychle a mohou být stanoveny rychle.

Tento rozdíl není výsledkem drahé a složité nástroje. Podstatou toho spočívá v prosté praxi každého v týmu začlenění často, obvykle denně proti řízeným úložiště zdrojového kódu.


Matthew a já jsem sepsal své zkušenosti v původní verzi tohoto dokumentu, který byl jedním z nejpopulárnějších papíry na mých stránkách.Když jsem popsal tuto praxi lidí, jsem často najít dvě reakce: "to nemůže fungovat (zde)" a "dělat to nebude dělat velký rozdíl". To, co lidé zjistili, jak se snaží to je, že je to mnohem jednodušší, než se zdá, a že to je obrovský rozdíl k rozvoji. Tak třetí Běžnou reakcí je "ano, co děláme, že - jak byste mohli žít bez ní?"

Ačkoli Kontinuální integrace je praxe, která nevyžaduje žádné zvláštní nářadí nasadit, jsme zjistili, že je vhodné použít kontinuální Integration Server. Nejznámější takový server Tempomat, open-source nástroj, původně postavený několik lidí na ThoughtWorks a nyní spravuje širokou komunitou. Od té doby několik dalších CI serverů se objevily, jak open source a komerční - včetně Cruise od ThoughtWorks Studios.


Stavební prvek s plynulou integraci

Nejjednodušší způsob, jak pro mě vysvětlit, co CI je a jak to funguje, je ukázat rychlý příklad toho, jak to funguje s vývojem malého funkce. Předpokládejme, že musím něco udělat kus software, ale nezáleží na tom, co je úkolem pro tuto chvíli budu předpokládat, že je malý a může být provedeno během několika hodin. (Budeme zkoumat delší úkoly a další otázky později.)

Začnu tím, že kopii aktuálního integrovaného zdroje na mém místním vývojovém počítači. Dělám to pomocí zdrojového kódu systému řízení mimo kontrolu pracovní kopii z jádra.

Výše uvedený odstavec bude mít smysl pro lidi, kteří používají systémy zdrojových kódu řízení, ale musí být nesrozumitelný pro ty, kteří ne. Takže dovolte mi, abych se rychle vysvětlit, že pro druhé.Zdrojový kód kontrolní systém udržuje všechny přijatelnosti projektu zdrojového kódu v repozitáři.Současný stav systému je obvykle odkazoval se na jako "jádra". Kdykoli vývojář může udělat řízenou kopii jádra na svém vlastním počítači, nazývá se to "mimo kontrolu". Kopie na developera počítač se nazývá "pracovní kopie". (Většinu času jste skutečně aktualizaci Vaší pracovní kopie do hlavní řady -. Se v praxi je to totéž)

Teď jsem se na mé pracovní kopii a dělat to, co musím udělat, dokončit svůj úkol. Ten se bude skládat z obou měnit výrobní číslo, a také přidávání nebo výměně automatické testy. Kontinuální integrace předpokládá vysoký stupeň testů, které se automaticky do softwaru: zařízení říkám automatického testování kódu . Často tito používat verzi populárních rámců xUnit testování.

Jednou jsem udělal (a obvykle na různých místech, když jsem pracovní) I provádět automatizované stavět na mém vývojovém počítači. To trvá zdrojový kód v mé pracovní kopii, sestavuje a spojuje jej do spustitelného souboru a spustí automatické testy. Pouze v případě, že všechny buildy a testy bez chyb je celkově stavět považován za dobrý.

S dobrou verzi, mohu pak přemýšlíte o spáchání své změny do úložiště. Twist, samozřejmě, je to, že ostatní lidé mohou a mají obvykle, provedeny změny jádra, než se dostanu šanci spáchat. Takže v první řadě mohu aktualizovat pracovní kopii s jejich změnami a znovu. Pokud se jejich změny v rozporu s mými změnami, bude to projeví jako selhání buď v kompilaci nebo při zkouškách. V tomto případě je to moje zodpovědnost opravit a opakovat, dokud můžu vytvořit pracovní kopii, která je správně synchronizován s hlavní řady.

Jednou jsem udělal můj vlastní sestavení správně synchronizované pracovní kopii pak mohu konečně spáchat své změny do hlavní řady, který pak aktualizuje úložiště.

Nicméně můj commit nedokončí svou práci. V tomto okamžiku se opět postavit, ale tentokrát na integrační zařízení založené na hlavní trati kódu. Teprve když tato sestavení úspěšné můžeme říci, že moje změny udělat. Tam je vždy šance, že jsem vynechal něco na mém počítači a úložiště nebyl správně aktualizován. Pouze tehdy, když moji oddaní změny stavět úspěšně integrace je můj úkol.Tato integrace sestavení lze provést ručně podle mě, nebo provádí automaticky Cruise.

Pokud nastane střet mezi dvěma vývojáři, to je obvykle chycen, když druhý developer spáchat staví své aktualizované pracovní kopie. Pokud tomu tak není integrační build selže. Ať tak či onak je detekována chyba rychle. V tomto okamžiku nejdůležitějším úkolem je opravit, a dostat build opět pracovat správně. V Continuous Integration prostředí, měli byste mít nikdy nepodařilo vybudovat integrační pobyt se nepodařilo dlouho. Dobrý tým by měl mít mnoho správné sestavení den. Bad sestavení se vyskytují čas od času, ale měl by být rychle opraveny.

Výsledkem toho dosáhnout, je, že je stabilní kus softwaru, který pracuje správně a obsahuje několik chyb. Každý se vyvíjí z té sdílené stabilní základnu a nikdy se tak daleko od tohoto základu, že to trvá velmi dlouho, než integrovat s ním zpět. Méně času stráveného se snaží najít chyby, protože ukazují rychle.


Praktiky Kontinuální integrace

Příběh nahoře je přehled CI a jak to funguje v každodenním životě. Jak to všechno hladce, je zřejmě spíše než to. Zaměřím se nyní na klíčové praktiky, které tvoří účinnou CI.

Udržovat jediný zdroj úložiště.

Softwarové projekty zahrnují velké množství souborů, které musí být organizována společně vybudovat produktu. Sledování všech z nich je velké úsilí, zvláště když tam je více zúčastněných osob. Takže není divu, že v průběhu let vývojovým týmům vybudovali nástroje pro správu všechno.Tyto nástroje - vyzvali správu zdrojových textů, řízení konfigurace, systémy pro správu verzí, úložiště, nebo různými jinými jmény - jsou nedílnou součástí většiny rozvojových projektů. Smutné a překvapující je to, že nejsou součástí všech projektů. To je vzácné, ale já narazit na projekty, které nepoužívají systém a použít nějaký chaotický kombinaci místní a sdílené disky.

Tak jako jednoduchý základ ujistěte se, že dostanete slušnou zdrojového kódu systému řízení. Cena není problém, jak kvalitní open-source nástroje jsou k dispozici. Aktuální open source repository výběru je Nezbytně .

Jakmile se dostanete zdrojový kód systému řízení, ujistěte se, že je dobře známé místo pro všechny, jít si zdrojový kód. Nikdo by ptát: "Kde je foo-soubor točit se?" Vše by mělo být v úložišti.

Ačkoli mnoho týmy používají repozitáře Častou chybou vidím, je, že nemají dát vše do úložiště.Pokud lidé používají, koho dám kódu tam, ale vše, co potřebujete udělat build by měl být tam, včetně: testovací skripty, vlastnosti souborů, schéma databáze, nainstalovat skripty a knihovny třetích stran. Znám projekty, které zjistili, zda jsou jejich kompilátory do úložiště (důležité v prvních dnech listového kompilátory C + +). Základním pravidlem je, že byste měli mít možnost chodit do projektu se strojem panenský, proveďte checkout, a musí být schopen plně vybudovat systém. Pouze minimální množství věcí, které by měly být na stroji panny - většinou věci, které jsou velké, složité instalace a stabilní. Operační systém, vývojové prostředí Java, nebo základní databázový systém jsou typické příklady.

Musíte dát vše potřebné k sestavení v systému zdrojového kódu, ale můžete také dát další věci, které lidé obvykle pracují se tam taky. IDE konfigurace jsou dobré dát tam proto, že způsob, jak je to snadné, aby se lidé sdílejí stejné IDE setupy.

Jednou z funkcí systémů pro správu verzí je, že vám umožní vytvořit více větví, zpracovat různé proudy vývoje. To je užitečné, ba nezbytné, funkce - ale je to často nadměrně a strhává lidi do problémů. Udržujte své využití poboček na minimum. Zejména mají Mainline: jedna větev projektu v současné době ve vývoji. Skoro každý by měl odpracovat tento Mainline většinu času. (Rozumné pobočky jsou opravy chyb z minulých verzí výrobních a dočasné experimenty.)

Obecně byste měli uložit do zdrojového kódu všechno, co potřebujete k vybudování nic, ale nic, co vlastně stavět. Někteří lidé držet vybudovat produkty v řízení zdrojů, ale domnívám se, že se vůně - údaj o hlubší problém, obvykle neschopnost spolehlivě znovu staví.

Automatizace Build

Získání zdrojů proměnil v běžícím systému může být často složitý proces, který zahrnuje kompilaci, přenášení souborů kolem, nakládání schémata do databází, a tak dále. Však stejně jako většina úkolů v této části vývoje software lze automatizovat - a v důsledku toho by mělo být automatizováno. Ptal jsem se lidí zadat podivné příkazy nebo prokliká dialogových oknech je ztráta času a živnou půdou pro chyby.

Automatizované prostředí pro sestavení jsou společným rysem systémů. Unixovém světě se má dělat po celá desetiletí, komunita Java vyvinutý Ant. NET komunita má Nant a nyní MSBuild. Ujistěte se, že můžete vytvořit a spustit systém pomocí těchto skriptů pomocí jediného příkazu.

Častou chybou není zahrnout vše, co v automatizované sestavení. Build by měl zahrnovat jak schéma databáze z úložiště a střílí to v provedení prostředí. Budu vypracovat svůj dřívější pravidlo: každý by měl být schopen přinést do stroje panenské, zkontrolujte zdroje z úložiště vydat jediného příkazu a mají funkční systém na svém počítači.

Build skripty přicházejí v různých příchutích a jsou často především na platformě nebo obce, ale nemusí být. Ačkoli většina našich projektů Java použít Ant, někteří používají Ruby (Rake Ruby systém je velmi pěkný stavět skript nástroj). Máme spoustu hodnoty z automatizace brzy Microsoft COM projekt Ant.

Stavět velké často trvá dlouho, nechcete dělat všechny tyto kroky, pokud jste jen udělali malou změnu. Takže dobrý build nástroj analyzuje, co je třeba změnit jako součást procesu. Obyčejný způsob, jak to udělat, je zkontrolovat data zdroje a objektové soubory a kompilovat pouze pokud je zdroj datum je pozdější. Závislosti pak složitější: je-li jedna změna objektového souboru těch, které na něm závisí také muset být přestavěn. Překladače mohou zvládnout takové věci, nebo nemusí.

V závislosti na tom, co budete potřebovat, budete potřebovat různé druhy věcí, které mají být postaveny. Můžete si vytvořit systém s nebo bez zkušebního předpisu, nebo s různými sadami testů.Některé komponenty mohou být postaveny samostatně. Skript build by měl umožnit vybudovat alternativní cíle pro různé případy.

Mnozí z nás používají IDE, IDE a většina má nějaký vytvořit proces řízení v rámci nich. Nicméně tyto soubory jsou vždy majetkem IDE a často křehké. Kromě toho, že potřebují IDE pro práci. To je v pořádku pro IDE uživatelé nastavit své vlastní soubory projektu a využít je pro rozvoj jednotlivce.Je však důležité mít hlavního sestavení, který je použitelný na serveru a spustitelný z jiných skriptů.Takže na projektu Java jsme v pohodě s tím vývojáři vytvářet ve svém IDE, ale pán build používá Ant aby bylo zajištěno, že lze spustit na serveru rozvoje.

Vytvořte si Build sebetestování

Tradičně build znamená shromažďování, propojování a všechny další věci potřebné, aby si program spustit. Program může běžet, ale to neznamená, že to dělá správnou věc. Moderní Staticky zadávané jazyky mohou chytit mnoho chyb, ale mnohem proklouznout té sítě.

Dobrým způsobem, jak zachytit chyby rychleji a efektivněji je zahrnout automatizované testy v procesu sestavení. Testování není dokonalý, samozřejmě, ale to může zachytit velké množství chyb - aby mohly být užitečné. Zejména vzestup Extrémní programování (XP) a zkušebním řízený vývoj (TDD) udělali velkou popularizaci samostatné testování kódu, a proto mnoho lidí viděli hodnotu techniky.

Pravidelní čtenáři mé práce bude vědět, že jsem velký fanoušek obou TDD a XP, ale chci zdůraznit, že ani jeden z těchto přístupů je nutné získat výhody self-testování kódu. Oba tyto přístupy, aby se místo psaní testů před psát kód, který je projít - v tomto režimu testy jsou stejně tak o zkoumání návrhu systému, protože jsou o chybě lov. To je dobrá věc, ale není to nutné pro účely Kontinuální integrace, kde máme slabší požadavek self-testování kódu. (I když TDD je můj preferovaný způsob, jak produkovat vlastní testování kódu.)

U osob samostatně výdělečně testování kódu, budete potřebovat sadu automatizovaných testů, které kontrolují velkou část kódu základny pro chyby. Zkoušky musí být schopen být zahájen od jednoduchého příkazu a být self-kontrola. Výsledkem spuštěním testovací sady by mělo být uvedeno, zda se testy selhaly. Pro sestavení se self-testování selhání testu by měl vést k selhání sestavení.

Během několika posledních let se nárůst TDD popularizoval xUnit rodinu o open-source nástrojů, které jsou ideální pro tento druh testování. XUnit nástroje se ukázaly pro nás velmi cenné při ThoughtWorks a vždycky jsem navrhnout, aby lidi, kteří je používají. Tyto nástroje, propagoval Kent Beck, aby bylo velmi snadné pro vás vytvořit plně samostatné testovací prostředí.

XUnit nástroje jsou jistě východiskem pro tvorbu kódu self-testování. Měli byste také dávat pozor na jiné nástroje, které se zaměřují na více end-to-end testování, je to docela řada z nich tam v tuto chvíli včetně FITnesse a spoustu dalších, že nejsem se snaží komplexně seznam zde.

Samozřejmě nemůžete počítat testů, které naleznete vše. Jak to často bylo řečeno: testy neprokazují absenci chyb. Ale dokonalost není jediný bod, ve kterém dostanete návratnost pro sebetestování stavět. Nedokonalé testy, jezdí často, jsou mnohem lepší než perfektní testů, které se nikdy nenapsal vůbec.

Každý, kdo se zavazuje, že na Mainline každý den

Integrace je především o komunikaci. Integrace umožňuje vývojářům sdělit ostatním vývojářům o změnách, které učinily. Častá komunikace umožňuje, aby lidé věděli, jak rychle se mění vyvíjet.

Jedním z předpokladů pro vývojáře zavazuje jádra je to, že může správně vytvořit svůj kód. To samozřejmě zahrnuje absolvování build testy. Stejně jako u jiných commit cyklu developer první aktualizace jejich pracovní kopie tak, aby odpovídala Mainline, řeší veškeré konflikty s hlavní řady, pak staví na svém lokálním počítači. Pokud sestavení projde, pak jsou volně zavázat k hlavní řady.

Tím často, vývojáři rychle zjistit, zda existuje konflikt mezi dvěma vývojářů. Klíčem k upevnění problémy rychle je najít rychle. S vývojáři dopouštějí každých pár hodin může být zjištěn konflikt během několika hodin jeho výskytu, v tomto bodě se toho moc nestalo, a to je snadné vyřešit.Konflikty, které zůstávají bez povšimnutí týdnů může být velmi těžké vyřešit.

Skutečnost, že budete stavět při aktualizaci Vaší pracovní kopie znamená, že zjistíte kompilace konflikty, stejně jako textové konflikty. Vzhledem k tomu, sestavení je self-testy, můžete také rozpoznat konflikty v běhu kódu. Druhé konflikty jsou obzvláště nepříjemné chyby zjistit, zda sedí na dlouhou dobu neodhaleny kódu. Vzhledem k tomu, že je to jen pár hodin změn mezi dopustí, je tu jen tolik míst, kde může být problém úkryt. Navíc vzhledem k tomu se toho moc nezměnilo, můžete použít diff-ladění , které vám pomohou najít chybu.

Moje obecné pravidlo je, že každý vývojář by se měly zavázat k úložišti každý den. V praxi to je často užitečné, pokud vývojáři spáchat častěji než to. Čím častěji se zavázat, tím méně míst, kde jste se podívat na chyby konfliktů, a tím rychleji vyřešit konflikty.

Časté zavazuje podporovat vývojáře rozebrat svou práci na malé kousky několika málo hodinách. To pomáhá sledovat průběh a poskytuje pocit pokroku. Často se lidé zpočátku pocit, že nemohou dělat něco smysluplného během několika hodin, ale my jsme zjistili, že mentoring a praxe jim pomáhá učit se.

Každý Commit měl stavět hlavní řady na integraci Machine

Pomocí denně zavazuje, tým dostane časté testované buildy. To by mělo znamenat, že hlavní trať zůstane ve zdravém stavu. V praxi se však věci stále nedaří. Jedním z důvodů je disciplína, lidé nebudou dělat aktualizace a postavit před tím, než spáchat. Dalším důvodem je environmentální rozdíly mezi stroji vývojářů.

V důsledku toho by měly zajistit, že pravidelné sestavení stalo na integrační počítači a pouze pokud tato integrace sestavení úspěšné měla závazně být považován za hotový. Vzhledem k tomu, že developer, který se dopustí je zodpovědný za to, že developer potřebuje sledovat vstříkne stavět, aby mohli opravit, pokud se zlomí. Důsledkem je to, že byste neměli jít domů, dokud se vstříkne sestavení prošel s žádným zavazuje jste přidali pozdě.

Existují dva hlavní způsoby, jak jsem viděl, jak toto zajistit: pomocí ručního sestavení nebo kontinuální Integration Server.

Ruční sestavení přístup je nejjednodušší popsat. V podstatě je to něco podobného na místní verzi, že developer má před commit do repository. Developer jde k integraci zařízení, odhlásí hlavu jádra (které nyní sídlí jeho poslední commit) a začíná stavět integrace. Ten dohlíží na její průběh, a je-li sestavení úspěšné, co udělal s jeho odevzdání. (Viz také Jim Shore popis .)

Kontinuální integrace server funguje jako monitor k úložišti. Pokaždé, když commit proti úložiště dokončí server automaticky odhlásí zdroje na integrační stroje, zahájí se budovat, a upozorní vývojář o výsledku sestavení. Vývojář se neprovádí, dokud ona dostane oznámení - obvykle e-mail.

Na ThoughtWorks, jsme velcí fanoušci Kontinuální integrace serverů - samozřejmě vedl původní vývoj Cruise CI serveru. Používáme server CI téměř na každém projektu, co děláme, a byli velmi spokojeni s výsledky.

Ne každý preferuje použít server CI. Jim Shore dal dobře podložený popis toho, proč dává přednost ruční přístup. Souhlasím s ním, že CI je mnohem více než jen instalovat nějaký software. Všechny postupy zde musí být ve hře dělat Kontinuální integrace efektivně. Ale stejně tak mnoho týmů, kteří si dobře CI najít server CI být užitečným nástrojem.

Mnoho organizací dělat pravidelné staví na měřeném plánu, jako každý večer. To není totéž jako kontinuální výroby, a není dost pro kontinuální integraci. Celý bod kontinuální integrace je najít problémy, jakmile to bude možné. Noční sestavení znamená, že chyby ležet nepozorovaně po celý den, než někdo zjistí, je. Jakmile jsou v systému tak dlouho, to trvá dlouho najít a odstranit je.

Klíčovou součástí dělá nepřetržitý sestavení je, že v případě, že hlavní řady build selže, je třeba opravit hned. Celý smysl pracovat s CI je, že jste neustále vyvíjí na známém stabilní podložku. Není to špatná věc pro hlavní trať postavit zlomit, i když se to děje pořád to naznačuje, lidé nejsou dost opatrná o aktualizaci a budování místní před commit. Když se hlavní trať postavit se zlomit, ale je důležité, že se dostane pevně rychle. Aby nedošlo k porušení Mainline můžete zvážit použití čekající hlavu .

Když týmy zavádění CI, často je to jedna z nejtěžších věcí vyřešit. Brzy v týmu mohou mít problémy se dostat do běžného zvyku pracovních vstříknout sestavení, zejména pokud pracují na existující kódové základny. Trpělivost a stabilní aplikace se zdá, že pravidelně stačit, takže nenechte se odradit.

Udržujte Rychle vytvořit

Celý bod Kontinuální INTEGRACE JE poskytnout rychlou zpětnou vazbu. Nic saje krev činnosti CI VÍC NEZ sestavení, who trvá dlouhou dobu. ZDE musim přiznat, ze urcite vrtošivý Stařík pobavení nad Tim, co JE ZA považováno Dlouhý sestavení. Většina mých kolegů uvažovat o sestavení , which trvá hodinu byla zcela bezdůvodná Vzpomínám si Tymy snil, ze podle SI TAK Rychle na -. obcas zatuchlý narazit na případy, KDY JE na Veľmi tezke sobě Dostat k. sestavení Teto rychlosti.

U většiny projektech sobě však Pokyn XP na Deset Minut sestavení JE Naprosto v rozumných mezích. Většina nasich moderních projektech dosáhnout. Dže se stojí ZA uvedení v koncentrované úsilí, ABY SE se Stalo, because každou minutu snížíte MIMO čas kompilace JE minutu uloženy pro Kazdy vývojář pokaždé, KDYŽ páchají. Vzhledem k Tomu, CI vyžaduje Časté zavazuje, přidává AŽ Hodně casu.

Pokud Vypsat zíral na jednu hodinu okamžiku sestavení, Pak Se Dostat na tvorbu Rychlejší sobě muze zdát skličující vyhlídka žako. Chcete-li muze byt dokonce skličující pracovat NA Novem projektech, přemýšlet o Tom, Jak udržet Things. Rychle Pro Podnikové APLIKACE, alespoň JSME zjistili, obvykle překážkou JE Testování - zejména testy, which zahrnují Externí služby, žako jsou databáze.

Commit sestavení JE sestavení, who JE potřeba, KDYŽ SE nekdo zavazuje, ZE Hlavní řády. Zavázat sestavení JE deset, who JE treba udelat Rychle, žako vysledek na Bude trvat několik zkratek, which sníží schopnost detekovat Chyby. Trik JE vyvážit POTŘEBY zjištění chyb rychlosti, ABY JE Dobře commit sestavení dostatečně stabilní pro ostatní Lidi pracovat.


Toto apartmá může trvat několik hodin běžet. Po potvrzení sestavení je dobrý, tak si ostatní důvěrou Lide mohou pracovat s NA kódu. Existují však i Další, pomalejší testy, which muzete začít Dělať. Další stroje mohou běžet další testovací rutiny na že stavět se provádí déle.

Stejně jako v tomto příkladu, později, že sestavení jsou často čistě testy, protože v těchto dnech je to obvykle testy, které způsobují pomalost.

Většinu času, naštěstí, můžete přidat vhodné testy odevzdání verzi.

Při použití paralelních sekundárních staví takhle můžete představit nejrůznější další automatizované testování, včetně testování výkonnosti, do pravidelného procesu sestavení.

Test klon výrobního prostředí

Smyslem Testování JE spláchla, Za kontrolovaných podmínek, zadny problem, ze systém Bude mit jsem výrobě. Významnou součástí JE Prostředí, jsem kterém výrobní systém poběží. Mate-li otestovat v jiném Prostředí, Bude always Rozdil MÁ ZA následek riziko, ze co o sobě Stane v Testu Nestane jsem výrobě.

V důsledku Toho budete chtít nastavit testovací Prostředí byt co nejpřesnější napodobit produkční Prostředí, Jak JE k možné. Použijte stejný databázový software, sp stejnými verzemi, použijte stejnou version operačního SYSTÉMU. Dejte vsechny potřebné Knihovny, which jsou jsem výrobním Prostředí dělat testovacího Prostředí, aby iv případě, ZE systém NENÍ jsem skutečnosti jejich pouziti. Použijte stejné IP Počet registrovaných Porty, spusťte jéj na stejném hardwaru.

Ne, jsem skutečnosti existují Vizualizované. Pokud píšete software pro stolní Počítače pro D není možné testovat v klonu VŠECH možných plochý sobě Všemi software treti strany, ze různí lide jsou spuštěny. Podobne některé výrobní Prostředí muze byt příliš nákladné duplicitní (i KDYŽ JSEM SE Casto setkáváme falešných EKONOMIK TIM, ZE duplikování Středně Drahé Prostředí). Navzdory těmto omezením JE vaším cílem by melo byt zatuchlý K duplikování výrobní Prostředí, stejně edited JE možné, aby porozumět rizikům souhlasíte s profesionální Kazdy Rozdil Mezi testem výrobou.

Zkušební zdvojnásobí , because systémy reagují pomalu Nebo přerušovaně. V důsledku Toho, ZE JE na běžné, ze ​​maji Veľmi Umělé Prostředí pro odevzdání Testu rychlosti používat výrobní klon od Sekundární Testování.

Všiml si JSEM, rostoucí zájem o virtualizaci, ABY było snadné dat dohromady testovacích Prostředí. Virtualizované stroje mohou byt uloženy sobě Všemi nezbytnými PRVKY, pečené do virtualizace. To je poměrně snadné Pak nainstalovat nejnovější sestavení spuštění Testu. Krome Toho SE VAM Toto umožní spustit více Testu na jednom počítači, Nebo simulovat více počítačů v siti na jednom počítači. Vzhledem k Tomu, vykon trestu virtualizace snižuje, TATO MOŽNOST JE Stale více a více Smysl.

AT JE na snadné profesionální každého, Jak stažení Babylón teď nejnovější Executable

Jedním z nejobtížnějších casti vývoje softwaru SE ujistěte SE, ZE budete stavět deset Správný software. Zjistili JSME, ZE JE Veľmi tezke určit, Co chcete v předstihu správné, LiDE JE mnohem lepe vidět Něco, co NENÍ uplně v pořádku rict, Jak se JE treba změnit. Agile vývojové zákazník i výslovně očekávat využijte Teto časti lidského chování.

Chcete-li POMOČI, ABY k fungovalo, kdyby nekdo o sobě podílel softwarového PROJEKTU budou Moci stažení Babylón teď nejnovější spustitelný Soubor musi byt Schopen spustit: pro Demonstrace, průzkumné Testování, Nebo Jen proto, ABY Rakosnik nebo neco, co o sobě tisknul Týden změnilo.

Přitom JE k Docela jednoduché:.. Ujistěte SE, ZE JE na Dobré známo Misto, KDE Lide mohou najít nejnovější spustitelný Soubor Pro Muze byt užitečné, ABY více Programy v tomto obchodě Pro nejmodernější, meli byste dat nejnovější spustitelný projít commitu testy - žako spustitelný Soubor Mel byt veľmi stabilní Poskytování potvrzení sady JE poměrně Silný.

Pokud JSTE PO procesů s definovanými Dobře iterací, JE se obvykle moudré vzít DAT konec iterace staví TAM TAKY. Demonstrace, zejména potřebovat software, whose Funkce jsou obeznámeni, takže Pak se obvykle stojí JE ZA obětovat nejmodernější neco, co demonstrátor VI Jak pracovat .

Kazdy muze vidět, co o sobě Deje

Kontinuální INTEGRACE JE především o komunikaci, Tak chcete, ABY Kazdy Mohl snadno vidět stav SYSTÉMU změny, which byly provedeny na sebe.

lávové lampy - D není prostě na indikují stav sestavení, ALE I, JAK JE na dlouho v tomto stavu . Bubliny na červené svítilny ukazují stavět na było zlomené příliš dlouho Kazdy tym dela His Vlastní rozhodnutí na těchto: www.turck.cz buildu -. (. nedávno JSEM Videl někoho experimentovat s tanečním Králika) JE Dobré Byt hraví s výběrem

Pokud používáte ruční zpra CI, aby viditelnost JE zatuchlý zásadní. Monitor na fyzickém stroji sestavení muze ukázat stav Jadra stavět. Casto budete Muset postavit znamení, ABY ukradl na deset, Kdo JE v soucasne dobe dela sestavení (Opět Něco hloupého žako Gumové kuře JE dobrá VOLBA). Casto lide chtěli udelat jednoduchou Hluk o osvědčených VERZICH, žako zvonil.

Capistrano , který je dobrým příkladem nástroj, který dělá tyhle věci.)

V clusteru prostředí Viděl jsem válcování nasazení, kde je nasazen nový software do jednoho uzlu najednou, postupně nahrazuje použití v průběhu několika hodin.

Automatizované nasazení, svázané do dobré disciplíny CI, je nezbytné k tomu, aby tuto práci.


Výhody Kontinuální integrace

Byli tam na konci (oni doufali) o dlouhodobý projekt, ale s žádnou skutečnou představu o tom, jak dlouho bude trvat, než dojedli.

Výsledkem je, že jste vcítit se do kompletního slepém místě přímo u jedné z nejnapjatější částí projektu - dokonce i když jste jedním z těch vzácných případů, kdy si nejste již pozdě.

Ve všech dobách víte, kde jste, co funguje, co ne, nevyřešené chyby máte ve vašem systému.

Chyby nedokončené plést do cesty, takže je těžší se dostat zbytek software pracuje správně.

diff ladění - porovnání aktuální verzi systému dříve ten, který neměl chybu.

.

Jak se tam dostat znamená, že neustále pracuje na zlepšování a vaše testy.

To pomáhá prolomit bariéry mezi zákazníky a rozvoj - překážky, které jsou podle mého názoru největší překážky úspěšného vývoje softwaru.


Představujeme Kontinuální integrace

Kompletní sadu postupů jsem výše popsaných vám všechny výhody - ale nemusíte začít se všemi z nich.

Ale je zde několik věcí, které jsme se naučili dát věci do pohybu.

I když se nejedná o kontinuální integrace automatické noční build je dobrý krok na cestě.

Musíte začít někde i když - všechny ty klišé o sestavení plánu Říma platí.

To obvykle vyžaduje některé docela vážné operaci na své kódové základny k tomu, jak si zlomit závislosti na pomalých částí systému.

Tím, že jednají rychle budete dělat potřebné restrukturalizace, než základní kód dostane tak velký, že se stává hlavním bolest.

(Disclaimer / Advert -.. Ano jsme na ThoughtWorks udělat nějaké poradenství v této oblasti Koneckonců jsme udělali většinu chyb, které tam jsou, aby se)


Závěrečné Myšlenky

Sotva jsem kdy slyšel negativní věci o přístupu - na rozdíl od některých z více sporných extrémní programování praxe.

Naučili jsme se hodně o Kontinuální integrace v posledních několika letech, doufám, že to ještě se učit a zlepšovat.


Další čtení

stránku průvodce na mých webových stránkách upozornit vás na další informace.

Jez Humble a Dave Farley kniha - který také porazil mě náraz cenu.

Original version: http://www.martinfowler.com/articles/continuousIntegration.html