Juhendid

Mis on CI/CD? Pidev integreerimine ja tarne lihtsalt selgitatud

CI/CD on tarkvara tarnimise viis, kus iga koodimuudatus ehitatakse, testitakse ja – kui see läbib kontrollid – valmistatakse väljalaskeks või lastakse elavaks automaatselt. CI (pidev integreerimine) tähendab, et muudatused ühendatakse sageli ja iga kord kontrollitakse automaatsete testidega. CD (pidev tarne või juurutamine) tähendab, et läbitud muudatused pakitakse kokku ja suunatakse kasutajate poole väikese või olematu käsitsi tööga.

Põhimõte on lihtne: vead tuleb tabada minutite jooksul pärast nende tegemist, mitte nädalaid hiljem, kui klient need avastab.

Miks CI/CD AI-ga ehitamisel oluline on

AI ehitajad teevad koodimuudatusi kiiresti. Üks prompt võib puudutada kümmet faili. See kiirus on suurepärane, kuni muudatus kassalehele kahjustab tihedalt sisselogimislehte ja keegi ei märka seda enne, kui kasutaja sulle e-kirja kirjutab.

CI/CD on täpselt selleks kaitsevõrk. Selle asemel, et loota, et iga muudatus on korras, käivitab torujuhe iga kord samad kontrollid:

  • Kas rakendus ehitub ikka ilma vigadeta?
  • Kas automaatsed testid ikka läbivad?
  • Kas kood järgib projekti reegleid (tüübid, vormindus, turvakontrollid)?

Kui mõni kontroll ebaõnnestub, peatatakse muudatus enne, kui see jõuab kasutajateni. Mida kiiremini su kood muutub, seda väärtuslikum on kontroll, mis ei väsi ja ei jäta ühtegi sammu vahele.

Igapäevane võrdlus

Mõtle leivapagarile, kes müüb leiba poodidele iga hommik.

  • Ilma CI/CD-ta töötab iga pagar nädal aega omaette retseptide kallal, siis kõik ühendavad need reedel õhtul ja loodavad, et leib ikka kerkib. Kui ei kerki, ei tea keegi, kelle muudatus selle põhjustas.
  • CI-ga küpsetatakse iga väike retseptimuudatus kohe katseleivana ja kontrollitakse – maitset, kaalu, kuju. Halb muudatus tabatakse samal päeval ja tead täpselt, milline see oli.
  • CD-ga lähevad kontrolli läbinud leivad otse kullerauto peale, pakitud ja märgistatud alati ühtmoodi, mitte nii, et keegi pakib kaste käsitsi kell viis hommikul.

Kontroll ei tee pagareid paremaks. See teeb nende vead odavaks.

Kuidas CI/CD torujuhe töötab

Torujuhe (pipeline) on sammude nimekiri, mida CI/CD teenus käivitab automaatselt, kui midagi juhtub – tavaliselt siis, kui keegi lükkab koodi repositooriumi, näiteks GitHubi. Tüüpiline torujuhe näeb välja selline:

SammMis juhtubMida see püüab
1. KäivitusKood lükatakse üles või avatakse pull request—
2. PaigaldusVärske masin laadib alla koodi ja selle sõltuvusedPuuduvad või katkised paketid
3. EhitusRakendus kompileeritakse või pakitakseSüntaksi- ja tüübivead, katkised impordid
4. TestidKäivitatakse automaatsed testidFunktsioonid, mis enam ei tööta
5. KontrollidLintimine, vormindus, turvaskannidStiiliprobleemid, teadaolevad haavatavad paketid, lekkinud võtmed
6. Juurutus stagingusseRakendus läheb tootmise testkoopiasseProbleemid, mis ilmnevad ainult päris keskkonnas
7. Juurutus tootmisseRakendus läheb elavaks – automaatselt või pärast kinnitust—

Iga samm töötab puhtal masinal, mitte kellegi sülearvutis, nii et „minu arvutis töötab" ei ole enam vabandus. Kui samm ebaõnnestub, peatub torujuhe ja teavitab muudatuse teinud inimest.

Sammud on määratletud konfiguratsioonifailis, mis elab koos koodiga. GitHub Actionsis on see näiteks YAML-fail repositooriumi kaustas .github/workflows.

