Vodiči

Šta je CI/CD? Kontinuirana integracija i isporuka jednostavno

CI/CD je način isporuke softvera u kojem se svaka promjena koda automatski gradi, testira i, ako prođe, priprema za izdanje ili objavljuje. CI (continuous integration, kontinuirana integracija) znači da se promjene često spajaju i provjeravaju automatskim testovima svaki put. CD (continuous delivery ili deployment, kontinuirana isporuka ili postavljanje) znači da se promjene koje prođu pakuju i guraju prema korisnicima uz malo ili nimalo ručnog rada.

Poenta je jednostavna: uhvatiti greške nekoliko minuta nakon što su napravljene, a ne sedmicama kasnije, kada ih kupac otkrije.

Zašto je CI/CD važan kad gradite uz AI

AI alati za izradu brzo prave promjene u kodu. Jedan prompt može dotaknuti deset fajlova. Ta brzina je odlična dok promjena na stranici za plaćanje tiho ne pokvari prijavu, a niko to ne primijeti dok vam korisnik ne napiše e-mail.

CI/CD je mreža sigurnosti upravo za to. Umjesto da vjerujete da je svaka promjena u redu, pipeline izvršava iste provjere svaki put:

  • Da li se aplikacija i dalje gradi bez grešaka?
  • Da li automatski testovi i dalje prolaze?
  • Da li kod prati pravila projekta (tipovi, formatiranje, sigurnosne provjere)?

Ako bilo koja provjera ne prođe, promjena se zaustavlja prije nego dođe do korisnika. Što su promjene koda brže, to je vrijednija provjera koja nikada ne posustaje i ne preskače korak.

Svakodnevna analogija

Zamislite pekaru koja svako jutro prodaje hljeb prodavnicama.

  • Bez CI/CD-a, svaki pekar sedmicu radi na svojim tweakovima recepta, pa sve to spoje u petak uveče i nadaju se da će hljeb narasti. Kada ne naraste, niko ne zna čija je promjena to uzrokovala.
  • Uz CI, svaka mala promjena recepta odmah se peče u probnom hlebu i provjerava: ukus, težina, oblik. Loša promjena se uhvati istog dana, i tačno znate koja je bila.
  • Uz CD, hlebovi koji prođu kontrolu odlaze direktno u dostavno vozilo, zapakovani i označeni uvijek na isti način, umjesto da ih neko pakuje ručno u pet ujutro.

Kontrola ne čini pekare boljim. Ona čini njihove greške jeftinima.

Kako radi CI/CD pipeline

Pipeline je lista koraka koje CI/CD servis automatski izvršava kada se nešto dogodi, obično kada neko gurne kod u repozitorijum poput GitHuba. Tipičan pipeline izgleda ovako:

KorakŠta se dešavaŠta uhvati
1. OkidačKod je gurnut ili je otvoren pull request—
2. InstalacijaČista mašina preuzima kod i njegove zavisnostiNedostajuće ili pokvarene pakete
3. BuildAplikacija se kompajlira ili pakujeSintaksne i tipske greške, pokvarene importe
4. TestoviPokreću se automatski testoviFunkcije koje više ne rade
5. ProvjereLinting, formatiranje, sigurnosni skenoviProbleme sa stilom, poznate ranjive pakete, procurile ključeve
6. Deploy na stagingAplikacija ide na testnu kopiju produkcijeProbleme koji se pokažu samo u pravom okruženju
7. Deploy na produkcijuAplikacija ide uživo, automatski ili nakon odobrenja—

Svaki korak se izvršava na čistoj mašini, a ne na nečijem laptopu, pa izgovor „radi na mom računaru“ prestaje da važi. Ako korak ne uspije, pipeline se zaustavlja i javlja onome ko je napravio promjenu.

Koraci su definisani u konfiguracijskom fajlu koji živi uz kod. U GitHub Actions, na primjer, to je YAML fajl u folderu .github/workflows repozitorijuma.

