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?
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
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?
- 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?
Í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.
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 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 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 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.