Vodiči

Š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 ovisnostiNedostajuće ili pokvarene pakete
3. IzgradnjaAplikacija se kompajlira ili pakiraSintaktičke i tipske greške, pokvarene importe
4. TestoviPokreću se automatski testoviFunkcije koje više ne rade
5. ProvjereLinting, formatiranje, sigurnosni preglediProbleme sa stilom, poznate ranjive pakete, procurjele ključeve
6. Objava na staginguAplikacija ide na testnu kopiju produkcijeProbleme koji se pojave tek u pravom okruženju
7. Objava u produkcijiAplikacija 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 deliveryContinuous deployment
Testovi se pokreću automatskiDaDa
Izdanje se automatski pakiraDaDa
Ide uživo automatskiNe — osoba klikne „objavi”Da — svaka prošla promjena se objavljuje
Dobro zaVećinu malih timova, aplikacije s plaćajućim korisnicimaTimove 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.”

  1. Promjena se gurne na novu granu i otvara se pull request.
  2. Pipeline se pokreće. Instalira pakete i gradi aplikaciju — prolazi.
  3. Pokreće testove. Jedan test, „kupac koji se vraća plaća punu cijenu”, pada: popust se primjenjuje na sve.
  4. Pull request pokazuje crveni križić. Promjena se ne može spojiti.
  5. Zamolite AI da to popravi. Gura ispravak; pipeline se ponovno pokreće i sve prolazi.
  6. Promjena se spaja. Pipeline je objavljuje na staging okruženje, gdje isprobate probnu rezervaciju.
  7. Odobravate i objavljuje se u produkciji.

Bez pipelinea, korak 3 bi se dogodio u novčanicima vaših kupaca.

Ključni pojmovi

PojamZnačenje
PipelineAutomatizirani niz koraka koji se izvodi za svaku promjenu.
Izgradnja (build)Pretvaranje izvornog koda u nešto što se može pokrenuti.
Automatski testKod 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.
StagingPrivatna kopija aplikacije koja zrcali produkciju, za provjeru promjena prije nego ih korisnici vide.
ProdukcijaAplikacija uživo koju koriste vaši korisnici.
RollbackPovratak na prethodnu radnu verziju kad izdanje pođe po zlu.
Zeleni / crveni buildPokretanje 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 /test i 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.

Mythex · Pricing · Izradite bilo što uz AI · Predlošci za web stranice i aplikacije · Mythex u usporedbi · Rječnik izrade aplikacija uz AI · Besplatni alati za izradu aplikacija uz AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)