Pidev tarne vs pidev juurutamine

„CD" on mitmetähenduslik ja inimesed kasutavad seda mõlemal viisil:

Pidev tarnePidev juurutamine
Testid käivituvad automaatseltJahJah
Väljalase pakitakse automaatseltJahJah
Läheb elavaks automaatseltEi – inimene klõpsab „vabasta"Jah – iga läbitud muudatus läheb välja
SobibEnamikule väikestele meeskondadele, rakendustele makstud kasutajategaMeeskondadele, kellel on tugev testikate ja jälgimine

Pidev juurutamine töötab hästi ainult siis, kui testid on head. Kui su testid ei kata ostuprotsessi, saadab pidev juurutamine rahulikult välja katkise ostuprotsessi.

Näide: broneerimisrakendus torujuhtmega

Oletame, et sul on ilusalongi broneerimisrakendus ja selle kood on GitHubi repositooriumis. Palud AI ehitajal: „Lisa esmakordsetele klientidele 10% allahindlus."

  1. Muudatus lükatakse uude harusse ja avatakse pull request.
  2. Torujuhe käivitub. See paigaldab paketid ja ehitab rakenduse – see läbib.
  3. See käivitab testid. Üks test, „püsiklient maksab täishinda", ebaõnnestub: allahindlust rakendatakse kõigile.
  4. Pull request näitab punast risti. Muudatust ei saa ühendada.
  5. Palud AI-l selle parandada. See lükkab parandused üles, torujuhe käivitub uuesti ja kõik läbivad.
  6. Muudatus ühendatakse. Torujuhe juurutab selle testkeskkonda, kus proovid testbroneeringut.
  7. Kinnitad ja see juurutatakse tootmisse.

Ilma torujuhtmeta oleks 3. samm juhtunud sinu klientide rahakotis.

Põhimõisted

MõisteTähendus
TorujuheAutomaatne sammude jada, mis käivitub iga muudatuse korral.
EhitusLähtekoodi muutmine käivitatavaks kujuks.
AutomaattestKood, mis kontrollib, et teine kood teeb seda, mida peab.
Pull request (PR)Ettepanek muudatuseks, mida teised (ja torujuhe) enne ühendamist vaatavad üle. Vt mis on GitHub.
HaruEraldi muudatuste rida, nii et pooleli töö ei mõjuta põhikoodi.
StagingSinu rakenduse privaatne koopia, mis peegeldab tootmist, et muudatusi enne kasutajaid kontrollida.
TootmineElav rakendus, mida su kasutajad kasutavad.
Tagasipööramine (rollback)Eelmisele töötavale versioonile naasmine, kui väljalase läheb valesti.
Roheline / punane ehitusTorujuhtme käivitus, mis läbis / ebaõnnestus.

Levinud väärarusaamad

  • „CI/CD tähendab, et mu rakendus on testitud." Torujuhe käivitab ainult neid teste, mis sul on. Kui testid puuduvad, tõestab CI ainult seda, et rakendus ehitub – mitte midagi enamat. Palu AI-l kirjutada testid kõige olulisematele voogudele.
  • „CI/CD on ainult suurtele ettevõtetele." Hostitud tööriistad nagu GitHub Actions seadistatakse lühikese konfiguratsioonifailiga ja väikesed meeskonnad kasutavad neid pidevalt. Vaeva nõuavad testid, mitte tööriistad.
  • „Automaatne juurutamine tähendab, et keegi ei kontrolli midagi." Head torujuhtmed lisavad kontrolle, mitte ei eemalda neid. Paljud meeskonnad hoiavad tootmise ees inimliku kinnitusetapi.
  • „Kui torujuhe on roheline, siis rakendus töötab." See tähendab, et automaatsed kontrollid läbisid. Peaksid muudatuse ikka ise proovima, eelistatult eelvaates või stagingus.
  • „CI/CD asendab varundamise." Ei asenda. Andmebaasi halb migratsioon, mis läbib testid, võib ikka päris andmeid kahjustada. Hoia varundusi ja viisi tagasipööramiseks.

