Aktivity provádějící transformaci zdrojových prvků konfigurace na odvozené – zejména sestavení celého produktu

Cíl: vytvořit systematický a automatizovaný postup

Pojmy: build (též itegration; proces sestavení; sestavení) – proces a výsledek vytvoření částečné nebo úplné podoby aplikace

Jedinečnost a identifikovatelnost

Úplnost (tvoří kompletní systém, obsahuje všechny komponenty)

Opakovatelnost (možnost opakovat build daného sestavení se stejným výsledkem)

Dodržuje pravidla vývojové linie (odpovídá baseline, zejména release, má strikt. prav.)

Součásti: Pravidla (vývojová linie), Skripty (pro překlad, nasazení, testy, apod. ), Vyhrazený stroj

(připrava)

Preprocessing, překlad, linkování

Spuštění

Značkování, check-in

Soukromé sestavení + sdílení součástí = ověření konzistence konfigurace

Integrační sestavení = spolehlivě ověřit, že produkt jde sestavit

Podpůrné aktivity

Kusovník a zapoudřená identifikace (seznam prvků sestavení)

Zkouška těsnosti (smoke test)

Archivace prostředí

Nejlepší praktiky SCM + QA = (continuous + daily build) + (smoke testy + regresní testy + unit testy)

Řízení sestavení

Aktivity provádějící transformaci zdrojových prvků konfigurace na odvozené, zejména sestavení celého produktu

Cíl: vytvořit systematický a automatizovaný postup

Postup při vytváření sestavení

příprava

preprocessing, překlad, linkování

spuštění

značkování, check-in

Jedinečnost a identifikovatelnost – identifikátor jednoznačný, čitelný; vytvořitelný a zpracovatelný automaticky (schema pro id)

Úplnost – tvoří kompletní systém, obsahuje všechny komponenty

Konzistence – vzniklo ze správných verzí správných komponent – tj. konzistentní konfigurace

Opakovatelnost – možnost opakovat build daného sestavení kdykoli v budoucnu (se stejným výsledkem)

Dodržujte pravidla vývojové linie – build odpovídající baseline, zejména release, má striktní pravidla

Součásti prostředí pro sestavení

Pravidla (neměnit) – vývojová linie, součásti a vlastnosti sestavení

Scripty – check-out, značkování, check-in;preprocessing, překlad, linkování; nasazení, spouštění, testování; informování vývojářů, vytváření statistik; vytvoření distribuční podoby (packaging)

Vyhrazený stroj a workspace – „build machine“

Co je použito pro sestavení (ušetřit čas na překladu):

Čistý

Přírůstkový (inkrementální) build

Účel sestavení (lokální/neoficiální komponenty povoleny)

Integrační (oficiální)

Základní postupy – soukromé sestavení (private systém build) + sdílení součástí, integrační sestavení (integration build), release

Podpůrné aktivity – smoke test, regression test, archvace prostřední, packaging

Obecný cíl: odchytit co nejdříve okamžik kdy „se to rozbilo“

Cíl: ověřit si konzistenci konfigurace – produkt lze sestavit pro mnou provedených změnách, předh check-in (problémy řeším já x všichni)

Urychlení průběhu – použit inkrementální sestavení tam kde je to vhodné, vynechat postupy pro balení, vkládání info o verzi, pomoci si sdílením odvozených prvků (shared version cache)

Integrační sestavení

Cíl: spolehlivě ověřit, že produkt jde sestavit – soukromý build nestačí (složité závislosti, specifika ve workspace, zjednodušení pro zrychlení)

Postup: celý produkt (vč. Závislostí) sestaven centrálně, automatizovaným a opakovatelným procesem 

postup co nejpodobnější sestavení pro release

maximální automatizace – typicky běží přes noc

úspěšné sestavení může být označkováno ve verzovacím systému

Význačné integrační sestavení: dodáno zákazníkovi (interní zákazník, např QA)

Náležitosti release:

revize/verze konfigurace použité pro sestavení

datum vytvoření

další metadata: zodpovědná osoba, zdrojová značka konfigurace (z verzovacího systému), jakými prošlo testy (a výsledky), cesta k logům překladu (a testů)

„marketingová verze“ např Open cms 7.5

Celý proces automatizovat, plánovač spouštění buildu, vytváření čísel/identifikátorů sestavení, ukládání metadat do databáze a do verzování.

Frekvence intragračního sestavení – čím častěji tím lépe – snažší nalezení chyb), kompromis trvání buildu x frekvence změn x velikost změn

Samotné sestavení nestačí

Kompletní seznam prvků sestavení

Zejména při distribuovaném nebo jinak složitém buildu

Samoidentifikijící konfigurace pomůže

Znalost verzí bez přístupu k verzovacímu systému

Archivace prostředí

Správa verzí objektů, které nejsou v úložišti

Nástroje, platformy, hardware, prostředí - identifikovat sestavení

Klíčové pro dlouho žijící software (např. povinné v letectví)

Nejlepší praktiky: SCM + QA

ověřené postupy sestavení pro největší zisk (zejména iterativní a přírůstkový vývoj)

Ověření formální správnosti + dodržování pravidel + metriky

Nástroje – překladač a jeho hlášení, C: lint, Java: pmd,findbugs

Postupy – programming by Contract, review, párové programování, automatický build- výběr

Denní sestavení a zkouška těsnosti (Daily build and smoke test)

Integrační sestavení + zkouška těsnosti – pravidelně 1xdenně (nočně)

Výsledky okamžitě reflektovány

Výhody: zvladatelné množství změn během denních check-in

Smoke test = ověřit, že sestavení vytvořilo funkční produkt, vytvořit testy ověřující základní funkčnost,  bez nároku na kompletní otestování

Cíl: zajistit, aby nové funkce a vylepšení nesnižovaly již hotové kódu

Postup: ověřit build produktu pomocí testů, kterými již dříve prošel

Zdroj testů: chyby objevené QA, při validaci, zákazníkem

Dotažení do dokonalosti (nebo do extrému)

Klíčová je automatizace

build (překlad a sestavení) projektu na základě popisu závislostí typu zdrojový - odvozený

makefile: definice pravidel (deklarace závislostí, příkazy pro překlad)

build „automaticky“

Repozitáře, pluginy

automatický build a průběžná integrace (vyhrazený stroj)

spuštění buildu
