Vodniki

Kaj je CI/CD? Neprekinjena integracija in dostava preprosto pojasnjeni

CI/CD je način izdelave programske opreme, kjer se vsaka sprememba kode samodejno zgradi, preizkusi in – če uspe – pripravi za izdajo ali izda. CI (neprekinjena integracija) pomeni, da se spremembe pogosto združujejo in vsakič preverijo z avtomatiziranimi testi. CD (neprekinjena dostava ali namestitev) pomeni, da se spremembe, ki uspejo, pakirajo in premaknejo proti uporabnikom z malo ali nič ročnega dela.

Smisel je preprost: napake ujeti nekaj minut po nastanku, ne tednov pozneje, ko jih najde stranka.

Zakaj je CI/CD pomemben, ko gradite z AI

Graditelji z AI spremembe kode naredijo hitro. Ena zahteva lahko zadane deset datotek. To je odlično, dokler sprememba strani za blagajno tiho ne pokvari prijavne strani in tega nihče ne opazi, dokler vam stranka ne piše po e-pošti.

CI/CD je varnostna mreža prav za to. Namesto da zaupate, da je vsaka sprememba v redu, cevovod vsakič izvede iste preglede:

  • Ali se aplikacija še vedno gradi brez napak?
  • Ali še vedno uspejo avtomatizirani testi?
  • Ali koda sledi pravilom projekta (tipi, oblikovanje, varnostni pregledi)?

Če katerikoli pregled ne uspe, se sprememba ustavi, preden doseže uporabnike. Hitreje kot se koda spreminja, dragocenejši je pregled, ki se ne utrudi in ne preskoči nobenega koraka.

Vsakdanja primerjava

Pomislite na pekarno, ki vsako jutro dobavlja kruh trgovinam.

  • Brez CI/CD vsak pek en teden sam prilagaja recepte, nato se petek zvečer vse združi in upa, da kruh še vzhaja. Ko ne, nihče ne ve, čigava sprememba je krivec.
  • S CI se vsaka majhna sprememba recepta takoj speče v preizkusni hlebec in preveri – okus, teža, oblika. Slaba sprememba se ujame še isti dan in točno veste, katera je bila.
  • S CD hlebci, ki prestanejo pregled, gredo naravnost na dostavni kombi, pakirani in označeni vedno enako, namesto da nekdo ob peti zjutraj ročno pakira škatle.

Pregled ne naredi pekov boljših. Naredi njihove napake poceni.

Kako deluje cevovod CI/CD

Cevovod (pipeline) je seznam korakov, ki jih storitev CI/CD samodejno izvede, ko se nekaj zgodi – običajno, ko nekdo potisne kodo v repozitorij, kot je GitHub. Tipičen cevovod izgleda takole:

KorakKaj se zgodiKaj ujame
1. SprožitevKoda je potisnjena ali odprta zahteva za spremembo (pull request)—
2. NamestitevČist stroj prenese kodo in njene odvisnostiManjkajoče ali pokvarjene pakete
3. GradnjaAplikacija se prevede ali združiNapake v sintaksi in tipih, pokvarjeni uvozi
4. TestiZaženejo se avtomatizirani testiFunkcije, ki več ne delujejo
5. PreglediPreverjanje sloga in oblikovanja, varnostni preglediTežave s slogom, znani ranljivi paketi, uhajajoči ključi
6. Namestitev na testno okoljeAplikacija gre na testno kopijo produkcijeTežave, ki se pokažejo le v pravem okolju
7. Namestitev v produkcijoAplikacija gre v živo – samodejno ali po odobritvi—

Vsak korak teče na čistem stroju, ne na nečijem prenosniku, tako da izgovor »na mojem računalniku deluje« ne šteje več. Če korak ne uspe, se cevovod ustavi in sporoči tistemu, ki je naredil spremembo.

Koraki so določeni v konfiguracijski datoteki, ki živi skupaj s kodo. V GitHub Actions je to na primer datoteka YAML v mapi .github/workflows repozitorija.

Neprekinjena dostava proti neprekinjeni namestitvi

