Čo je CI/CD? Kontinuálna integrácia a doručovanie jednoducho vysvetlené
CI/CD je spôsob vydávania softvéru, pri ktorom sa každá zmena kódu automaticky zostaví, otestuje a – ak prejde – pripraví na vydanie alebo vydá. CI (kontinuálna integrácia) znamená, že zmeny sa zlučujú často a pri každej sa kontrolujú automatizovanými testami. CD (kontinuálne doručovanie alebo nasadzovanie) znamená, že zmeny, ktoré prejdú, sa zabalia a posúvajú smerom k používateľom s malým alebo žiadnym manuálnym zásahom.
Poslanie je jednoduché: zachytiť chyby minúty po ich vzniku, nie týždne neskôr, keď ich nájde zákazník.
Prečo CI/CD záleží, keď stavate s AI
Nástroje na tvorbu aplikácií robia zmeny kódu rýchlo. Jeden prompt môže zasiahnuť desať súborov. Táto rýchlosť je skvelá, dokým zmena stránky pokladne nenenápadne nerozbije prihlasovaciu stránku a nikto si to nevšimne, kým vám niekto nenapíše e-mail.
CI/CD je záchranná sieť práve pre toto. Namiesto dôvery, že každá zmena je v poriadku, pipeline spúšťa pri každej zmene tie isté kontroly:
- Dá sa aplikácia stále zostaviť bez chýb?
- Prechádzajú ešte automatizované testy?
- Dodržiava kód pravidlá projektu (typy, formátovanie, bezpečnostné kontroly)?
Ak zlyhá akákoľvek kontrola, zmena sa zastaví skôr, ako sa dostane k používateľom. Čím rýchlejšie sa váš kód mení, tým cennejšia je kontrola, ktorá sa neunaví a nepreskočí krok.
Každodenná analógia
Predstavte si pekáreň, ktorá každé ráno dodáva chlieb obchodom.
- Bez CI/CD každý pekár týždeň skúša vlastné úpravy receptu, potom sa vo štvrtok večer všetky spoja a dúfa sa, že chlieb vykysne. Keď nevykysne, nikto nevie, čí zmena za to môže.
- S CI sa každá malá zmena receptu hneď upečie ako skúšobný bochník a skontroluje – chuť, hmotnosť, tvar. Zlá zmena sa odhalí v ten istý deň a presne viete, ktorá to bola.
- S CD bochníky, ktoré prejdú kontrolou, idú rovno do dodávky, zabalené a označené vždy rovnako, namiesto toho, aby ich niekto o piatej ráno balil ručne.
Kontrola nerobí pekárov lepšími. Robí ich chyby lacnými.
Ako funguje pipeline CI/CD
Pipeline je zoznam krokov, ktoré služba CI/CD spustí automaticky, keď sa niečo stane – zvyčajne keď niekto nahrá kód do repozitára ako GitHub. Typická pipeline vyzerá takto:
| Krok | Čo sa stane | Čo zachytí |
|---|---|---|
| 1. Spúšťač | Kód sa nahrá alebo sa otvorí pull request | — |
| 2. Inštalácia | Čistý stroj stiahne kód a jeho závislosti | Chýbajúce alebo pokazené balíky |
| 3. Zostavenie | Aplikácia sa skompiluje alebo zabalí | Syntaktické a typové chyby, pokazené importy |
| 4. Testy | Spustia sa automatizované testy | Funkcie, ktoré už nefungujú |
| 5. Kontroly | Lintovanie, formátovanie, bezpečnostné skeny | Problémy so štýlom, známe zraniteľné balíky, uniknuté kľúče |
| 6. Nasadenie na staging | Aplikácia ide na testovaciu kópiu produkcie | Problémy, ktoré sa ukážu až v skutočnom prostredí |
| 7. Nasadenie do produkcie | Aplikácia ide naživo – automaticky alebo po schválení | — |
Každý krok beží na čistom stroji, nie na niečijom notebooku, takže výhovorka „na mojom počítači to funguje“ prestáva platiť. Ak krok zlyhá, pipeline sa zastaví a oznámi to tomu, kto zmenu urobil.
Kroky sú definované v konfiguračnom súbore, ktorý žije spolu s kódom. V GitHub Actions je to napríklad súbor YAML v priečinku .github/workflows repozitára.
Kontinuálne doručovanie vs kontinuálne nasadzovanie
Pojem „CD“ je nejednoznačný a ľudia ho používajú v oboch významoch:
| Kontinuálne doručovanie | Kontinuálne nasadzovanie | |
|---|---|---|
| Testy bežia automaticky | Áno | Áno |
| Vydanie sa automaticky zabalí | Áno | Áno |
| Ide automaticky naživo | Nie – človek klikne na „vydať“ | Áno – každá zmena, ktorá prejde, sa vydá |
| Vhodné pre | Väčšinu malých tímov, aplikácie s platiacimi používateľmi | Tímy so silným pokrytím testami a monitoringom |
Kontinuálne nasadzovanie funguje dobre len vtedy, keď sú testy dobré. Ak vaše testy nepokrývajú pokladňu, kontinuálne nasadzovanie s radosťou nasadí rozbitú pokladňu.
Praktický príklad: aplikácia na rezervácie s pipeline
Predstavte si aplikáciu na rezervácie v salóne s kódom v repozitári GitHub. Požiadate nástroj na tvorbu aplikácií: „Pridaj 10 % zľavu pre zákazníkov, ktorí prichádzajú prvý raz.“
- Zmena sa nahrá do novej vetvy a otvorí sa pull request.
- Spustí sa pipeline. Nainštaluje balíky a zostaví aplikáciu – prejde to.
- Spustia sa testy. Jeden test, „vracajúci sa zákazník platí plnú cenu“, zlyhá: zľava sa uplatňuje na všetkých.
- Pull request ukáže červený krížik. Zmenu nemožno zlúčiť.
- Požiadate AI o opravu. Pošle korekciu; pipeline sa spustí znova a všetko prejde.
- Zmena sa zlúči. Pipeline ju nasadí na staging prostredie, kde vyskúšate testovaciu rezerváciu.
- Schválite ju a nasadí sa do produkcie.
Bez pipeline by sa krok 3 odohral v peňaženkách vašich zákazníkov.
Kľúčové pojmy
| Pojem | Význam |
|---|---|
| Pipeline | Automatizovaná postupnosť krokov, ktorá beží pri každej zmene. |
| Zostavenie (build) | Premena zdrojového kódu na niečo, čo sa dá spustiť. |
| Automatizovaný test | Kód, ktorý kontroluje, či iný kód robí to, čo má. |
| Pull request (PR) | Navrhovaná zmena, ktorú pred zlúčením skontrolujú ostatní (a pipeline). Pozrite čo je GitHub. |
| Vetva (branch) | Samostatná línia zmien, aby rozpracovaná práca neovplyvnila hlavný kód. |
| Staging | Súkromná kópia vašej aplikácie, ktorá zrkadlí produkciu, na kontrolu zmien skôr, než ich uvidia používatelia. |
| Produkcia | Živá aplikácia, ktorú používajú vaši používatelia. |
| Rollback | Návrat k predchádzajúcej funkčnej verzii, keď vydanie zlyhá. |
| Zelený / červený build | Beh pipeline, ktorý prešiel / zlyhal. |
Bežné omyly
- „CI/CD znamená, že moja aplikácia je otestovaná.“ Pipeline spúšťa len testy, ktoré máte. Ak žiadne nie sú, CI dokáže len to, že aplikácia sa zostaví – nič viac. Požiadajte AI, aby napísala testy pre najdôležitejšie toky.
- „CI/CD je len pre veľké firmy.“ Hostované nástroje ako GitHub Actions sa nastavia krátkym konfiguračným súborom a malé tímy ich používajú bežne. Úsilie stoja testy, nie nástroje.
- „Automatické nasadenie znamená, že nikto nič nekontroluje.“ Dobré pipeline pridávajú kontroly, nie ich odoberajú. Mnohé tímy si pred produkciou ponechávajú krok ľudského schválenia.
- „Ak je pipeline zelená, aplikácia funguje.“ Znamená to, že automatizované kontroly prešli. Zmenu by ste aj tak mali vyskúšať sami, ideálne v náhľade alebo na stagingu.
- „CI/CD nahrádza zálohy.“ Nenahrádza. Zlá migrácia databázy, ktorá prejde testami, môže poškodiť skutočné dáta. Udržujte zálohy a spôsob návratu k predchádzajúcej verzii.
Čo sa opýtať nástroja na tvorbu aplikácií
- „Napíš automatizované testy pre registráciu, prihlásenie a pokladňu a ukáž mi, ako ich spustiť.“
- „Nastav workflow GitHub Actions, ktorý pri každom pull requeste nainštaluje závislosti, zostaví aplikáciu a spustí testy.“
- „Pridaj do pipeline kontrolu typov a linter a nech zlyhá pri chybách.“
- „Jednoducho vysvetli, čo robí každý krok pipeline.“
- „Čo sa stane, ak nasadenie zlyhá napoly? Ako sa vrátim späť?“
- „Skontroluj, že tajné kľúče nie sú napevno zapísané v repozitári ani vypísané v logoch pipeline.“
Ak vaša aplikácia používa API kľúče, potrebuje ich aj pipeline – uložené ako šifrované tajomstvá v nástroji CI, nikdy v konfiguračnom súbore. Pozrite premenné prostredia a tajomstvá.
CI/CD a Mythex
Mythex nespúšťa za vás CI pipeline, ale pokrýva niekoľko rovnakých potrieb po svojom:
- Checkpointy. Po každom úspešnom kroku agenta Mythex uloží git checkpoint a Revert to this point vráti projekt späť, ak sa zmena pokazila. Pozrite Chat.
- App Testing. Napíšte
/testa agent prejde vašu živú náhľadovú verziu ako používateľ a nahlási pokazené toky – užitočné pred každým publikovaním. Pozrite App Testing. - Publikovanie je zámerný krok. Zmeny sa najprv objavia v súkromnom náhľade; vaša verejná aplikácia sa aktualizuje, až keď znova publikujete – bližšie ku kontinuálnemu doručovaniu než k nasadzovaniu.
- Synchronizácia s GitHub (Pro). Ak projekt synchronizujete s repozitárom GitHub, môžete pridať vlastné workflow GitHub Actions, ktoré spúšťajú testy pri každom nahratí. Pozrite GitHub a export.
Kontrolný zoznam toho, čo otestovať ručne pred spustením, nájdete v ako otestovať aplikáciu pred spustením a o práci s verziovaním v ako používať Git s aplikáciou vytvorenou AI.
Otázky
Čo znamená CI/CD?
CI znamená kontinuálnu integráciu: každá zmena kódu sa často zlučuje a automaticky zostavuje a testuje. CD znamená kontinuálne doručovanie alebo kontinuálne nasadzovanie: zmeny, ktoré prejdú testami, sa automaticky pripravia na vydanie (doručovanie) alebo sa vydajú používateľom bez manuálneho kroku (nasadzovanie).
Aký je rozdiel medzi kontinuálnym doručovaním a kontinuálnym nasadzovaním?
Pri kontinuálnom doručovaní je každá zmena, ktorá prejde pipeline, pripravená na vydanie, ale človek stále rozhoduje, kedy ju spustí. Pri kontinuálnom nasadzovaní sa každá zmena, ktorá prejde, automaticky dostane do ostrej prevádzky bez schvaľovacieho kroku.
Potrebujem CI/CD pre malú aplikáciu vytvorenú s AI?
Nie hneď na začiatku. Malá aplikácia s hŕstkou používateľov si vystačí s testovaním v náhľade a publikovaním ručne. CI/CD sa vyplatí, keď na kóde pracuje viac ľudí, keď na aplikácii závisia skutoční zákazníci alebo keď stále rozbíjate veci, ktoré kedysi fungovali.
Aké nástroje sa používajú pre CI/CD?
Bežné sú GitHub Actions, GitLab CI/CD, CircleCI a Jenkins, plus vstavané nasadzovacie pipeline hostingových platforiem. Všetky robia rovnakú základnú prácu: automaticky spustia zoznam krokov vždy, keď sa kód zmení.