Mida küsida oma AI ehitajalt

  • „Kirjuta automaattestid registreerimise, sisselogimise ja ostuprotsessi jaoks ja näita, kuidas neid käivitada."
  • „Seadista GitHub Actions töövoog, mis paigaldab sõltuvused, ehitab rakenduse ja käivitab testid igal pull requestil."
  • „Lisa torujuhtmesse tüübikontroll ja linter ning tee nad vigade korral ebaõnnestuvaks."
  • „Selgita lihtsas keeles, mida torujuhtme iga samm teeb."
  • „Mis juhtub, kui juurutus ebaõnnestub pooleli? Kuidas tagasi pöörata?"
  • „Kontrolli, et ühtegi salasõna pole repositooriumis kõvakodeeritud ega torujuhtme logides välja trükitud."

Kui su rakendus kasutab API-võtmeid, vajab torujuhe neid samuti – salvestatuna krüpteeritud saladustena CI tööriistas, mitte konfiguratsioonifailis. Vt keskkonnamuutujad ja saladused.

CI/CD ja Mythex

Mythex ei käivita sinu eest CI torujuhet, aga katab mitmeid samu vajadusi omal moel:

  • Kontrollpunktid. Pärast iga edukat agendi käiku salvestab Mythex git-kontrollpunkti ja Pöördu tagasi sellesse punkti tagastab projekti, kui muudatus läks valesti. Vt Vestlus.
  • Rakenduse testimine. Kirjuta /test ja agent klõpsab läbi su elava eelvaate nagu kasutaja ning teatab katkistest voogudest – kasulik enne iga avaldamist. Vt Rakenduse testimine.
  • Avaldamine on tahtlik samm. Muudatused ilmuvad kõigepealt privaatses eelvaates; sinu avalik rakendus uueneb alles siis, kui avaldad uuesti. See on lähemal pidevale tarnele kui pidevale juurutamisele.
  • GitHubi sünkroonimine (Pro). Sünkrooni projekt GitHubi repositooriumiga ja saad lisada oma GitHub Actions töövoogu, mis käivitab testid igal push'il. Vt GitHub ja eksport.

Checklist, mida enne avalikustamist käsitsi testida, on lehel kuidas testida oma rakendust enne käivitamist ja versioonihaldusega töötamise kohta vaata kuidas kasutada Gitti AI-ga ehitatud rakendusega.

Küsimused

Mida tähendab CI/CD?

CI tähendab pidevat integreerimist: iga koodimuudatus ühendatakse sageli ja automaatselt ehitatakse ning testitakse. CD tähendab pidevat tarnet või pidevat juurutamist: testid läbivad muudatused valmistatakse automaatselt ette väljalaskeks (tarne) või lastakse kasutajatele ilma käsitsi sammuta (juurutamine).

Mis vahe on pideval tarnel ja pideval juurutamisel?

Pideva tarne korral on iga torujuhtmest läbi tulnud muudatus väljalaskeks valmis, aga inimene otsustab ikka, millal see elavaks tehakse. Pideva juurutamise korral läheb iga läbitud muudatus automaatselt elavaks, ilma inimliku kinnitusetapita.

Kas väikeses AI-ga ehitatud rakenduses on CI/CD vajalik?

Esimesel päeval mitte. Väike rakendus mõne kasutajaga saab hakkama, kui testid eelvaates ja avaldad käsitsi. CI/CD tasub end ära, kui koodi muudavad mitu inimest, kui pärisklientidel on rakendusest sõltuvus või kui sa katkestad pidevalt asju, mis varem töötasid.

Milliseid tööriistu CI/CD jaoks kasutatakse?

Levinud on GitHub Actions, GitLab CI/CD, CircleCI ja Jenkins, samuti hostingplatvormide sisseehitatud juurutustorud. Kõik teevad sama põhitööd: käivitavad automaatselt sammude nimekirja iga kord, kui kood muutub.

Mythex · Pricing · Ehita kõike AI-ga · Veebilehtede ja rakenduste mallid · Mythex võrdluses · Tehisintellektiga rakenduste ehitamise sõnastik · Tasuta tööriistad tehisintellektiga rakenduste ehitamiseks · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) فارسی 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 简体中文 繁體中文(香港) 繁體中文(台灣)