CI/CD
CI/CD (Continuous Integration / Continuous Delivery) je prax automatického overovania a nasadzovania kódu po každej zmene — CI zabezpečí, že nový kód nerozbíja existujúcu funkcionalitu, CD ho automaticky dostane do produkcie bez manuálneho zásahu.
Ako to funguje
Pred CI/CD bol deployment rituál: vývojár si ručne skopíroval súbory na server, spustil niekoľko príkazov v termináli, a dúfal, že nič nezabudol. Tento prístup fungoval pri malých projektoch s jedným vývojárom, ale narazil na limity akonáhle tím rástol alebo sa nasadzovalo viackrát za deň. CI/CD tento rituál automatizuje — každý push do repozitára spustí rovnaký, opakovateľný sled krokov.
Continuous Integration (CI) je prvá polovica: pri každom pushu sa automaticky spustia testy, typová kontrola (TypeScript), formátovač kódu (Biome alebo ESLint) a build. Ak niečo zlyhá, vývojár dostane okamžitú spätnú väzbu a kód sa nenasadí. Tím tak vždy pracuje nad základňou, o ktorej vie, že aspoň základné kontroly prešla. Continuous Delivery (CD) pridáva automatické nasadenie: overený kód sa nasadí na staging prostredie, kde ho možno manuálne otestovať, a po schválení alebo automaticky do produkcie.
Typický pipeline pre Next.js projekt vyzerá takto: push do feature vetvy spustí CI — build, lint, testy. Merge do main vetvy spustí nasadenie na staging. Tag alebo merge do production vetvy spustí produkčný deployment s notifikáciou do Slacku. Vercel toto robí automaticky pre frontend — každá vetva dostane vlastnú preview URL. Pre backend na DigitalOcean používame GitHub Actions, ktoré po úspešnom CI spustia SSH príkazy na serveri, aktualizujú Docker image a reštartujú kontajnery.
Menej zjavná výhoda CI/CD je psychologická: keď nasadenie stojí jedno kliknutie a trvá tri minúty, tím nasadzuje častejšie. Menšie, časté zmeny sú bezpečnejšie ako veľké mesačné releasy s desiatkami zmien naraz. A keď sa niečo pokazí, rollback na predchádzajúcu verziu je rovnako jednoduchý ako nasadenie novej.
Z našej praxe
V Strange Loops CI/CD nie je voliteľný doplnok — je štandardnou súčasťou každého projektu od prvého dňa. Pre Vercel frontendy je CI/CD zabudovaný: každý pull request dostane preview deployment, merge do main ide automaticky do produkcie. Pre Fastify backendy na DigitalOcean máme GitHub Actions workflow, ktorý spustí TypeScript kompiláciu, Biome lint, testy, a pri úspechu nasadí nový Docker image cez SSH. V projektoch ako QualiTravel (kde sa nasadzuje niekoľkokrát denne) alebo Ovulogy (kde sú kritické transakcie so Stripe) je automatické overenie pred každým nasadením nevyhnutné. Pipeline tiež obsahuje dependency audit — automaticky upozorní na bezpečnostné zraniteľnosti v npm balíčkoch.
Kedy to potrebujete
- Pracujete v tíme a chcete zabrániť tomu, aby jeden vývojár rozbil produkciu mergom neotestovaného kódu
- Nasadzujete viackrát za deň a manuálne nasadenie cez SSH vám berie čas, ktorý by ste mohli venovať vývoju
- Máte staging prostredie, kde chce klient pred každým releasom schváliť zmeny — pipeline to zariadí automaticky
- Potrebujete auditovateľnú históriu nasadení — kto, čo, kedy nasadil a aký bol výsledok
Najčastejšie otázky
Aký je rozdiel medzi Continuous Delivery a Continuous Deployment?
Continuous Delivery znamená, že kód je vždy pripravený na nasadenie — ale samotné nasadenie do produkcie spustí človek manuálnym krokom (kliknutím alebo schválením). Continuous Deployment ide o krok ďalej: každý overený commit sa automaticky nasadí do produkcie bez ľudského zásahu. Pre väčšinu klientov odporúčame Continuous Delivery — dáva istotu automatického overovania pri zachovaní kontroly nad tým, kedy presne zmena ide do produkcie.
Aké nástroje sa používajú na CI/CD?
Najpopulárnejšie sú GitHub Actions (integrovaný priamo do GitHub, bezplatný pre open-source), GitLab CI (súčasť GitLab ekosystému) a Jenkins (self-hosted, maximálna flexibilita). Pre frontendové projekty na Vercel alebo Netlify je CI/CD zabudovaný priamo v platforme. V Strange Loops štandardne používame GitHub Actions pre backend a Vercel pre frontend.
Potrebujem CI/CD aj pre malý projekt?
Áno, aj pre malé projekty. Základný CI pipeline (build + lint + testy) nastavíte za pár hodín a okamžite začne chrániť pred najčastejšími chybami — zabudnuté TypeScript chyby, rozbité importy, neprešlé testy. Časová investícia do nastavenia sa vráti pri prvom predídenom incidente v produkcii.
Súvisiace pojmy
Docker
Docker je platforma na kontajnerizáciu — zabalenie aplikácie spolu s jej závislosťami, konfiguráciou a runtime prostredím do prenositeľného kontajnera, ktorý beží identicky na laptope vývojára, CI serveri aj v produkcii.
TypeScript
TypeScript je programovací jazyk od Microsoftu — JavaScript rozšírený o statický typový systém. Kompilátor overí, že funkcie dostávajú správne parametre a objekty majú správnu štruktúru ešte pred spustením kódu, čím zachytí celú triedu chýb, ktoré by inak objavil až používateľ v produkcii.
Potrebujete s tým pomôcť?
Ak riešite niečo z toho, čo tu opisujeme, ozvite sa. Povieme vám, či a ako vieme pomôcť.