»CD« je dvoumen in ljudje ga uporabljajo na oba načina:

Neprekinjena dostavaNeprekinjena namestitev
Testi se zaženejo samodejnoDaDa
Izdaja se samodejno pakiraDaDa
Gre v živo samodejnoNe – oseba klikne »izdaj«Da – vsaka uspešna sprememba gre v živo
Primerno zaVečino majhnih ekip, aplikacije s plačljivimi uporabnikiEkipe z dobrim pokritjem testov in spremljanjem

Neprekinjena namestitev deluje dobro samo, če so testi dobri. Če vaši testi ne pokrivajo blagajne, bo neprekinjena namestitev z veseljem objavila pokvarjeno blagajno.

Praktičen primer: aplikacija za rezervacije s cevovodom

Recimo, da imate aplikacijo za rezervacije v salonu, njena koda je v repozitoriju GitHub. Graditelju z AI rečete: »Dodaj 10 % popust za stranke, ki prvič pridejo.«

  1. Sprememba se potisne v novo vejo in odpre se zahteva za spremembo (pull request).
  2. Cevovod se zažene. Namesti pakete in zgradi aplikacijo – to uspe.
  3. Zažene teste. Eden od testov, »stranka, ki se vrača, plača polno ceno«, ne uspe: popust se uporablja za vse.
  4. Zahteva za spremembo prikaže rdeč križ. Sprememba se ne more združiti.
  5. Graditelja prosite za popravek. Potisne popravek; cevovod se ponovno zažene in vse uspe.
  6. Sprememba se združi. Cevovod jo namesti na testno okolje, kjer preizkusite testno rezervacijo.
  7. Odobrite in namestite v produkcijo.

Brez cevovoda bi se korak 3 zgodil v denarnicah vaših strank.

Ključni pojmi

PojemPomen
CevovodSamodejno zaporedje korakov, ki teče ob vsaki spremembi.
Gradnja (build)Pretvarjanje izvorne kode v nekaj, kar lahko teče.
Avtomatiziran testKoda, ki preverja, ali druga koda dela, kar bi morala.
Zahteva za spremembo (pull request, PR)Predlagana sprememba, ki jo drugi (in cevovod) pregledajo, preden se združi. Glejte kaj je GitHub.
VejaLočena linija sprememb, da delo v teku ne vpliva na glavno kodo.
Testno okolje (staging)Zasebna kopija vaše aplikacije, ki posnema produkcijo, za preverjanje sprememb, preden jih vidijo uporabniki.
ProdukcijaŽiva aplikacija, ki jo uporabljajo vaši uporabniki.
Vrnitev (rollback)Vrnitev na prejšnjo delujočo različico, ko izdaja gre narobe.
Zelena / rdeča gradnjaZagon cevovoda, ki je uspel / ni uspel.

Pogoste zmote

  • »CI/CD pomeni, da je moja aplikacija preizkušena.« Cevovod zažene samo teste, ki jih imate. Če testov ni, CI dokaže samo, da se aplikacija gradi – nič več. Od AI zahtevajte teste za tokove, ki so najpomembnejši.
  • »CI/CD je samo za velika podjetja.« Gostovana orodja, kot je GitHub Actions, potrebujejo kratko konfiguracijsko datoteko za nastavitev, majhne ekipe pa jih uporabljajo ves čas. Trud je v testih, ne v orodjih.
  • »Samodejna namestitev pomeni, da nihče ničesar ne preverja.« Dobri cevovodi dodajo preglede, ne odstranijo jih. Mnoge ekipe pred produkcijo ohranijo korak človeške odobritve.
  • »Če je cevovod zelen, aplikacija deluje.« To pomeni, da so avtomatizirani pregledi uspeli. Spremembo vseeno preizkusite sami, idealno v predogledu ali na testnem okolju.
  • »CI/CD nadomešča varnostne kopije.« Ne. Slaba migracija baze, ki prestane teste, lahko še vedno uniči prave podatke. Ohranite varnostne kopije in način za vrnitev.