Kontinuirana isporuka vs kontinuirano postavljanje

„CD“ je dvosmislen, i ljudi ga koriste na oba načina:

Kontinuirana isporukaKontinuirano postavljanje
Testovi se pokreću automatskiDaDa
Izdanje se automatski pakujeDaDa
Ide uživo automatskiNe, osoba klikne „izdaj“Da, svaka promjena koja prođe se objavljuje
Dobro zaVećinu malih timova, aplikacije s plaćajućim korisnicimaTimove s jakim pokrivanjem testovima i praćenjem

Kontinuirano postavljanje dobro funkcioniše samo ako su testovi dobri. Ako vaši testovi ne pokrivaju blagajnu, kontinuirano postavljanje će rado isporučiti pokvarenu blagajnu.

Praktičan primjer: aplikacija za rezervacije s pipeline-om

Recimo da imate aplikaciju za rezervacije u salonu, a kod je u GitHub repozitorijumu. Od AI alata zatražite: „Dodaj 10% popusta za kupce koji su prvi put došli.“

  1. Promjena se gura u novu granu i otvara se pull request.
  2. Pipeline počinje. Instalira pakete i gradi aplikaciju. Ovo prolazi.
  3. Pokreću se testovi. Jedan test, „kupac koji se vraća plaća punu cijenu“, ne uspijeva: popust se primjenjuje na sve.
  4. Pull request pokazuje crveni krst. Promjena se ne može spojiti.
  5. Zamolite AI da ispravi. On gura ispravku; pipeline se ponovo pokreće i sve prolazi.
  6. Promjena se spaja. Pipeline je postavlja na staging okruženje, gdje probate test rezervaciju.
  7. Odobravate, i ide na produkciju.

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

Ključni pojmovi

PojamZnačenje
PipelineAutomatizovan niz koraka koji se izvršava na svaku promjenu.
BuildPretvaranje izvornog koda u nešto što se može pokrenuti.
Automatski testKod koji provjerava da li drugi kod radi kako treba.
Pull request (PR)Predložena promjena koju drugi (i pipeline) pregledaju prije spajanja. Pogledajte šta je GitHub.
Grana (branch)Zasebna linija promjena, da rad u toku ne utiče na glavni kod.
StagingPrivatna kopija vaše aplikacije koja oslikava produkciju, za provjeru promjena prije nego ih korisnici vide.
ProdukcijaŽiva aplikacija koju koriste vaši korisnici.
RollbackVraćanje na prethodnu radnu verziju kada izdanje pođe po zlu.
Zeleni / crveni buildPokretanje pipeline-a koje je prošlo / nije uspjelo.

Česte zablude

  • „CI/CD znači da je moja aplikacija testirana.“ Pipeline pokreće samo testove koje imate. Ako nema testova, CI dokazuje samo da se aplikacija gradi, ništa više. Zamolite AI da napiše testove za tokove koji su najvažniji.
  • „CI/CD je samo za velike kompanije.“ Hostovani alati poput GitHub Actions trebaju kratak konfiguracijski fajl za podešavanje, i mali timovi ih koriste svakodnevno. Napor donose testovi, a ne alat.
  • „Automatsko postavljanje znači da niko ništa ne provjerava.“ Dobri pipeline-i dodaju provjere, a ne uklanjaju ih. Mnogi timovi zadržavaju ljudsko odobravanje prije produkcije.
  • „Ako je pipeline zelen, aplikacija radi.“ To znači da su automatske provjere prošle. I dalje biste trebali sami isprobati promjenu, idealno u pregledu ili na stagingu.
  • „CI/CD zamjenjuje backupe.“ Ne zamjenjuje. Loša migracija baze koja prođe testove i dalje može oštetiti stvarne podatke. Zadržite backupe i način da se vratite na prethodno stanje.

