Jenkins Csővezeték-oktatóanyag: Létrehozás JenkinsFájl (Példa)

⚡ Okos összefoglaló

Jenkins A folyamatláncok egyetlen rendezett sorozatban építik fel, tesztelik és telepítik a feladatokat, amelyek kódként futnak. JenkinsA projekt mellett véglegesített fájl ezt a szekvenciát egy áttekinthető, verziózott kézbesítési definícióvá alakítja.

  • 🔘 Csővezeték: Összefüggő események csoportja, ahol minden feladat az előzőtől függ.
  • ☑️ Jenkinsfájl: Egy tartományspecifikus nyelven írt szövegfájl, amely tartalmazza az összes folyamatlépést.
  • ✅ Két szintaxis: A deklaratív fix hierarchiát kínál; szkriptelt kereskedési struktúra a következőkhöz: Groovy kontroll.
  • 🧪 Négy kifejezés: A csővezeték, csomópont, szakasz és lépés megnevezi az áramlást, a gépet, a fázist és a feladatot.
  • 🇧🇷 Beállítási útvonal: Telepítsd a build pipeline bővítményt, adj hozzá egy pipeline nézetet, láncold össze a feladatokat, és futtasd.
  • 📌 Gyakorlatok: Az anyagmunkát egy csomópontblokkban, a nem beállítási munkát egy szakaszban tárolja, és a bemeneteket időtúllépések közé csomagolja.

Jenkins csővezeték kódként definiálva egy Jenkinsfilé

Mi a Jenkins Csővezeték?

Jenkins A Pipeline olyan bővítmények kombinációja, amelyek támogatják az integrációt és a megvalósítást. folyamatos szállítóvezetékekEz egy bővíthető automatizálási szerver egyszerű és összetett kézbesítési folyamatok létrehozásához kódként a DSL pipeline-on keresztül. A pipeline egy sorozatban összekapcsolt események csoportja.

Mi az a folyamatos szállítási csővezeték? Hogyan működik?

egy Jenkins A folyamatban minden feladatnak vagy eseménynek valamilyen függősége van legalább egy vagy több eseménytől, ahogy az alábbi ábra is mutatja.

A folyamatos szállítási folyamat állapota a build, deploy, test és release rendszerben történik. Jenkins
Működik Jenkins Folyamatos szállítóvezetékek

A fenti kép egy folyamatos szállítási folyamatot ábrázol. Jenkins, amely build (építés), deploy (telepítés), test (teszt) és release (kiadás) nevű állapotokból áll. Minden állapotnak megvannak a saját eseményei, amelyek sorrendben futnak.

Egy folyamatos kézbesítési folyamat automatikusan lebonyolítja ezt a folyamatot, a szoftvert a verziókövetéstől a kiadásig egyetlen ismétlődő buildsorozaton keresztül szállítva. tesztelés és a telepítési szakaszok.

Mi az a JenkinsFájl?

Jenkins a csővezetékek egy szövegfájlban definiálhatók, melynek neve JenkinsFájl. Ez a fájl egy adott domainhez tartozó nyelven (DSL) írt kódként fejezi ki a folyamatot, és tartalmazza a folyamat futtatásához szükséges összes lépést.

A használat előnyei JenkinsA fájlok a következők:

  • egy JenkinsA fájl minden ághoz létrehozhat folyamatokat, és végrehajthat pull requesteket.
  • Áttekintheti a Jenkins kód a folyamatban
  • Auditálhatja a Jenkins csővezeték
  • Ez a folyamat egyetlen forrása, és több felhasználó módosíthatja.

Egy csővezeték definiálható a Jenkins webes felhasználói felületen vagy egy JenkinsVerziókövetésre véglegesített fájl. Egy minimális deklaratív fájlnak rögzített alakja van – egy folyamatblokk, egy ügynök és fázisonként egy szakaszt tartalmazó szakaszok.

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying'
            }
        }
    }
}

A repository root-mappájába mentés után a folyamat verzióját a kóddal kell végrehajtani.

Deklaratív és szkriptelt folyamatszintaxis

Kétféle típus létezik Jenkins a definiálásához használt folyamatszintaxis JenkinsFájlt.

  1. Nyilatkozatos
  2. Szkriptelt

Nyilatkozatos

A deklaratív folyamatszintaxis az egyszerűbb megoldás. Egy előre meghatározott hierarchiát követ, és továbbra is egyszerűen vezérli a folyamat végrehajtásának minden aspektusát.

Szkriptelt

Szkriptelt Jenkins a csővezeték fut a Jenkins vezérlőt egy könnyű végrehajtón keresztül, nagyon kevés erőforrást használva a folyamat atomi parancsokká alakításához. A kettő meglehetősen eltérően van megírva, ezért válasszon egyet JenkinsFájlt.

⚠️ Jegyzet: Jenkins most felhívja a mester a ellenőr.