Kaj vprašati svojega graditelja z AI

  • »Napiši avtomatizirane teste za registracijo, prijavo in blagajno ter mi pokaži, kako jih zaženem.«
  • »Nastavi potek dela v GitHub Actions, ki na vsaki zahtevi za spremembo namesti odvisnosti, zgradi aplikacijo in zažene teste.«
  • »Dodaj preverjanje tipov in linter v cevovod ter naj pri napakah ne uspe.«
  • »Preprosto razloži, kaj počne vsak korak cevovoda.«
  • »Kaj se zgodi, če namestitev na pol spodleti? Kako se vrnem nazaj?«
  • »Preveri, da skrivnosti niso trdo kodirane v repozitoriju ali izpisane v dnevnikih cevovoda.«

Če vaša aplikacija uporablja API ključe, jih cevovod potrebuje tudi – shranjene kot šifrirane skrivnosti v orodju CI, nikoli v konfiguracijski datoteki. Glejte okoljske spremenljivke in skrivnosti.

CI/CD in Mythex

Mythex ne izvaja cevovoda CI za vas, vendar pokriva več istih potreb na svoj način:

  • Kontrolne točke. Po vsakem uspešnem koraku agenta Mythex shrani kontrolno točko git, Vrni na to točko pa projekt povrne nazaj, če je sprememba šla narobe. Glejte Klepet.
  • Testiranje aplikacije. Vpišite /test in agent klikne skozi vaš živi predogled kot uporabnik ter poroča o pokvarjenih tokovih – uporabno pred vsako objavo. Glejte Testiranje aplikacije.
  • Objava je namerni korak. Spremembe se najprej pojavijo v zasebnem predogledu; vaša javna aplikacija se posodobi šele, ko znova objavite – bližje neprekinjeni dostavi kot neprekinjeni namestitvi.
  • Sinhronizacija z GitHubom (Pro). Projekt sinhronizirate z repozitorijem GitHub in lahko dodate lastne poteke dela GitHub Actions, ki zaženejo teste ob vsakem potisku. Glejte GitHub in izvoz.

Za seznam tega, kar je treba ročno preizkusiti pred objavo, glejte kako preizkusiti aplikacijo pred zagonom, za delo z nadzorom različic pa kako uporabljati Git z aplikacijo, zgrajeno z AI.

Vprašanja

Kaj pomeni CI/CD?

CI pomeni neprekinjeno integracijo: vsaka sprememba kode se pogosto združuje in samodejno gradi ter preizkuša. CD pomeni neprekinjeno dostavo ali neprekinjeno namestitev: spremembe, ki uspejo pri preizkusih, so samodejno pripravljene za izdajo (dostava) ali izdane uporabnikom brez ročnega koraka (namestitev).

Kakšna je razlika med neprekinjeno dostavo in neprekinjeno namestitvijo?

Pri neprekinjeni dostavi je vsaka sprememba, ki uspe v cevovodu, pripravljena za izdajo, vendar se še vedno oseba odloči, kdaj jo objaviti. Pri neprekinjeni namestitvi vsaka uspešna sprememba gre samodejno v živo, brez človeškega koraka odobritve.

Ali za majhno aplikacijo, zgrajeno z AI, potrebujem CI/CD?

Ne takoj na začetku. Majhna aplikacija z nekaj uporabniki lahko deluje s testiranjem v predogledu in ročno objavo. CI/CD se izplača, ko več ljudi spreminja kodo, ko se nanjo zanašajo prave stranke ali ko večkrat pokvarite stvari, ki so prej delovale.

Katera orodja se uporabljajo za CI/CD?

Pogosta so GitHub Actions, GitLab CI/CD, CircleCI in Jenkins ter vgrajeni cevovodi za namestitev pri gostiteljskih platformah. Vsi opravljajo isto osnovno nalogo: samodejno izvedejo seznam korakov, kadarkoli se koda spremeni.

Mythex · Pricing · Zgradite karkoli z AI · Predloge za spletna mesta in aplikacije · Mythex v primerjavi · Slovar pojmov gradnje aplikacij z AI · Brezplačna orodja za gradnjo aplikacij z AI · English

English አማርኛ العربية Български বাংলা Bosanski 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 Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)