Plánovanie práce v Jenkins

1. Úvod

V tomto článku sa budeme venovať rôznym spôsobom plánovania úloh v Jenkins.

Začneme naplánovaním jednoduchej úlohy, ktorá vykoná niečo také jednoduché ako tlač správy vo formáte obyčajného textu. A príklad rozvinieme do plánovania úlohy, ktorá sa automaticky spustí pri zmenách v úložisku SCM, ako sú GitHub, Bitbucket atď.

2. Počiatočné nastavenie

To predpokladáme JDK a Maven boli nainštalované v Globálna konfigurácia nástroja s názvami ako JDK9.0.1 a Maven3.5.2na serveri Jenkins.

Tiež to predpokladá máme prístup do úložiska SCM napríklad Bitbucket s projektom Maven správne nastaveným.

3. Plánovanie jednoduchej práce

Na stránke konfigurácie úloh sa posuňme priamo nadol k Vytvárajte spúšťače oddiel. Pretože máme v úmysle vytvoriť priamu úlohu, začiarknite políčko označené Budujte pravidelne. Hneď ako začiarkneme toto políčko, zobrazí sa textové pole s Časový plán štítok.

Musíme poskytnúť hodnotu vo formáte kompatibilnom s Cron. Ak klikneme na otáznik vedľa poľa, na stránke sú k dispozícii rozsiahle informácie.

Napíšeme */2 * * * * tu, čo predstavuje interval dvoch minút:

Po vystúpení z textového poľa môžeme vidieť informácie priamo pod rámčekom. Hovorí nám o tom, kedy bude úloha spustená ďalej.

Poďme si úlohu uložiť - asi o dve minúty by sme sa mali dočkať stavu prvého vykonania úlohy:

Pretože sme nakonfigurovali úlohu tak, aby sa spúšťala každé dve minúty, mali by sme vidieť niekoľko čísel zostavenia, keď sa po čakaní vrátime späť na hlavný panel úlohy.

4. Vytvorenie úlohy, ktorá požaduje SCM

Poďme o krok vpred a vytvorme úlohu, ktorá stiahne zdrojový kód z úložiska SCM, napríklad Bitbucket, a vykoná zostavenie.

Vytvorme novú prácu, ako je vysvetlené v predchádzajúcej časti, s niekoľkými úpravami.

V Vytvárajte spúšťače oddiel, namiesto výberu Budujte pravidelne, vyberieme Anketa SCM. Hneď ako to urobíme, malo by sa nám zobraziť textové pole s menovkou Časový plán.

Napíšeme */5 * * * * v tomto poli, čo znamená, že chceme naplánovať spustenie úlohy každých 5 minút:

Prejdime až na Správa zdrojového kódu oddiel. Po výbere prepínača vedľa položky Git, zobrazí sa nová časť označená ako Úložiská.

To je miesto, kde musíme nakonfigurovať podrobnosti o našom úložisku SCM. Zadajme URL úložiska SCM do URL úložiska textové pole:

Musíme tiež poskytnúť poverenia používateľa, aby mohol Jenkins získať prístup do úložiska.

Kliknite na ikonu Pridať tlačidlo vedľa položky Poverenia, ktoré zobrazí vyskakovacie okno na vytvorenie poverení používateľa.

Vyberieme Milý ako Používateľské meno a heslo. Do určených textových polí budeme musieť zadať používateľské meno a heslo:

Po kliknutí na Pridať tlačidlo, sme vrátení späť do Správa zdrojového kódu oddiel.

Vyberte toto poverenie používateľa v rozbaľovacej ponuke vedľa položky Poverovacie listiny:

Posledná vec, ktorú musíme urobiť, je nastaviť zostavovací skript.

Prejdime nadol k Stavať sekcii kliknite na Pridajte krok zostavenia a vyberte Spustiť Shell. Keďže pracujeme na projekte Maven v úložisku SCM, musíme napísať mvn čistá inštalácia, ktorá vykoná zostavenie Maven.

Pokúsme sa pochopiť, čo sme tu urobili.

Vytvorili sme úlohu, ktorá je naplánovaná na spustenie každých 5 minút. Úloha je nakonfigurovaná na načítanie zdrojového kódu z hlavnej vetvy daného úložiska Bitbucket.

Na prihlásenie do Bitbucketu použije poskytnuté prihlasovacie údaje používateľa.

Po vytiahnutí zdrojového kódu úloha vykoná skript obsahujúci poskytnutý príkaz Maven.

Teraz, ak uložíme a počkáme približne päť minút, mali by sme sa dočkať vykonania zostavenia v Budovať históriu časť na paneli úloh.

The Výstup konzoly by mal ukazovať výstup zostavenia Maven. Na výstupe z konzoly vidíme, že zdrojový kód bol stiahnutý z Bitbucketu a príkazu mvn čistá inštalácia bol vykonaný:

Pretože je to Maven build, výstup z konzoly môže byť veľmi dlhý v závislosti od počtu stiahnutých závislostí Maven.

Ale na konci výstupu by sme mali vidieť STAVEBNÝ ÚSPECH správa.

