Nepřetržitá integrace ( CI , eng. Continuous Integration ) je praxe vývoje softwaru , která spočívá v neustálém slučování pracovních kopií do společné hlavní vývojové větve (až několikrát denně) a provádění častých automatizovaných sestavení projektů pro rychlou identifikaci potenciálních defektů a řešení integrace. problémy . V typickém projektu, kde vývojáři pracují nezávisle na různých částech systému, je fáze integrace poslední. Může nepředvídatelně zpozdit dokončení práce. Přechod na kontinuální integraci umožňuje snížit složitost integrace a učinit ji předvídatelnější díky co nejčasnějšímu odhalení a odstranění chyb a nesrovnalostí, ale hlavní výhodou je snížení nákladů na opravu závady díky její včasné detekci.
Nejprve konceptualizoval a navrhl Grady Booch v roce 1991 [1] . Je to jeden z hlavních prvků praxe extrémního programování .
Pro uplatnění praxe je nutné splnit řadu základních požadavků na developerský projekt. Zejména zdrojový kód a vše, co je potřeba k sestavení a testování projektu, by mělo být uloženo v úložišti systému správy verzí a operace kopírování z úložiště, sestavování a testování celého projektu by měly být automatizovány a snadno volány z externích zdrojů. programy.
Pro organizaci procesu nepřetržité integrace na dedikovaném serveru je spuštěna služba, jejíž úkoly zahrnují:
Lokální sestavení může být provedeno externím požadavkem, plánem, faktem aktualizace úložiště a dalšími kritérii.
Plánovaná sestavení ( ang. daily build - daily build ) se zpravidla konají po hodinách, v noci ( eng. nightly build ), jsou plánována tak, aby výsledky testů byly připraveny do začátku následujícího pracovního dne. Pro rozlišení je dodatečně zaveden systém číslování sestav - většinou je každá sestava očíslována přirozeným číslem, které se zvyšuje s každou novou sestavou. Zdrojové texty a další zdrojová data, jsou-li převzata z úložiště (úložiště) systému správy verzí, jsou označeny číslem sestavení. Díky tomu lze v budoucnu přesně reprodukovat přesně stejnou sestavu - stačí vzít zdrojová data pro požadovaný štítek a spustit proces znovu. Díky tomu je možné znovu vydat i velmi staré verze programu s drobnými opravami.
Mezi výhody nepřetržité integrace patří:
Praxe zároveň není bez nevýhod, zejména:
Okamžitý efekt neúplného nebo nefunkčního kódu navíc odrazuje vývojáře od provádění periodických záloh kódu do úložiště, ale v případě použití systému správy verzí zdrojového kódu s podporou větvení lze tento problém vyřešit vytvořením samostatného „větev“ ( angl. branch ) projektu pro provádění velkých změn (kód, jehož vývoj do funkční verze zabere několik dní, ale je žádoucí častější ukládání výsledku do úložiště). Po dokončení vývoje a individuálního testování takové větve může být sloučena ( merge ) s hlavním kódem nebo " kmenem " ( trunk ) projektu.