Mi az a CI/CD? Folyamatos integráció és folyamatos szállítás

Mi az a folyamatos integráció (CI)?

Folyamatos integráció egy olyan szoftverfejlesztési módszer, ahol a csapattagok naponta legalább egyszer integrálják munkájukat. Ebben a módszerben minden integrációt egy automatizált build ellenőriz a hibák észlelése érdekében. Ezt a koncepciót először több mint két évtizede vezették be, hogy elkerüljék az „integrációs poklot”, amely akkor történik, amikor az integrációt egy projekt végére halasztják.

Folyamatos integráció esetén a kód véglegesítése után a szoftver azonnal felépítésre és tesztelésre kerül. Egy nagy, sok fejlesztővel rendelkező projektben a kötelezettségvállalások egy nap során többször is megtörténnek. Minden commit kód felépítése és tesztelése történik. Ha a teszt sikeres, a build teszteli a telepítést. Ha az üzembe helyezés sikeres, a kód az éles verzióba kerül. Ez a véglegesítés, összeállítás, tesztelés és üzembe helyezés folyamatos folyamat, és innen ered a folyamatos integráció/telepítés elnevezés.

Mi az a folyamatos kézbesítés (CD)?

Folyamatos szállítás egy olyan szoftverfejlesztési módszer, amelyben egy csapat rövid cikluson belül szoftvertermékeket fejleszt. Ez biztosítja, hogy a szoftver bármikor könnyen kiadható legyen. A folyamatos szállítás fő célja a szoftverek jó sebességű és gyakoriságú felépítése, tesztelése és kiadása. Segít csökkenteni a költségeket, az időt és a változtatások végrehajtásának kockázatát azáltal, hogy lehetővé teszi a gyakori frissítéseket a termelésben.

Mi a különbség a CI és a CD között?

CI vs CD: A Continuous Integration (CI) egy olyan megközelítés, amely a kódbázis minden változását automatikusan teszteli, míg a Continuous Delivery (CD) az új funkciók, konfigurációk és hibajavítások módosításainak beszerzésére szolgáló megközelítés.

Fejlesztés CI nélkül vs. Fejlesztés CI-vel

Íme a legfontosabb különbségek a CI használatával és a CI nélkül történő fejlesztés között:

Fejlesztés CI nélkül Fejlesztés CI-vel
Sok hiba Kevesebb hiba
Ritka elkövetések Rendszeres kötelezettségvállalások
Ritka és lassú kiadások Rendszeres működő kiadások
Nehéz integráció Könnyű és hatékony integráció
A tesztelés későn történik A folyamatos integrációs tesztelés korán és gyakran történik.
A felvetett problémákat nehezebb megoldani Találja meg és javítsa ki a problémákat gyorsabban és hatékonyabban.
Rossz a projekt láthatósága Jobb projekt láthatóság

Különbség a fordítás és a folyamatos integráció között

Tevékenységek a folyamatos integrációban
Tevékenységek a folyamatos integrációban

Míg a fordítás csak kódot fordít, a CI a következő tevékenységeket végzi

DB integráció

  • Győződjön meg arról, hogy a DB és a kód szinkronban van
  • DB és tesztadatok automatikus létrehozása.

Kódvizsgálat

  • Biztosítja az egészséges kódbázist
  • Korán felismeri a problémákat, és alkalmazza a legjobb gyakorlatokat

Automatizált telepítés

  • Lehetővé teszi a termék bármikor történő kiadását
  • Folyamatosan demózható állapotú és minden gépen működik

Dokumentum generálás

  • Győződjön meg arról, hogy a dokumentáció naprakész
  • Eltávolítja az égett anyagot az előhívóról
  • Építési jelentéseket és mérőszámokat készít

Összeállítás

A fordítás az a folyamat, amelyet a számítógép végrehajt, hogy egy magas szintű programozási nyelv kódját olyan gépi nyelvvé alakítsa, amelyet a számítógép képes megérteni. Minden célplatformon kódfordítót biztosít.

Mikor építsek?

  • Minden bejelentkezéskor
  • Minden alkalommal, amikor egy függőség megváltozik

Milyen lépései vannak a folyamatos integrációnak?

