Bevezetés a Jenkins 2-be és a csővezetékek erejébe

1. Áttekintés

Ebben a cikkben a csővezetékek használatát mutatjuk be a Jenkins segítségével történő folyamatos szállítás példáján keresztül.

Egy egyszerű, mégis hasznos csővezetéket építünk a mintaprojektünkhöz:

  • Összeállítás
  • Egyszerű statikus elemzés (az összeállítással párhuzamosan)
  • Egységvizsgálatok
  • Integrációs tesztek (párhuzamosan az egység tesztekkel)
  • Telepítés

2. Jenkins beállítása

Először le kell töltenünk a Jenkins legújabb, stabil verzióját (2.73.3 a cikk írásakor).

Navigáljunk abba a mappába, ahol a fájlunk található, és futtassuk a java -jar jenkins.war parancs. Ne feledje, hogy a Jenkins-t nem használhatjuk a felhasználók kezdeti beállítása nélkül.

Miután feloldottuk a Jenkins-t az eredeti adminisztrátor által létrehozott jelszó használatával, ki kell töltenünk az első rendszergazda felhasználó profilinformációit, és feltétlenül telepítenünk kell az összes javasolt plugint.

Most egy új, használatra kész Jenkins telepítéssel rendelkezünk.

A Jenkins összes elérhető verziója megtalálható itt.

3. Csővezetékek

A Jenkins 2 egy nagyszerű funkcióval rendelkezik Csővezetékek, ami nagyon kibővíthető, ha meg kell határoznunk a projekt folyamatos integrációs környezetét.

A Pipeline egy másik módszer a Jenkins-lépések kóddal történő meghatározására, és automatizálja a szoftver telepítésének folyamatát.

Tartományspecifikus nyelvet (DSL) használ két különböző szintaxissal:

  • Deklaratív csővezeték
  • Szkriptelt csővezeték

Példáinkban használni fogjuk a Szkriptelt csővezeték amely a Groovy-val felépített imperatívabb programozási modellt követi.

Menjünk át a Csővezeték csatlakoztat:

  • a csővezetékeket egy szöveges fájlba írják és kódként kezelik; ez azt jelenti, hogy a későbbiekben hozzáadhatók a verziókezelőhöz és módosíthatók
  • a Jenkins szerver újraindítása után is megmaradnak
  • opcionálisan szüneteltethetjük a csővezetékeket
  • olyan összetett követelményeket támogatnak, mint például a munka párhuzamos elvégzése
  • a Pipeline plugin kiterjeszthető vagy integrálható más bővítményekkel is

Más szavakkal, a Pipeline projekt létrehozása azt jelenti, hogy írunk egy szkriptet, amely egymás után alkalmazza a folyamat egyes lépéseit.

A csővezetékek használatának megkezdéséhez telepítenünk kell a Pipeline plugint amely lehetővé teszi az egyszerű és összetett automatizálás összeállítását.

Opcionálisan rendelkezhetünk a Pipeline Stage View-nal is, így amikor építünk egy futtatást, láthatjuk az összes konfigurált fázist.

4. Gyors példa

Például egy kis Spring Boot alkalmazást fogunk használni. Ezután létrehozunk egy csővezetéket, amely klónozza a projektet, felépíti és több tesztet lefuttat, majd futtatja az alkalmazást.

Telepítsük a Checkstyle,Statikus Elemzés Gyűjtő és JUnit beépülő modulok, amelyeket hasznos gyűjteni Checkstyle eredményeket, készítsen egy kombinált elemzési grafikont a tesztjelentésekről, és illusztrálja a sikeresen végrehajtott és sikertelen teszteket.

Először értsük meg itt a Checkstyle okát: ez egy fejlesztő eszköz, amely segít a programozóknak jobb Java-kódot írni az elfogadott és jól ismert szabványok szerint.

A Static Analysis Collector egy olyan kiegészítő, amely különböző elemzési eredményeket gyűjt és az eredményeket egy kombinált trenddiagramba nyomtatja. Ezenkívül a beépülő modul ezekről a csoportosított eredményekről gondoskodik az egészségügyi jelentésekről és a stabilitás kiépítéséről.

Végül a JUnit A beépülő modul egy olyan kiadót biztosít, amely felhasználja az összeállítás során generált XML tesztjelentéseket, és részletes és értelmes információt ad ki a projekt tesztjeihez képest.

Mi is konfigurálunk Checkstyle az alkalmazásunkban pom.xml:

 org.apache.maven.plugins maven-checkstyle-plugin 2.17 

5. Pipeline Script készítése

Először létre kell hoznunk egy új Jenkins munkahelyet. Ne felejtsük el kiválasztani Csővezeték típusként, mielőtt megnyomná az OK gombot, a jelen képernyőkép szerint:

A következő képernyőn további részletek tölthetők ki a Jenkins-munkánk különböző lépéseiről, például a leírás, kiváltja, néhány speciális projektopciók:

Merüljünk el az ilyen jellegű munka fő és legfontosabb részében a gombra kattintva Csővezeték fülre.

