Co je CI/CD? Průběžná integrace a doručování srozumitelně
CI/CD je způsob vydávání softwaru, při kterém se každá změna kódu automaticky sestaví, otestuje a — pokud projde — připraví k vydání nebo vydá. CI (průběžná integrace) znamená, že se změny slučují často a pokaždé je kontrolují automatické testy. CD (průběžné doručování nebo nasazování) znamená, že změny, které projdou, se zabalí a posunou směrem k uživatelům s malým nebo žádným ručním zásahem.
Smysl je prostý: chyby odhalit během minut od jejich vzniku, ne týdny později, když je najde zákazník.
Proč na CI/CD záleží, když stavíte s AI
AI nástroje mění kód rychle. Jediný příkaz může zasáhnout deset souborů. Rychlost je skvělá, dokud změna stránky pokladny tiše nerozbije přihlašování a nikdo si toho nevšimne, dokud vám to nenapíše uživatel.
CI/CD je přesně tato pojistka. Místo důvěry, že každá změna je v pořádku, pipeline pokaždé spustí stejné kontroly:
- Dá se aplikace stále sestavit bez chyb?
- Procházejí automatické testy?
- Dodržuje kód pravidla projektu (typy, formátování, bezpečnostní kontroly)?
Pokud některá kontrola selže, změna se zastaví dřív, než se dostane k uživatelům. Čím rychleji se váš kód mění, tím cennější je kontrola, která se neunaví a nevynechá krok.
Každodenní přirovnání
Představte si pekárnu, která každé ráno prodává chleba obchodům.
- Bez CI/CD každý pekař týden laduje vlastní recept, pak se všechno v pátek večer spojí a doufá se, že chleba ještě vykyne. Když ne, nikdo neví, čí změna za to může.
- S CI se každá malá změna receptu hned upeče jako zkušební bochník a zkontroluje se — chuť, hmotnost, tvar. Špatná změna se odhalí ještě ten samý den a přesně víte, která to byla.
- S CD bochníky, které projdou kontrolou, jdou rovnou do dodávky, zabalené a označené pokaždé stejně, místo aby někdo v pět ráno balil krabice ručně.
Kontrola pekaře nezlepší. Jen udělá jeho chyby levnými.
Jak funguje CI/CD pipeline
Pipeline je seznam kroků, které služba CI/CD spustí automaticky, když se něco stane — obvykle když někdo nahraje kód do repozitáře jako GitHub. Typická pipeline vypadá takto:
| Krok | Co se stane | Co odhalí |
|---|---|---|
| 1. Spuštění | Kód je nahrán nebo se otevře pull request | — |
| 2. Instalace | Čistý stroj stáhne kód a jeho závislosti | Chybějící nebo rozbité balíčky |
| 3. Sestavení | Aplikace se zkompiluje nebo zabalí | Syntaktické a typové chyby, rozbité importy |
| 4. Testy | Běží automatické testy | Funkce, které už nefungují |
| 5. Kontroly | Lintování, formátování, bezpečnostní sken | Problémy se stylem, známé zranitelné balíčky, uniklé klíče |
| 6. Nasazení na staging | Aplikace jde do testovací kopie produkce | Problémy, které se projeví jen v reálném prostředí |
| 7. Nasazení do produkce | Aplikace jde naživo — automaticky, nebo po schválení | — |
Každý krok běží na čistém stroji, ne na něčím notebooku, takže výmluva „u mě na počítači to funguje" přestává platit. Když krok selže, pipeline se zastaví a řekne tomu, kdo změnu udělal.
Kroky jsou definované v konfiguračním souboru, který je spolu s kódem. Například v GitHub Actions je to soubor YAML ve složce .github/workflows v repozitáři.
Průběžné doručování vs průběžné nasazování
„CD" je nejednoznačné a lidé ho používají oběma způsoby:
| Průběžné doručování | Průběžné nasazování | |
|---|---|---|
| Testy běží automaticky | Ano | Ano |
| Vydání se automaticky zabalí | Ano | Ano |
| Jde automaticky naživo | Ne — člověk klikne na „vydat" | Ano — každá změna, která projde, se nasadí |
| Vhodné pro | Většinu malých týmů, aplikace s platícími uživateli | Týmy se silným pokrytím testy a monitoringem |
Průběžné nasazování funguje dobře jen tehdy, když jsou testy kvalitní. Pokud vaše testy nepokrývají pokladnu, průběžné nasazování s radostí nasadí rozbitou pokladnu.
Praktický příklad: rezervační aplikace s pipeline
Představme si aplikaci pro rezervace v salonu, jejíž kód je v repozitáři na GitHubu. Požádáte AI nástroj: „Přidej 10% slevu pro zákazníky, kteří jsou tu poprvé."
- Změna se nahraje do nové větve a otevře se pull request.
- Spustí se pipeline. Nainstaluje balíčky a sestaví aplikaci — to projde.
- Spustí se testy. Jeden test, „vracející se zákazník platí plnou cenu", selže: sleva se uplatňuje všem.
- Pull request ukáže červený křížek. Změnu nelze sloučit.
- Požádáte AI, aby to opravila. Pošle opravu; pipeline se spustí znovu a vše projde.
- Změna se sloučí. Pipeline ji nasadí do stagingového prostředí, kde vyzkoušíte testovací rezervaci.
- Schválíte a nasadí se do produkce.
Bez pipeline by se krok 3 odehrál v peněženkách vašich zákazníků.
Klíčové pojmy
| Pojem | Význam |
|---|---|
| Pipeline | Automatická posloupnost kroků, která se spustí u každé změny. |
| Sestavení (build) | Převod zdrojového kódu na něco, co může běžet. |
| Automatický test | Kód, který kontroluje, že jiný kód dělá, co má. |
| Pull request (PR) | Navrhovaná změna, kterou před sloučením zkontrolují ostatní (a pipeline). Viz co je GitHub. |
| Větev (branch) | Oddělená linie změn, aby rozdělaná práce neovlivnila hlavní kód. |
| Staging | Soukromá kopie vaší aplikace, která zrcadlí produkci, pro kontrolu změn dřív, než je uvidí uživatelé. |
| Produkce | Živá aplikace, kterou používají uživatelé. |
| Rollback | Návrat k předchozí fungující verzi, když vydání dopadne špatně. |
| Zelený / červený build | Běh pipeline, který prošel / selhal. |
Časté omyly
- „CI/CD znamená, že moje aplikace je otestovaná." Pipeline spustí jen ty testy, které máte. Pokud žádné nejsou, CI ověří jen to, že se aplikace sestaví — nic víc. Požádejte AI, ať napíše testy pro nejdůležitější postupy.
- „CI/CD je jen pro velké firmy." Hostované nástroje jako GitHub Actions se nastavují krátkým konfiguračním souborem a malé týmy je používají pořád. Úsilí nedělá nástroj, ale testy.
- „Automatické nasazení znamená, že nikdo nic nekontroluje." Dobré pipeline přidávají kontroly, neodebírají je. Mnoho týmů před produkcí nechává krok schválení člověkem.
- „Když je pipeline zelená, aplikace funguje." Znamená to, že automatické kontroly prošly. Změnu byste měli stejně vyzkoušet sami, ideálně v náhledu nebo na stagingu.
- „CI/CD nahrazuje zálohy." Nenahrazuje. Špatná migrace databáze, která projde testy, může stále poškodit skutečná data. Držte zálohy a způsob, jak se vrátit zpět.
Na co se zeptat svého AI nástroje
- „Napiš automatické testy pro registraci, přihlášení a pokladnu a ukaž mi, jak je spustit."
- „Nastav workflow v GitHub Actions, které při každém pull requestu nainstaluje závislosti, sestaví aplikaci a spustí testy."
- „Přidej do pipeline kontrolu typů a linter a ať selže při chybách."
- „Vysvětli srozumitelně, co dělá každý krok pipeline."
- „Co se stane, když nasazení selže v půlce? Jak se vrátím zpět?"
- „Zkontroluj, že žádné tajné údaje nejsou natvrdo v repozitáři ani nevypisované v logách pipeline."
Pokud vaše aplikace používá API klíče, pipeline je také potřebuje — uložené jako šifrované tajné hodnoty v nástroji CI, nikdy v konfiguračním souboru. Viz proměnné prostředí a tajné hodnoty.
CI/CD v Mythexu
Mythex za vás CI pipeline nespouští, ale několik stejných potřeb řeší po svém:
- Checkpointy. Po každém úspěšném kroku agenta si Mythex uloží git checkpoint a Vrátit se k tomuto bodu vrátí projekt zpět, pokud se změna nepovedla. Viz Chat.
- App Testing. Napište
/testa agent proklikne vaši živou ukázku jako uživatel a nahlásí rozbité postupy — užitečné před každým publikováním. Viz App Testing. - Publikování je záměrný krok. Změny se nejdřív objeví v soukromém náhledu; vaše veřejná aplikace se aktualizuje až při dalším publikování — blíž k průběžnému doručování než k průběžnému nasazování.
- Synchronizace s GitHubem (Pro). Když projekt synchronizujete s repozitářem na GitHubu, můžete přidat vlastní workflow GitHub Actions, která spouštějí testy při každém nahrání. Viz GitHub a export.
Seznam toho, co ručně otestovat před spuštěním, najdete v jak otestovat aplikaci před spuštěním, a pro práci s verzováním jak používat Git s aplikací postavenou s AI.
Otázky
Co znamená zkratka CI/CD?
CI znamená průběžnou integraci: každá změna kódu se slučuje často a automaticky se sestaví a otestuje. CD znamená průběžné doručování nebo průběžné nasazování: změny, které projdou testy, se automaticky připraví k vydání (doručení) nebo se bez ručního kroku vydají uživatelům (nasazení).
Jaký je rozdíl mezi průběžným doručováním a průběžným nasazováním?
U průběžného doručování je každá změna, která projde pipeline, připravena k vydání, ale o tom, kdy se spustí naživo, stále rozhoduje člověk. U průběžného nasazování jde každá změna, která projde, automaticky naživo, bez schvalovacího kroku od člověka.
Potřebuji CI/CD pro malou aplikaci postavenou s AI?
Ne hned první den. Malá aplikace s hrstkou uživatelů si vystačí s testováním v náhledu a publikováním ručně. CI/CD se vyplatí, až na kódu pracuje více lidí, až na aplikaci spoléhají skuteční zákazníci, nebo až opakovaně rozbíjíte věci, které dříve fungovaly.
Jaké nástroje se pro CI/CD používají?
Mezi běžné patří GitHub Actions, GitLab CI/CD, CircleCI a Jenkins, a také vestavěné nasazovací pipelines hostingových platforem. Všechny dělají stejnou základní práci: automaticky spustí seznam kroků vždy, když se kód změní.