CI folyamat
CI folyamat
  • Ideális esetben a buildnek a parancssorból kell származnia, és nem függhet integrált fejlesztői környezettől (IDE).
  • A felépítésnek folyamatosan dedikált Cl-kiszolgálóval kell történnie, nem cron-feladattal.
  • A beépített CI-t minden bejelentkezéskor be kell kapcsolni, nem csak éjfélkor
  • A buildnek azonnali visszajelzést kell adnia, és nem igényel fejlesztői erőfeszítést
  • Határozza meg a kulcsfontosságú mutatókat, és kövesse őket vizuálisan. Ennél is fontosabb, hogy azonnal cselekedjen velük

Mire van szüksége a CI folyamat lefolytatásához?

Végezze el a CI folyamatot

Íme a kulcselemek, amelyekre a teljes CI-folyamat végrehajtásához szüksége van:

  • Verzióvezérlő rendszer (VCS): Megbízható módszert kínál a projektben idővel végrehajtott változtatások központosítására és megőrzésére.
  • Virtuális gép: Kellene egy tartalék szerver vagy legalább egy virtuális gép a rendszer felépítéséhez.
  • Hosted CI Tool Solutions: A szerverek és virtuális gépek elkerülése érdekében érdemes a hosztolt CI-eszköz megoldásokat választania. Ez az eszköz segít a teljes folyamat karbantartásában, és könnyebb skálázhatóságot kínál.
  • Eszközök: Ha önkiszolgáló változatot választ, telepítenie kell egyet a sok közül CI eszközök mint Jenkins, TeamCity, Bamboo, GitLab stb.

Hogyan működik a folyamatos integráció?

Biztosan ismeri a régi Nokia telefont. A Nokia korábban egy éjszakai összeépítésnek nevezett eljárást valósított meg. A különböző fejlesztők napközbeni többszöri véglegesítése után a szoftver minden este elkészült. Mivel a szoftvert naponta csak egyszer készítették el, óriási fájdalom a nagy kódbázisban lévő hibák elkülönítése, azonosítása és kijavítása.

Later, a Continuous Integration megközelítést alkalmazták. A szoftver megépítése és tesztelése azonnal megtörtént, amint egy fejlesztő kódot fogadott el. Ha bármilyen hibát észlel, a megfelelő fejlesztő gyorsan kijavíthatja a hibát.

Példa a folyamatos integrációra
Példa a folyamatos integrációra

A CI jellemzői

Íme a folyamatos integráció fontos jellemzői és előnyei:

  • Lehetővé teszi egyetlen forrástár karbantartását
  • Tesztelheti az éles CI környezet klónját
  • Az épített környezetnek közel kell lennie a termelési környezethez.
  • A folyamatos integráció egyik előnye az aktuális build állandó elérhetősége
  • Az összeállítás, a tesztelés és a telepítés teljes folyamatának láthatónak kell lennie az összes veremtulajdonos számára.

Miért érdemes CI-t használni?

Íme a folyamatos integráció használatának fontos okai:

  • Segít jobb minőségű szoftverek készítésében
  • A CI folyamat segít növelni a mérnöki csapatok létszámát és szállítási teljesítményét.
  • A CI lehetővé teszi a szoftverfejlesztők számára, hogy párhuzamosan önállóan dolgozzanak a funkciókon.
  • Segít megismételhető vizsgálatok elvégzésében
  • Növelje a láthatóságot, ami nagyobb kommunikációt tesz lehetővé
  • Segít egy potenciálisan szállítható termék kifejlesztésében teljesen automatizált összeállításhoz
  • Segít csökkenteni a kockázatokat azáltal, hogy gyorsabbá és kiszámíthatóbbá teszi a telepítést
  • azonnali visszajelzés a probléma megérkezésekor
  • Kerülje el az utolsó pillanatban bekövetkező zavart a megjelenés dátumát és időpontját illetően

A CI Systems használatának legjobb gyakorlatai

