Što je CI/CD? Kontinuirana integracija i isporuka jednostavno objašnjeno
CI/CD je način isporuke softvera u kojem se svaka promjena koda automatski gradi, testira i — ako prođe — priprema za objavu ili se objavljuje. CI (continuous integration) znači da se promjene često spajaju i da ih pri svakom spajanju provjeravaju automatski testovi. CD (continuous delivery ili deployment) znači da se promjene koje prođu pakiraju i guraju prema korisnicima uz malo ili nimalo ručnog posla.
Ideja je jednostavna: uhvatiti greške minutama nakon što su napravljene, a ne tjednima kasnije, kad ih kupac pronađe.
Zašto je CI/CD važan kad gradite uz AI
AI alati za izradu mijenjaju kod brzo. Jedan prompt može dotaknuti deset datoteka. Ta brzina je odlična sve dok promjena na stranici za plaćanje tiho ne pokvari stranicu za prijavu i nitko to ne primijeti dok vam korisnik ne napiše e-poštu.
CI/CD je zaštitna mreža upravo za to. Umjesto da vjerujete da je svaka promjena u redu, pipeline pri svakom pokretanju izvodi iste provjere:
- Radi li aplikacija i dalje bez grešaka pri izgradnji?
- Prolaze li i dalje automatski testovi?
- Poštuje li kod pravila projekta (tipove, formatiranje, sigurnosne provjere)?
Ako bilo koja provjera zakaže, promjena se zaustavlja prije nego što stigne do korisnika. Što su promjene koda brže, to je vrijednija provjera koja se nikad ne umara niti preskače korak.
Svakodnevna analogija
Zamislite pekaru koja svako jutro prodaje kruh dućanima.
- Bez CI/CD-a svaki pekar tjedan dana sam mijenja recepte, pa se sve sjedini u petak navečer i nada se da će kruh narasti. Kad ne naraste, nitko ne zna čija je promjena kriva.
- Uz CI svaka mala promjena recepta odmah se peče u probnom hlebu i provjerava — okus, težina, oblik. Loša promjena uhvati se još istog dana, a znate točno koja je bila.
- Uz CD hlebovi koji prođu kontrolu odmah idu u dostavno vozilo, pakirani i označeni uvijek na isti način, umjesto da netko u pet ujutro pakira kutije ručno.
Kontrola ne čini pekare boljima. Ona čini njihove greške jeftinima.
Kako radi CI/CD pipeline
Pipeline je niz koraka koje CI/CD servis automatski izvodi kad se nešto dogodi — obično kad netko gurne kod u repozitorij poput GitHuba. Tipičan pipeline izgleda ovako:
| Korak | Što se događa | Što hvata |
|---|---|---|
| 1. Okidač | Kod je poslan ili je otvoren pull request | — |
| 2. Instalacija | Čisti stroj preuzima kod i njegove ovisnosti | Nedostajuće ili pokvarene pakete |
| 3. Izgradnja | Aplikacija se kompajlira ili pakira | Sintaktičke i tipske greške, pokvarene importe |
| 4. Testovi | Pokreću se automatski testovi | Funkcije koje više ne rade |
| 5. Provjere | Linting, formatiranje, sigurnosni pregledi | Probleme sa stilom, poznate ranjive pakete, procurjele ključeve |
| 6. Objava na stagingu | Aplikacija ide na testnu kopiju produkcije | Probleme koji se pojave tek u pravom okruženju |
| 7. Objava u produkciji | Aplikacija ide uživo — automatski ili nakon odobrenja | — |
Svaki korak radi na čistom stroju, a ne na nečijem laptopu, pa „kod mene radi” više nije isprika. Ako korak zakaže, pipeline se zaustavlja i javlja onome tko je napravio promjenu.
Koraci su definirani u konfiguracijskoj datoteci koja živi uz kod. U GitHub Actions, primjerice, to je YAML datoteka u mapi .github/workflows repozitorija.
Continuous delivery naspram continuous deploymenta
„CD” je dvosmislen, a ljudi ga koriste na oba načina:
| Continuous delivery | Continuous deployment | |
|---|---|---|
| Testovi se pokreću automatski | Da | Da |
| Izdanje se automatski pakira | Da | Da |
| Ide uživo automatski | Ne — osoba klikne „objavi” | Da — svaka prošla promjena se objavljuje |
| Dobro za | Većinu malih timova, aplikacije s plaćajućim korisnicima | Timove s dobrom pokrivenošću testovima i praćenjem |
Continuous deployment dobro funkcionira samo ako su testovi dobri. Ako vaši testovi ne pokrivaju plaćanje, continuous deployment će rado objaviti pokvareno plaćanje.
Primjer: aplikacija za rezervacije s pipelineom
Recimo da imate aplikaciju za rezervacije u salonu, a kod je u GitHub repozitoriju. Zatražite od AI alata: „Dodaj popust od 10% za kupce koji dolaze prvi put.”
- Promjena se gurne na novu granu i otvara se pull request.
- Pipeline se pokreće. Instalira pakete i gradi aplikaciju — prolazi.
- Pokreće testove. Jedan test, „kupac koji se vraća plaća punu cijenu”, pada: popust se primjenjuje na sve.
- Pull request pokazuje crveni križić. Promjena se ne može spojiti.
- Zamolite AI da to popravi. Gura ispravak; pipeline se ponovno pokreće i sve prolazi.
- Promjena se spaja. Pipeline je objavljuje na staging okruženje, gdje isprobate probnu rezervaciju.
- Odobravate i objavljuje se u produkciji.
Bez pipelinea, korak 3 bi se dogodio u novčanicima vaših kupaca.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Pipeline | Automatizirani niz koraka koji se izvodi za svaku promjenu. |
| Izgradnja (build) | Pretvaranje izvornog koda u nešto što se može pokrenuti. |
| Automatski test | Kod koji provjerava radi li drugi kod što treba. |
| Pull request (PR) | Predložena promjena koju drugi (i pipeline) pregledavaju prije spajanja. Pogledajte što je GitHub. |
| Grana (branch) | Zasebna linija promjena, tako da rad u tijeku ne utječe na glavni kod. |
| Staging | Privatna kopija aplikacije koja zrcali produkciju, za provjeru promjena prije nego ih korisnici vide. |
| Produkcija | Aplikacija uživo koju koriste vaši korisnici. |
| Rollback | Povratak na prethodnu radnu verziju kad izdanje pođe po zlu. |
| Zeleni / crveni build | Pokretanje pipelinea koje je prošlo / palo. |
Česte zablude
- „CI/CD znači da je moja aplikacija testirana.” Pipeline pokreće samo testove koje imate. Ako testova nema, CI dokazuje samo da se aplikacija gradi — ništa više. Zamolite AI da napiše testove za najvažnije tokove.
- „CI/CD je samo za velike tvrtke.” Hostirani alati poput GitHub Actions postavljaju se kratkom konfiguracijskom datotekom, a mali timovi ih koriste stalno. Trud su testovi, a ne alat.
- „Automatska objava znači da nitko ništa ne provjerava.” Dobri pipelineovi dodaju provjere, a ne ih uklanjaju. Mnogi timovi zadrže ručno odobrenje prije produkcije.
- „Ako je pipeline zelen, aplikacija radi.” To znači da su automatske provjere prošle. Promjenu i dalje sami isprobajte, po mogućnosti u pregledu ili na stagingu.
- „CI/CD zamjenjuje sigurnosne kopije.” Ne zamjenjuje. Loša migracija baze koja prođe testove i dalje može oštetiti stvarne podatke. Čuvajte sigurnosne kopije i način za povratak.
Što pitati svog AI alata za izradu
- „Napiši automatske testove za registraciju, prijavu i plaćanje i pokaži mi kako ih pokrenuti.”
- „Postavi GitHub Actions workflow koji pri svakom pull requestu instalira ovisnosti, gradi aplikaciju i pokreće testove.”
- „Dodaj provjeru tipova i linter u pipeline i neka padne kod grešaka.”
- „Jednostavnim jezikom objasni što radi svaki korak pipelinea.”
- „Što se događa ako objava pukne na pola? Kako da se vratim unatrag?”
- „Provjeri da nijedna tajna nije upisana u kod repozitorija niti ispisana u logovima pipelinea.”
Ako vaša aplikacija koristi API ključeve, i pipeline ih treba — spremljene kao šifrirane tajne u CI alatu, nikad u konfiguracijskoj datoteci. Pogledajte varijable okruženja i tajne.
CI/CD i Mythex
Mythex za vas ne pokreće CI pipeline, ali pokriva nekoliko istih potreba na svoj način:
- Checkpointi. Nakon svakog uspješnog koraka agenta Mythex sprema git checkpoint, a Vrati na ovu točku vraća projekt unatrag ako je promjena pošla po zlu. Pogledajte Chat.
- App Testing. Upišite
/testi agent klikće kroz vaš live pregled kao korisnik te prijavljuje pokvarene tokove — korisno prije svake objave. Pogledajte App Testing. - Objava je namjeran korak. Promjene se najprije pojavljuju u privatnom pregledu; vaša javna aplikacija se ažurira tek kad ponovno objavite — bliže continuous deliveryju nego continuous deploymentu.
- GitHub sinkronizacija (Pro). Sinkronizirajte projekt s GitHub repozitorijem pa možete dodati vlastite GitHub Actions workflowe koji pokreću testove pri svakom guranju. Pogledajte GitHub i izvoz.
Za popis onoga što ručno testirati prije objave pogledajte kako testirati aplikaciju prije lansiranja, a za rad s verzijama kako koristiti Git s aplikacijom izrađenom uz AI.
Pitanja
Što znači CI/CD?
CI znači kontinuirana integracija: svaka promjena koda često se spaja i automatski gradi i testira. CD znači kontinuirana isporuka ili kontinuirana objava: promjene koje prođu testove automatski se pripremaju za izdanje (isporuka) ili se objavljuju korisnicima bez ručnog koraka (objava).
Koja je razlika između kontinuirane isporuke i kontinuirane objave?
Kod kontinuirane isporuke svaka promjena koja prođe pipeline spremna je za izdanje, ali osoba i dalje odlučuje kad će ići uživo. Kod kontinuirane objave svaka promjena koja prođe automatski ide uživo, bez koraka odobrenja od strane čovjeka.
Treba li mi CI/CD za malu aplikaciju izrađenu uz AI?
Ne odmah. Mala aplikacija s nekoliko korisnika može se snaći s testiranjem u pregledu i ručnom objavom. CI/CD se isplati kad kod mijenja više ljudi, kad o aplikaciji ovise pravi kupci ili kad stalno kvarite stvari koje su prije radile.
Koji se alati koriste za CI/CD?
Uobičajeni su GitHub Actions, GitLab CI/CD, CircleCI i Jenkins, a tu su i ugrađeni pipelineovi za objavu kod hosting platformi. Svi obavljaju isti osnovni posao: automatski pokreću niz koraka kad se kod promijeni.