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.

Code Szemle

  • 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 legfontosabb mutatókat és tracismerd fel őket vizuálisan. Ami még fontosabb, azonnal cselekedj is rajtuk.

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

  • Korán kötelezd el magad, és gyakran soha nem kötelezd el magad hibásan Code
  • 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 feltárni a legfontosabb mutatókat és tracismerd meg őket vizuálisan
  • 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ójú build szerver, amely egyetlen helyen végzi az automatikus buildelést, tesztelést és kiadásokat. Zökkenőmentesen működik a JIRA szoftverekkel és Bitbucket. Bamboo számos nyelvet és technológiát támogat, például 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) adatbázis-integráció, 2) Code 3) Ellenőrzés, Automatizált telepítés, Dokumentumgenerálás és Összeállí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ós folyamat célja a korai elköteleződés és a gyakran soha meg nem történt elköteleződés. Code
  • 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.

Foglald össze ezt a bejegyzést a következőképpen: