Úvod do filmu Jenkins 2 a sila potrubí

1. Prehľad

V tomto článku si ukážeme použitie potrubí na príklade nepretržitého doručovania pomocou Jenkinsa.

Chystáme sa vytvoriť jednoduchý, ale celkom užitočný kanál pre náš vzorový projekt:

  • Kompilácia
  • Jednoduchá statická analýza (paralelne s kompiláciou)
  • Jednotkové testy
  • Testy integrácie (paralelne s testami jednotiek)
  • Nasadenie

2. Nastavenie Jenkinsa

Najskôr si musíme stiahnuť najnovšiu stabilnú verziu Jenkinsa (2.73.3 v čase písania tohto článku).

Prejdime do priečinka, kde je náš súbor, a spustíme ho pomocou java -jar jenkins.war príkaz. Pamätajte, že bez počiatočného nastavenia používateľov nemôžeme Jenkins použiť.

Po odomknutí Jenkinsa pomocou počiatočného hesla generovaného správcom musíme vyplniť informácie o profile prvého používateľa správcu a nainštalovať všetky odporúčané doplnky.

Teraz máme novú inštaláciu Jenkins pripravenú na použitie.

Všetky dostupné verzie Jenkins nájdete tu.

3. Potrubia

Jenkins 2 prichádza so skvelou funkciou tzv Potrubia, čo je veľmi rozšíriteľné, keď potrebujeme definovať prostredie nepretržitej integrácie projektu.

A Pipeline je ďalší spôsob definovania niektorých Jenkinsových krokov pomocou kódua automatizuje proces nasadenia softvéru.

Používa jazyk DSL (Domain Specific Language) s dvoma rôznymi syntaxami:

  • Deklaratívny plynovod
  • Skriptovaný kanál

V našich príkladoch použijeme the Skriptovaný kanál ktorý sleduje imperatívnejší programovací model zostavený s Groovy.

Poďme si prejsť niektoré vlastnosti Potrubie zapojiť:

  • kanály sa zapisujú do textového súboru a považujú sa za kód; To znamená, že môžu byť pridané k riadeniu verzií a upravené neskôr
  • zostanú po reštartovaní servera Jenkins
  • môžeme prípadne pozastaviť potrubie
  • podporujú komplexné požiadavky, ako napríklad paralelné vykonávanie práce
  • doplnok Pipeline je možné rozšíriť alebo integrovať s inými doplnkami

Inými slovami, nastavenie projektu Pipeline znamená napísanie skriptu, ktorý postupne použije niektoré kroky procesu, ktorý chceme dosiahnuť.

Aby sme mohli začať používať potrubie, musíme si nainštalovať doplnok Pipeline ktorý umožňuje zostavenie jednoduchej a zložitej automatizácie.

Voliteľne môžeme mať aj Pipeline Stage View, aby sme pri spustení zostavenia videli všetky fázy, ktoré sme nakonfigurovali.

4. Rýchly príklad

Pre náš príklad použijeme malú aplikáciu Spring Boot. Potom vytvoríme kanál, ktorý klonuje projekt, zostaví ho a vykoná niekoľko testov a potom spustí aplikáciu.

Poďme si nainštalovať Checkstyle,Statický Analýza Zberateľ a JUnit pluginy, ktoré je užitočné zhromaždiť Checkstyle výsledkov, zostavte graf kombinovanej analýzy protokolov o testoch a ilustrujte úspešne vykonané a neúspešné testy.

Najskôr pochopíme dôvod, ktorý tu predstavuje Checkstyle: je to vývojový nástroj, ktorý pomáha programátorom písať lepší kód Java podľa prijatých a dobre známych štandardov.

Static Analysis Collector je doplnok, ktorý zhromažďuje rôzne výstupy analýzy a tlačí výsledky v kombinovanom trendovom grafe. Doplnok navyše poskytuje správy o zdraví a na základe týchto zoskupených výsledkov vytvára stabilitu.

Nakoniec JUnit plugin poskytuje vydavateľovi, ktorý spotrebúva protokoly o testoch XML generované počas zostavovania a vydáva podrobné a zmysluplné informácie týkajúce sa testov projektu.

Budeme tiež konfigurovať Checkstyle v našej aplikácii pom.xml:

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

5. Vytvorenie potrubného skriptu

Najskôr musíme vytvoriť novú Jenkinsovu prácu. Určite vyberieme Potrubie ako typ pred stlačením tlačidla OK, ako je popísané na tejto snímke obrazovky:

Nasledujúca obrazovka nám umožňuje vyplniť ďalšie podrobnosti o rôznych krokoch našej Jenkinsovej práce, ako napríklad popis, spúšťa, niektoré pokročilé možnosti projektu:

Poďme sa ponoriť do hlavnej a najdôležitejšej časti tohto druhu práce kliknutím na Potrubie tab.

Potom pre definíciu vyberte Skript potrubia a skontrolovať Použite Groovy Sandbox.

Tu je pracovný skript pre prostredie Unix:

node {stage 'Clone the project' git '//github.com/eugenp/tutorials.git' dir ('spring-jenkins-pipeline') {stage ("Compilation and Analysis") {parallel 'Compilation': {sh " ./mvnw clean install -DskipTests "}, 'Static Analysis': {stage (" Checkstyle ") {sh" ./mvnw checkstyle: checkstyle "step ([[$ class: 'CheckStylePublisher', canRunOnFailed: true, defaultEncoding: '' , zdravé: '100', vzor: '** / target / checkstyle-result.xml', nezdravé: '90', useStableBuildAsReference: true])}}} fáza ("Testy a nasadenie") {paralelné 'Testy jednotiek' : {stage ("Runing unit tests") {try {sh "./mvnw test -Punit"} catch (err) {step ([$ class: 'JUnitResultArchiver', testResults: '** / target / surefire-reports / TEST- * UnitTest.xml ']) throw err} step ([$ class:' JUnitResultArchiver ', testResults:' ** / target / surefire-reports / TEST- * UnitTest.xml '])}},' Testy integrácie ' : {stage ("Prebieha testovanie integrácie") {try {sh "./mvnw test -Pintegration"} catch (err) {step ([$ class: 'JUnitResultArchiver', testResults: '** / tar get / surefire-reports / TEST- '+' * IntegrationTest.xml ']) throw err} krok ([$ class:' JUnitResultArchiver ', testResults:' ** / target / surefire-reports / TEST- '+' * IntegrationTest .xml '])}} etapa ("Príprava") {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 &'}}}}}

Najskôr klonujeme úložisko z GitHubu a potom zmeníme adresár na náš projekt, ktorý sa volá spring-jenkins-pipeline.

Ďalej sme zostavili projekt a prihlásili sa Checkstyle analýzu paralelne.

Nasledujúci krok predstavuje paralelné vykonávanie jednotkových testov a integračných testov a potom nasadenie aplikácie.

Paralelizmus sa používa na optimalizáciu potrubia a na rýchlejšie spustenie úlohy. Osvedčeným postupom v spoločnosti Jenkins je súčasne prevádzať niektoré nezávislé akcie, ktoré môžu trvať veľa času.

Napríklad v projekte z reálneho sveta máme zvyčajne veľa testov jednotiek a integrácie, ktoré môžu trvať dlhšie.

Upozorňujeme, že ak niektorý test zlyhal, BUILD bude označený tiež ako FAILED a k nasadeniu nedôjde.

Tiež používame JENKINS_NODE_COOKIE aby sme zabránili okamžitému vypnutiu našej aplikácie, keď sa potrubie dostane na koniec.

Ak chcete vidieť všeobecnejší skript fungujúci na iných rôznych systémoch, pozrite si úložisko GitHub.

6. Správa o analýze

Po vytvorení úlohy uložíme náš skript a klikneme na Stavať teraz na domovskej stránke projektu našej palubnej dosky Jenkins.

Tu je prehľad zostavení:

O niečo ďalej nájdeme fázový pohľad na potrubie s výsledkom každej etapy:

Každý výstup je prístupný po umiestnení kurzora myši na bunku fázy a kliknutí na ikonu Záznamy tlačidlo, aby ste videli správy protokolu vytlačené v danom kroku.

Nájdeme tiež viac podrobností o analýze kódu. Kliknime na požadované zostavenie z Budovať históriu v pravom menu a stlačte Varovania týkajúce sa kontrolného štýlu.

Tu vidíme 60 upozornení s vysokou prioritou, ktoré je možné prehľadávať kliknutím:

The Detaily Na karte sú zobrazené informácie, ktoré zvýrazňujú varovania a umožňujú vývojárovi pochopiť príčiny.

Rovnakým spôsobom je prístupná celá správa o teste po kliknutí na ikonu Výsledok testu odkaz. Pozrime sa na výsledky com.baeldung balenie:

Tu vidíme každý testovací súbor s jeho trvaním a stavom.

7. Záver

V tomto článku sme nastavili jednoduché prostredie pre nepretržité doručovanie tak, aby fungovalo a zobrazovala sa analýza statického kódu a správa o teste v Jenkins cez a Potrubie zamestnanie.

Zdrojový kód tohto článku nájdete ako vždy na serveri GitHub.


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