Šta tražiti od vašeg AI alata za izradu

  • „Napiši automatske testove za registraciju, prijavu i blagajnu, i pokaži mi kako ih pokrenuti.“
  • „Postavi GitHub Actions workflow koji instalira zavisnosti, gradi aplikaciju i pokreće testove na svakom pull requestu.“
  • „Dodaj provjeru tipova i linter u pipeline i neka padne na greškama.“
  • „Objasni običnim jezikom šta svaki korak pipeline-a radi.“
  • „Šta se dešava ako deploy padne napola? Kako da se vratim?“
  • „Provjeri da nijedna tajna nije upisana u repozitorijum niti ispisana u logovima pipeline-a.“

Ako vaša aplikacija koristi API ključeve, pipeline ih također treba, pohranjene kao šifrovane tajne u CI alatu, nikada u konfiguracijskom fajlu. Pogledajte varijable okruženja i tajne.

CI/CD i Mythex

Mythex ne pokreće CI pipeline za vas, ali pokriva nekoliko istih potreba na svoj način:

  • Checkpointi. Nakon svakog uspješnog poteza agenta, Mythex sačuva git checkpoint, a Vrati na ovu tačku vraća projekat unazad ako je promjena pošla po zlu. Pogledajte Chat.
  • App Testing. Ukucajte /test i agent klikće kroz vaš živi pregled kao korisnik i prijavljuje pokvarene tokove, što je korisno prije svakog objavljivanja. Pogledajte App Testing.
  • Objavljivanje je namjeran korak. Promjene se prvo pojavljuju u privatnom pregledu; vaša javna aplikacija se ažurira tek kada ponovo objavite, što je bliže kontinuiranoj isporuci nego kontinuiranom postavljanju.
  • GitHub sinhronizacija (Pro). Sinhronizujte projekat s GitHub repozitorijumom i možete dodati vlastite GitHub Actions workflow-e za pokretanje testova pri svakom guranju. Pogledajte GitHub i izvoz.

Za listu šta testirati ručno prije lansiranja pogledajte kako testirati aplikaciju prije lansiranja, a za rad s verzijama kako koristiti Git s aplikacijom izgrađenom uz AI.

Pitanja

Šta znači CI/CD?

CI znači kontinuirana integracija: svaka promjena koda se često spaja i automatski gradi i testira. CD znači kontinuirana isporuka ili kontinuirano postavljanje: promjene koje prođu testove automatski se pripremaju za izdanje (isporuka) ili puštaju korisnicima bez ručnog koraka (postavljanje).

Koja je razlika između kontinuirane isporuke i kontinuiranog postavljanja?

Kod kontinuirane isporuke svaka promjena koja prođe pipeline spremna je za izdanje, ali osoba i dalje odlučuje kada će biti puštena uživo. Kod kontinuiranog postavljanja svaka promjena koja prođe ide uživo automatski, bez ljudskog odobravanja.

Treba li mi CI/CD za malu aplikaciju izgrađenu uz AI?

Ne od prvog dana. Mala aplikacija s nekoliko korisnika može proći s testiranjem u pregledu i ručnim objavljivanjem. CI/CD se isplati kada više ljudi mijenja kod, kada stvarni kupci zavise od aplikacije ili kada stalno kvarite stvari koje su ranije radile.

Koji se alati koriste za CI/CD?

Uobičajeni su GitHub Actions, GitLab CI/CD, CircleCI i Jenkins, plus ugrađeni deploy pipeline-i hosting platformi. Svi obavljaju isti osnovni posao: automatski izvršavaju listu koraka kad god se kod promijeni.

Mythex · Pricing · Izradite bilo šta uz AI · Šabloni za web stranice i aplikacije · Mythex u poređenju · Rječnik izrade aplikacija uz AI · Besplatni alati za izradu aplikacija uz AI · English

English አማርኛ العربية Български বাংলা Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski 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 简体中文 繁體中文(香港) 繁體中文(台灣)