5. Vytvorenie úlohy, ktorá používa Pipeline ako skript

Doteraz sme videli, ako vytvoriť úlohy, ktoré sa vykonávajú v preddefinovanom naplánovanom čase.

Poďme teraz vytvoriť prácu, ktorá nie je viazaná na žiadny konkrétny rozvrh. Namiesto toho ho nakonfigurujeme tak, aby sa automaticky spúšťal vždy, keď je v úložisku SCM nové potvrdenie.

Vráťme sa späť na hlavný panel Jenkins, poďme kliknúť Nová vec. Tentoraz namiesto Freestyle projekt, vyberieme Potrubie. Poďme pomenovať túto prácu PipelineAsScriptJob.

Po kliknutí na tlačidlo OK sa dostaneme na stránku konfigurácie potrubia. Táto stránka má niekoľko sekcií, napríklad „Generál “, “Build Triggers ”, “Pokročilé možnosti projektu “a „Potrubie “.

Prejdime nadol na „Build Triggers ” a začiarknite políčko vedľa Vytvorte, keď sa zmena presunie do bitbucketu. Táto možnosť bude k dispozícii, iba ak sme nainštalovali doplnok Bitbucket:

Prejdime nadol k Potrubie oddiel. Musíme vybrať Pipeline Script v rozbaľovacej ponuke vedľa Definícia.

Textové pole hneď pod touto rozbaľovacou ponukou čaká na vloženie skriptu. Existujú dva spôsoby, ako to urobiť.

Môžeme napísať celý skript alebo môžeme využiť utilitu od Jenkinsa, ktorá je známa ako Syntax potrubia.

Zvoľme druhú možnosť:

Po kliknutí na Syntax potrubia, ako je zvýraznené na obrázku vyššie, v prehliadači sa otvorí nová karta. Toto je užitočný nástroj, kde môžeme určiť operáciu, ktorú chceme vykonať, a nástroj vygeneruje skript v Groovy pre nás. Potom môžeme skript skopírovať a vložiť do konfigurácie kanálu.

Vyberieme pokladňa: Všeobecné SCM v Ukážkový krok rozbaľovací zoznam. Po zadaní adresy URL SCM Repo a používateľských poverení musíme kliknúť na ikonu Vytvorte skript Pipeline tlačidlo.

Týmto sa vygeneruje skript v textovom poli:

Skopírujme tento skript a uložme ho niekde na neskoršie použitie.

Na tej istej stránke prejdime nahor a vyberieme withMaven: Poskytnite prostredie Maven v Ukážkový krok rozbaľovací zoznam. Tu je potrebné poznamenať, že táto možnosť bude k dispozícii, iba ak je nainštalovaný doplnok Pipeline Maven Integration Plugin.

Musíme zvoliť názvy inštalácií Maven a JDK vedľa príslušných rozbaľovacích ponúk. Musíme kliknúť na ikonu Vytvorte skript Pipeline tlačidlo.

Týmto sa vygeneruje skript v textovom poli:

Uložme si skript.

Stále existuje niekoľko ďalších skriptov, ktoré musíme vygenerovať. Vyberieme uzol: Priradiť uzol v Ukážkový krok rozbaľovací zoznam, typu pán v Štítok textové pole a kliknite na Vytvorte skript Pipeline:

Uložme si skript.

A posledný.

Vyberieme etapa: Etapa v Ukážkový krok rozbaľovacia ponuka, typ scm v Pseudonym textové pole a kliknite Vytvorte skript Pipeline:

Poďme to uložiť.

Je čas zhromaždiť všetky doteraz vygenerované skripty a spojiť ich dohromady:

node ('master') {stage ('scm') {checkout ([$ class: 'GitSCM', branches: [[name: '* / master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [ ], userRemoteConfigs: [[credentialsId: 'e50f564f-fbb7-4660-9c95-52dc93fa26f7', url: '// [chránený e-mailom] /projects/springpocrepo.git']]])} fáza ('build') {withMaven ( jdk: 'JDK9.0.1', maven: 'Maven3.5.2') {sh 'mvn clean install'}}}

Prvé vyhlásenie uzol („hlavný“) v skripte vyššie, označuje, že úloha bude vykonaná v uzle s názvom pán, ktorý je predvoleným uzlom na serveri Jenkins.

Skopírujme vyššie uvedený skript do textového poľa v Potrubie časť:

Uložme túto konfiguráciu.

Teraz už zostáva len jedna vec. Musíme nakonfigurovať Webhook v Bitbucket. Webhook je zodpovedný za zasielanie push oznámení na server Jenkins, kedykoľvek dôjde ku konkrétnej udalosti v Bitbucket.

Poďme sa pozrieť na to, ako to nakonfigurovať.

Prihlásme sa do Bitbucketu a vyberte úložisko. Mali by sme vidieť možnosť nastavenie na ľavom stĺpiku. Klikneme na to a mala by sa nám zobraziť možnosť Webhooky v PRACOVNÝ TOK oddiel. Vytvorme nový Webhook.

Tomuto webhooku v. Musíme poskytnúť nejaké meno Názov lúka. Musíme tiež poskytnúť adresu URL webhooku v serveri URL lúka. Táto adresa URL musí smerovať na jeden konkrétny koncový bod REST API poskytnutý Jenkinsom a tento koncový bod je bitbucket-hook.

Je potrebné poznamenať, že adresa URL MUSÍ končiť koncovou lomkou:

Pri konfigurácii Webhooku vyššie sme vybrali túto možnosť Repository push. To znamená, že Bitbucket pošle upozornenie na server Jenkins, kedykoľvek dôjde k stlačeniu.

Toto správanie je možné upraviť; na výber je niekoľko rôznych možností.

Zatiaľ poďme na predvolenú možnosť, t. J. Push Repository.

Webhook môžeme nastaviť aj v Githube; tu je niekoľko užitočných informácií o tom, ako to nakonfigurovať.

Dlhý príbeh krátky: vytvorili sme skript potrubia v jazyku Groovy - to by malo vytiahnuť zdrojový kód z hlavnej vetvy poskytnutého úložiska SCM (pomocou poskytnutých prihlasovacích údajov používateľa), kedykoľvek dôjde k stlačeniu v úložisku a potom vykonať mvn čistá inštalácia príkaz na serveri Jenkins.

Je potrebné poznamenať, že táto práca nebude fungovať v konkrétnom čase. Namiesto toho bude čakať, kým dôjde k zatlačeniu v hlavnej vetve úložiska SCM.

Akonáhle dôjde k novej udalosti push, uvidíme nové vykonanie v priečinku „Build History“ časť na paneli úloh Jenkins.

Mali by sme vidieť, ako sa začína nové zostavenie s čaká sa stav vedľa.

O pár sekúnd by sa malo toto zostavenie spustiť a uvidíme úplné prihlásenie Výstup konzoly.

Prvý príkaz na výstupe z konzoly hovorí „Started by Bitbucket push by ..“ - to znamená, že zostavenie sa spustilo automaticky, keď sa v Bitbucket uskutočnilo push:

Ak všetko dobre dopadne, zostavenie by sa malo úspešne dokončiť.

6. Vytvorte prácu, ktorá používa súbor Jenkins

Nie je možné napísať žiadny skript do Jenkinsovho kanálu a stále dosahovať vykonávanie zostavenia, ktoré spúšťa Bitbucket Webhook.

Urobiť tak, musíme vytvoriť nový súbor v Bitbucket a pomenovať ho ako Jenkinsfile. Skript potrubia je potrebné preniesť do tohto súboru Jenkins s miernou úpravou. Pozrime sa presne, ako to urobiť.

V Jenkinse vytvoríme nový kanál a pomenujeme ho PipelineWithJenkinsfile.

Na stránke konfigurácie potrubia vyberieme Pipeline script od SCM vedľa Definícia v Potrubie oddiel. Uvidíme rozbaľovaciu ponuku s rôznymi možnosťami vedľa SCM. Vyberme si Git z rozbaľovacej ponuky.

Potom musíme poskytnúť adresu URL úložiska Bitbucket a poverenia používateľa. Zabezpečme to textové pole vedľa Cesta skriptu obsahuje predvolenú hodnotu, t. j. Jenkinsfile:

Pokiaľ ide o Jenkinsa, je to všetko, čo musíme nakonfigurovať.

Musíme však v úložisku vytvoriť súbor Jenkins; Poďme teda vytvoriť nový textový súbor, pomenovať ho ako Jenkinsfile a použiť tento jednoduchý groovy skript:

node ('master') {stage ('scm') {checkout scm} stage ('build') {withMaven (jdk: 'JDK9.0.1', maven: 'Maven3.5.2') {sh 'mvn clean install'} }}

Tento skript je takmer rovnaký ako skript potrubia, ktorý sme vytvorili v predchádzajúcej časti, iba s jednou úpravou. Vyhlásenie v javisko („scm“) nepotrebuje informácie o adrese URL a používateľských povereniach. Všetko, čo potrebuje, je pokladňa scm.

A to je všetko. V okamihu, keď tento súbor odovzdáme do Bitbucketu, spustí sa zostavenie v Jenkins - a mali by sme vidieť, ako sa zostava spúšťa v Budovať históriu.

Jediný rozdiel medzi touto časťou a predchádzajúcou časťou je v tom definovali sme skript potrubia v úložisku Bitbucket.

Takže skript na zostavenie je súčasťou zdrojového kódu projektu, ktorý je potrebné vytvoriť. Neudržiavame skript v samotnom Jenkinsovi.

Namiesto toho má Jenkins vedomosti o podrobnostiach úložiska SCM a skriptovom súbore. Kedykoľvek dôjde k stlačeniu tohto úložiska, použije sa skript Jenkinsfile sa vykoná na serveri Jenkins.

7. Záver

V tomto tutoriáli sme videli, ako je možné úlohy konfigurovať a plánovať v Jenkins pomocou rôznych stratégií.

Tiež sme videli, ako nakonfigurovať úlohu v Jenkinsovi tak, aby sa automaticky spúšťala na základe určitých akcií vykonávaných v úložisku SCM, napríklad Bitbucket.


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