Ezután a meghatározáshoz válassza ki Pipeline script és ellenőrizze Használja a Groovy Sandbox-ot.

Itt található a Unix környezet működő szkriptje:

node {szakasz 'A projekt klónozása' git '//github.com/eugenp/tutorials.git' dir ('spring-jenkins-pipeline') {szakasz ("Összeállítás és elemzés") {párhuzamos 'Összeállítás': {sh " ./mvnw clean install -DskipTests "}, 'Statikus elemzés': {stage (" Checkstyle ") {sh" ./mvnw checkstyle: checkstyle "lépés ([$ class: 'CheckStylePublisher', canRunOnFailed: true, defaultEncoding: '' , egészséges: '100', minta: '** / target / checkstyle-result.xml', egészségtelen: '90', useStableBuildAsReference: true])}}} szakasz ("Tesztek és telepítés") {párhuzamos "Egységtesztek" : {szakasz ("Futó egység tesztek") {próbáld meg {sh "./mvnw test -Punit"} catch (err) {lépés ([$ class: 'JUnitResultArchiver', testResults: '** / target / surefire-reports / TEST- * UnitTest.xml ']) dobás hibája} lépés ([$ class:' JUnitResultArchiver ', testResults:' ** / target / surefire-reports / TEST- * UnitTest.xml '])}},' Integrációs tesztek ' : {szakasz ("Integrációs tesztek futtatása") {try {sh "./mvnw test -Pintegration"} catch (err) {lépés ([$ class: 'JUnitResultArchiver', testResults: '** / tar get / surefire-reports / TEST- '+' * IntegrationTest.xml ']) err dobás lépés ([$ class:' JUnitResultArchiver ', testResults:' ** / target / surefire-reports / TEST- '+' * IntegrationTest .xml '])}} szakasz ("Staging") {sh "pid = \ $ (lsof -i: 8989 -t); kill -TERM \ $ pid "+" || kill -KILL \ $ pid "withEnv (['JENKINS_NODE_COOKIE = dontkill']) {sh 'nohup ./mvnw spring-boot: run -Dserver.port = 8989 &'}}}}}}

Először klónozzuk az adattárat a GitHub-ból, majd megváltoztatjuk a könyvtárat a projektünkre, amelyet hívunk tavasz-jenkins-csővezeték.

Ezután összeállítottuk a projektet és pályázunk Checkstyle elemzés párhuzamos módon.

A következő lépés az egységtesztek és az integrációs tesztek párhuzamos végrehajtását, majd az alkalmazás telepítését jelenti.

A párhuzamosságot a csővezeték optimalizálására és a munka gyorsabb futtatására használják. A Jenkins bevált gyakorlata, hogy egyszerre futtat néhány független akciót, amely sok időt vehet igénybe.

Például egy valós projektben általában sok egység- és integrációs tesztünk van, amelyek hosszabb időt vehetnek igénybe.

Ne feledje, hogy ha bármely teszt nem sikerült, a BUILD is meghiúsultként lesz megjelölve, és a telepítés nem történik meg.

Továbbá használjuk JENKINS_NODE_COOKIE hogy megakadályozzuk alkalmazásunk azonnali leállítását, amikor a csővezeték véget ér.

Ha egy általánosabb szkriptet szeretne látni más rendszereken, nézze meg a GitHub adattárat.

6. Elemzési jelentés

A munka létrehozása után elmentjük a szkriptünket és eltaláljuk Építsd most Jenkins műszerfalunk projekt otthonán.

Íme egy áttekintés az építésekről:

Kicsit lejjebb találjuk a csővezeték szakasznézetét, az egyes szakaszok eredményével:

Minden kimenet akkor érhető el, ha egy színpadi cella fölé viszi az egeret, és a gombra kattint Naplók gombra kattintva megtekintheti az adott lépésben kinyomtatott naplóüzeneteket.

A kódelemzés további részleteit is megtalálhatjuk. Kattintson a kívánt összeállításra a Építsd a történelmet a jobb oldali menüben, és nyomja meg a gombot Checkstyle figyelmeztetések.

Itt 60 kiemelt figyelmeztetést láthatunk, amelyekre kattintva böngészhetők:

A Részletek lapon olyan információk találhatók, amelyek kiemelik a figyelmeztetéseket, és lehetővé teszik a fejlesztő számára, hogy megértse a mögöttük rejlő okokat.

Ugyanígy a teljes tesztjelentés a gombra kattintva érhető el Teszteredmény link. Lássuk a com.baeldung csomag:

Itt láthatjuk az egyes tesztfájlokat, azok időtartamával és állapotával.

7. Következtetés

Ebben a cikkben létrehoztunk egy egyszerű folyamatos szállítási környezetet a statikus kódelemzés és a tesztjelentés futtatásához és megjelenítéséhez a Jenkins-ben egy Csővezeték munka.

Mint mindig, a cikk forráskódja a GitHub oldalon található.


$config[zx-auto] not found$config[zx-overlay] not found