Miért használja Jenkins Csővezeték?

Jenkins egy nyitott folyamatos integrációs szerver ami automatizálja szoftverfejlesztési folyamatokTöbbet is létrehozhat automatizálási munkák a használati eseteidből, és egyetlen folyamatként futtathatod őket.

Íme az okok, amiért érdemes használni Jenkins csővezeték:

  • A folyamatot kódként valósítják meg, így több felhasználó is szerkesztheti és végrehajthatja.
  • A folyamatok robusztusak: ha a szerver váratlanul újraindul, a folyamat automatikusan folytatódik.
  • Szüneteltetheti a folyamatot, és addig tarthatja, amíg a felhasználó nem ad bemenetet.
  • A csővezetékek nagy projekteket támogatnak: több feladatot futtatnak, sőt, akár ciklusokban is használhatják a csővezetékeket.

Jenkins Csővezeték Concepts

Négy kifejezés ismétlődik minden Jenkinsfájl:

kifejezésLeírás
CsővezetékEgy kódként írt utasításkészlet, amely lefedi a folyamatos szállítás érdekében a teljes build folyamatot. Egy folyamattal buildelheted, tesztelheted és leszállíthatod az alkalmazást.
CsomópontA gép, amelyen Jenkins A futtatásokat csomópontnak nevezzük. A csomópont blokkot főként szkriptelt folyamatfolyamat szintaxisban használják.
SzínpadEgy fázisblokk lépések sorozatát tartalmazza. A build, tesztelés és telepítési folyamatok mindegyike egy fázisban fog össze, amelyet a folyamat nézet is megjelenít.
LépésEgyetlen feladat, amely egy adott folyamatot hajt végre egy meghatározott időpontban. A folyamatfolyamat lépések sorozata.

Telepítse a Build Pipeline bővítményt Jenkins

A build pipeline bővítmény létrehozza a bejövő és kimenő feladatok folyamatnézetét, és manuális beavatkozási triggereket ad hozzá.

Telepítse a következőképpen:

Step 1) A bővítmény beállításait a következő címen találja: kezel Jenkins > Bővítmények kezelése, lásd lent.

⚠️ Verzió megjegyzés: jelenlegi Jenkins kiadások címkéje ez a képernyő kezel Jenkins → Bővítmények; a fülek az itt leírtak szerint viselkednek.

Bővítmények kezelése oldalon Jenkins hol találhatók a build pipeline bővítmény beállításai

Ha már telepítette a bővítményt, az a telepített fül alatt látható.

Telepített fül a Jenkins bővítménykezelő, amely felsorolja a build pipeline bővítményt

Step 2) Ha a bővítmény még nincs telepítve, akkor az Elérhető fül alatt jelenik meg.

A telepített bővítménnyel:

Hogyan lehet létrehozni Jenkins Csővezeték

Miután bejelentkezett a saját fiókjába Jenkins műszerfal:

Step 1) Kattintson a bal oldalon található „+” gombra Jenkins irányítópult egy folyamat létrehozásához.

Plusz gomb a Jenkins új nézet hozzáadásához használt irányítópult

Step 2) Töltse ki az új nézet párbeszédablakot:

  1. Adj nevet a folyamatnézetnek. Mi a következőnek fogjuk hívni:Guru99 Pipeline” ehhez a demóhoz.
  2. Válassza a Folyamatnézet létrehozása lehetőséget a Beállítások alatt
  3. Kattintson az OK gombra, ahogy az alább látható.

Új nézet párbeszédpanel a megadott folyamatnézet nevével és a „Folyamatnézet létrehozása” lehetőséggel

Step 3) A következő oldal további konfigurációs részleteket kér. Fogadja el az alapértelmezett beállításokat, és győződjön meg róla, hogy a beállítások alatt az első feladatot választotta.

Kattintson az Alkalmaz, majd az OK gombra.

Folyamatnézet konfigurációs oldalának létrehozása az alapértelmezett beállításokkal és az első kiválasztott feladattal

Ezután megjelenik az elem minta folyamatábrája:

Minta Jenkins létrehozva a következőhöz: build pipeline nézet Guru99 Csővezeték-elem

Pipeline build futtatása

Step 1) Először láncold össze a feladataidat: nyisd meg az első feladatodat, és kattints a konfigurálás gombra.

Konfigurálja a linket az elsőn Jenkins a láncolt munkák elindításához használt munka

Step 2) Most a Build Triggerek alatt jelölje be a Build a többi projekt felépítése után lehetőséget.

Eseményindítók létrehozása szakasz, ahol be van jelölve a „Létrehozás más projektek felépítése után” opció

Most már létezik egy lánc az összes munkádhoz.

Step 3) Telepítse a Build Pipeline nézet bővítményt, ha még nincs telepítve.