Íme néhány fontos bevált gyakorlat a megvalósítás során

  • Korai elkövetés és elkövetés Gyakran soha nem követ el hibás kódot
  • Azonnal javítsa ki az összeállítási hibákat
  • Cselekedjen a mérőszámokkal
  • Beépített minden célkörnyezet Hozzon létre műtermékeket minden buildből
  • A szoftver felépítését úgy kell végrehajtani, hogy az automatizálható legyen
  • Ne függjön IDE-től
  • Építsen és teszteljen mindent, amikor megváltozik
  • Az adatbázisséma mindennek számít
  • Segít megtalálni a legfontosabb mutatókat, és vizuálisan követni őket
  • Bejelentkezés gyakran és korán
  • Erősebb forráskód-vezérlés
  • A folyamatos integráció egységteszteket futtat, amikor kódot véglegesít
  • Automatizálja a felépítést, és teszteljen mindenkit
  • Az automatikus üzembe helyezésnek köszönhetően a build gyors legyen

A CI hátrányai

Íme a folyamatos integrációs folyamat hátrányai/hátrányai:

  • A Cl szerverrel való ismerkedéshez kezdeti beállítási idő és betanítás szükséges
  • A megfelelő vizsgálati eljárások kidolgozása elengedhetetlen
  • A jól kidolgozott tesztcsomag sok erőforrást igényelt a Cl szerver számára
  • Ismert folyamatok átalakítása
  • További szervereket és környezeteket igényel
  • Várakozási idők léphetnek fel, ha több fejlesztő szeretné körülbelül egy időben integrálni a kódját

Eszközök a CI folyamathoz

Íme néhány legfontosabb CI/CD eszköz:

Jenkins

Jenkins

Jenkins egy nyílt forráskódú folyamatos integrációs szoftver. A segítségével van megírva Java programozási nyelv. Megkönnyíti a valós idejű tesztelést és jelentéskészítést az elszigetelt változásokról egy hatalmasabb kódbázisban. Ez a szoftver segít a fejlesztőknek abban, hogy gyorsan megtalálják és megoldják a kódbázisuk hibáit, és automatizálják a buildjeik tesztelését.

Bamboo

Bamboo

Bamboo egy folyamatos integrációs összeállítású szerver, amely egyetlen helyen hajt végre – automatikus összeállítást, tesztelést és kiadást. Zökkenőmentesen működik a JIRA szoftverrel és a Bitbucket-tel. Bamboo számos nyelvet és technológiát támogat, mint például a CodeDeply, Docker, Git, SVN, Mercurial, AWS és Amazon S3 vödrök.

TeamCity

TeamCity

TeamCity egy folyamatos integrációs kiszolgáló, amely számos hatékony szolgáltatást támogat. A CI-kiszolgálót akkor is egészségesen és stabilan tartja, ha egyetlen build sem fut. Jobb kódminőséget biztosít minden projekthez

Összegzésként

  • Folyamatos integráció meghatározása: A folyamatos integráció egy olyan szoftverfejlesztési módszer, ahol a csapat tagjai naponta legalább egyszer integrálhatják munkájukat.
  • A CI/CD a folyamatos integráció és a folyamatos kézbesítés vagy a folyamatos telepítés kombinációját jelenti.
  • A CI nélküli fejlesztés sok hibát okoz, míg a CI-vel történő fejlesztés kevesebb hibát kínál
  • A Folyamatos integráció fontos tevékenységei a következők: 1) DB integráció, 2) kódellenőrzés, 3) automatizált telepítés, dokumentumgenerálás és fordítás.
  • A felépítésnek folyamatosan dedikált Cl-kiszolgálóval kell történnie, nem cron-feladattal.
  • A CI fontos elemei a következők: 1) Verzióvezérlő rendszer 2) Virtuális gép 3) Host CI Tool megoldások 4) Eszközök
  • A folyamatos integrációs rendszer lehetővé teszi, hogy egyetlen forrástárat karbantartson
  • A CI/CD folyamat segít jobb minőségű szoftverek készítésében
  • A legfontosabb bevált gyakorlatok Azure A folyamatos integráció folyamata a korai elkövetés, és a gyakran soha nem valósít meg hibás kódot
  • A fő hátránya a CI/CD csővezeték A folyamat az, hogy a jól kifejlesztett tesztcsomag sok erőforrást igényelt a Cl szerver számára
  • Jenkins, Bambook, és a Team City néhány hasznos AWS Continuous Integrációs eszközök.