Step 4) A Jenkins irányítópulton hozzon létre egy nézetet a „+” gombbal, válassza a Folyamatnézet létrehozása lehetőséget, majd kattintson az OK gombra.

Új nézet párbeszédpanel a Felépítési folyamat nézet opcióval

Step 5) A Folyószám nézet konfigurációja alatt keresse meg a Folyószám folyamata elemet.

A Folyamatfolyamat alatt válassza ki a futtatni kívánt kezdeti feladatot – azt a feladatot, amely az 1. és 2. lépésben a többihez van láncolva.

Csővezeték áramlási beállításai Guru99 Az 1. projektet választottuk ki kezdeti feladatként

Guru99 Az 1. projektet itt választottuk ki kezdeti feladatként, így a láncolt feladatok egyesével futnak.

Amíg a folyamat fut, piros és zöld szimbólumok jelzik az állapotát: a piros a sikertelenséget, a zöld a sikerességet jelenti.

Ebben a példában a gomb zöld, tehát a folyamat sikeresen befejeződött.

Zöld állapotgomb, amely sikeres állapotot jelez Jenkins csővezeték-út

futás Jenkins csővezeték

Kattintson a Futtatás gombra a futtatásához Jenkins folyamat. Valahogy így fog kinézni:

Futtatás gomb a Jenkins építési folyamat nézet

A fenti példa egy egyszerű „helloworld.java” programot épít. A valódi projektek sokkal összetettebb folyamatokat láncolnak össze, ahogy az alábbi teljes nézet is mutatja.

Befejezett Jenkins build pipeline nézet, amely sorban mutatja az összes láncolt feladatot

⚠️ Verzió megjegyzés: A Build Pipeline nézetbővítmény a láncolt szabad stílusú feladatok megjelenítésének hagyományos módja; a jelenlegi gyakorlat ugyanazt a folyamatot definiálja egy JenkinsFájl. Kék Ocean már nincs továbbfejlesztve.

Bevált gyakorlatok a következő használatával: Jenkins Csővezeték

Hét szokás teszi karbantarthatóvá a csővezetéket:

  • Használd az eredetit Jenkins Csővezeték
  • Fejlessze a folyamatot kódként
  • A folyamatban lévő minden nem beállítási munkának egy szakaszblokkon belül kell történnie.
  • A csővezetékben végzett bármilyen anyagmunkát egy csomóponti blokkon belül kell elvégezni.
  • Ne használjon bemenetet egy csomópont blokkon belül.
  • Soha ne állítson be környezeti változókat env globális változóval
  • Csomagolja be a bemeneteket egy időkorlátba

GYIK

Átvizsgál egy adattárat, és megtalálja az összes olyan ágat, amely tartalmazza a JenkinsFájl, és mindegyikhez létrehoz egy feladatot. Az elágazás viselkedése az adott fájlban található BRANCH_NAME változóból származik.

Tárolja őket a Jenkins A hitelesítő adatok a credentials() helperrel tárolódnak és egy környezeti blokkban olvashatók. Az érték futási időben kerül beillesztésre és maszkolásra a naplóban, így a fájlban nincs jelszó.

A szakaszok befejezése után fut le, függetlenül az eredménytől. Az olyan feltételek, mint az always (mindig), success (success), failure (hiba) és instabil (unstabil) lehetővé teszik, hogy egyetlen fájl tegyen közzé jelentéseket, archiválja a műtermékeket és értesítse a csapatot ismétlés nélkül.

Igen. Egy párhuzamos blokk egy adott szakaszon belül egyszerre futtatja az ágait, ami a böngészők között elosztott csomagoknak felel meg. Minden ághoz ügynökre van szükség, így a futási idő csak akkor csökken, amikor a végrehajtók szabadok.

Küldd el a deklaratív linter végpontra, vagy nyisd meg a Replay-t egy korábbi futtatáson, szerkeszd a szkriptet és futtasd anélkül, hogy a repositoryhoz hozzáérnél. Mindkettő korán észreveszi a szintaktikai hibákat.

Egy mesterséges intelligencia asszisztens képes hosszú konzolnaplót, csoportos ismétlődő veremeket olvasni tracés nevezze meg a hiba kezdetét. Jelzi a szakaszos teszteket is. Erősítsen meg minden javaslatot a nyers napló alapján.

Igen. Másodpilóta Egy deklaratív vázat készít egy megjegyzésből, amely elnevezi a szakaszokat, és végrehajtja az olyan lépéseket, mint a checkout és a shell parancsok. RevTekintse meg az ügynök címkéit, hitelesítő adatait és időtúllépéseit, amelyeket a javaslatok gyakran rosszul tippelnek ki.

Ha ugyanaz a blokk három vagy több lapon jelenik meg JenkinsFájlok. Egy megosztott könyvtár ezt a logikát egyetlen verziózott adattárban tárolja, így a javítás minden projekthez eljut, és minden fájl csak a saját szakaszait őrzi meg.

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