Munka ütemezése Jenkinsben

1. Bemutatkozás

Ebben a cikkben a Jenkins-i munkák ütemezésének különböző módjaival foglalkozunk.

Először egy egyszerű feladat ütemezésével ütemezzük be a feladatot, amely oly egyszerű, mint egy sima szöveges üzenet nyomtatása. És a példát úgy alakítjuk át, hogy ütemezünk egy olyan munkát, amelyet automatikusan kiváltanak egy olyan SCM-adattár változásai, mint a GitHub, a Bitbucket stb.

2. Kezdeti beállítás

Feltételezzük A JDK és a Maven telepítve lett Globális eszközkonfiguráció nevekkel JDK9.0.1 és Maven3.5.2, illetve a Jenkins szerveren.

Azt is feltételezi hozzáférést kapunk egy SCM adattárhoz mint például a Bitbucket egy megfelelően beállított Maven projekttel.

3. Egyszerű munka ütemezése

A feladatkonfigurációs oldalon görgessünk lefelé egyenesen a Triggerek építése szakasz. Mivel egyenes munkát kívánunk létrehozni, jelöljük be a jelölőnégyzetet Építsen rendszeresen. Amint bejelöljük ezt a jelölőnégyzetet, megjelenik egy szövegmező a Menetrend címke.

Az értéket Cron-kompatibilis formátumban kell megadnunk. Kiterjedt információk állnak rendelkezésre az oldalon, ha rákattintunk a mező melletti kérdőjelre.

Írjuk be */2 * * * * itt, amely két perc intervallumot jelent:

A szövegmezőből kipattintva közvetlenül a mező alatt láthatunk információkat. Megmondja, hogy a munka mikor fut le legközelebb.

Mentsük meg a munkát - körülbelül két perc múlva meg kell látnunk a munka első végrehajtásának állapotát:

Mivel úgy konfiguráltuk a feladatot, hogy két percenként fusson, több várakozási számot kell látnunk, amikor egy idő várakozás után visszatérünk a munka irányítópultjára.

4. Az SCM-et megkérdező munka létrehozása

Lépjünk előre egy lépéssel, és hozzunk létre egy feladatot, amely forráskódot húz le az SCM-tárból, például a Bitbucket-ból, és végrehajtást hajt végre.

Hozzunk létre egy új munkát az előző szakaszban leírtak szerint, néhány módosítással.

Ban,-ben Triggerek építése szakasz, szelektálás helyett Építsd rendszeresen, válasszuk ki Poll SCM. Amint ezt megtesszük, látnunk kell egy szövegmezőt a Címke felirattal Menetrend.

Írjuk be */5 * * * * ebben a mezőben, ami azt jelenti, hogy a munkát 5 percenként szeretnénk ütemezni:

Görgessünk felfelé Forráskód kezelése szakasz. A melletti választógomb kiválasztásakor Git, egy új szakasz jelenik meg Adattárak.

Itt kell konfigurálnunk az SCM adattárunk részleteit. Írjuk be az SCM adattár URL-jét a Adattár URL-je szövegmező:

Felhasználói hitelesítő adatokat is meg kell adnunk, hogy a Jenkins hozzáférhessen az adattárhoz.

Kattintson a gombra Hozzáadás gomb a Hitelesítő adatok mellett, amely felugró képernyőt jelenít meg a felhasználói hitelesítő adatok létrehozásához.

Válasszuk ki a Kedves mint Felhasználónév jelszóval. Be kell írnunk a felhasználónevet és a jelszót a kijelölt szövegmezőkbe:

Kattintson a gombra Hozzáadás gombra, visszatérünk a Forráskód kezelése szakasz.

Válasszuk ki ezt a felhasználói hitelesítő adatot a melletti legördülő menüből Hitelesítő adatok:

Az utolsó dolog, amit tennünk kell, az a build szkript beállítása.

Görgessünk le ide: Épít szakaszban kattintson a gombra Építési lépés hozzáadása és válassza ki Hajtsa végre a Shell parancsot. Mivel egy Maven projekten dolgozunk az SCM adattárban, gépelni kell mvn tiszta telepítés, amely Maven felépítést hajt végre.

Próbáljuk megérteni, mit tettünk itt.

Létrehoztunk egy munkát, amely a tervek szerint 5 percenként fut. A job úgy lett konfigurálva, hogy forráskódot vegyen le az adott Bitbucket-tárház főágából.

A megadott felhasználói hitelesítő adatokat fogja használni a Bitbucketbe történő bejelentkezéshez.

A forráskód behúzása után a feladat végrehajtja a megadott Maven parancsot tartalmazó parancsfájlt.

Ha most mentünk és körülbelül öt percet várunk, akkor látnunk kell a build végrehajtását Építsd a történelmet szakasz a munka irányítópultján.

A Konzol kimenet a Maven build kimenetét kell mutatnia. A konzol kimenetén láthatjuk, hogy a forráskódot kihúzták a Bitbucket-ből és a parancsból mvn tiszta telepítés végrehajtották:

Mivel ez egy Maven felépítés, a konzol kimenete nagyon hosszú lehet, a letöltött Maven-függőségek számától függően.

De a kimenet végén látnunk kell SIKER ÉPÍTÉSE üzenet.

5. Olyan munka létrehozása, amely a csővezetéket használja szkriptként

Eddig láttuk, hogyan lehet olyan munkahelyeket létrehozni, amelyek az előre meghatározott ütemezett időpontban működnek.

Most hozzunk létre egy olyan munkát, amely nem kötődik egyetlen ütemezéshez sem. Ehelyett úgy konfiguráljuk, hogy automatikusan aktiválódjon, ha új kötelezettségvállalás lesz az SCM-tárban.

Visszatérve a Jenkins műszerfalához, kattintsunk Új elem. Ezúttal ahelyett, hogy Freestyle projekt, kiválasztjuk Csővezeték. Nevezzük meg ezt a munkát PipelineAsScriptJob.

Az OK gombra kattintva a csővezeték konfigurációs oldalára kerülünk. Ennek az oldalnak több szakasza van, például:Tábornok", “Építési kiváltók ”, “Speciális projektbeállítások ”, ésCsővezeték".

Görgessünk le a „Építési kiváltók ” szakasz és a jelölőnégyzet a mellette Építsen fel, amikor a változás a Bitbucket-re tolódik. Ez az opció csak akkor lesz elérhető, ha telepítettük a Bitbucket beépülő modult:

Görgessünk le ide: Csővezeték szakasz. Kiválasztanunk kell Pipeline Script melletti legördülő menüben Meghatározás.

A közvetlenül a legördülő menü alatti szövegdoboz várja a szkript beillesztését. Ennek kétféle módja van.

Vagy beírhatjuk a teljes szkriptet, vagy felhasználhatjuk a Jenkins által biztosított segédprogramot, amely az úgynevezett Csővezeték szintaxisa.

Válasszuk a második lehetőséget:

Kattintson a gombra Csővezeték szintaxisa, amint azt a fenti ábra kiemeli, egy új fül nyílik meg a böngészőben. Ez egy hasznos segédprogram, ahol megadhatjuk a végrehajtani kívánt műveletet, és az eszköz a Groovy-ban generálja a szkriptet nekünk. Ezután átmásolhatjuk a szkriptet, és beilleszthetjük a folyamat konfigurációjába.

Válasszuk ki pénztár: Általános SCM ban,-ben Minta lépés ledob. Miután megadta az SCM Repo URL-t és a felhasználói hitelesítő adatokat, kattintson a gombra Pipeline Script létrehozása gomb.

Ez létrehozza a szkriptet a szövegmezőben:

Másoljuk át ezt a szkriptet, és mentsük el valahova későbbi használatra.

Ugyanazon az oldalon görgessünk felfelé, és válasszuk ki withMaven: Biztosítson Maven környezetet ban,-ben Minta lépés ledob. Itt kell megjegyezni, hogy ez az opció csak akkor érhető el, ha a Pipeline Maven Integration Plugin telepítve van.

Ki kell választanunk a Maven és a JDK telepítések nevét a megfelelő legördülő listák mellett. Kattintson a gombra Pipeline Script létrehozása gomb.

Ez létrehozza a szkriptet a szövegmezőben:

Mentsük a szkriptet.

Még mindig van néhány további szkript, amelyet elő kell állítanunk. Válasszuk ki csomópont: Csomópont kijelölése ban,-ben Minta lépés ledob, típus fő- ban,-ben Címke szövegmezőt, és kattintson a gombra Pipeline Script létrehozása:

Mentsük a szkriptet.

És az utolsó.

Válasszuk ki szakasz: Színpad ban,-ben Minta lépés legördülő menü, írja be scm ban,-ben Művésznév szövegmezőt, és kattintson a gombra Pipeline Script létrehozása:

Mentsük meg.

Itt az ideje, hogy összegyűjtsük az összes eddig generált szkriptet és összefűzzük őket:

node ('master') {stage ('scm') {checkout ([$ class: 'GitSCM', elágazások: [[név: '* / master']], doGenerateSubmoduleConfigurations: hamis, kiterjesztések: [], submoduleCfg: [ ], userRemoteConfigs: [[credentialsId: 'e50f564f-fbb7-4660-9c95-52dc93fa26f7', url: '// [email protected] /projects/springpocrepo.git']]])} szakasz ('build') {withMaven ( jdk: 'JDK9.0.1', maven: 'Maven3.5.2') {sh 'mvn tiszta telepítés'}}}

Az első állítás, csomópont (‘master’) a fenti szkriptben, azt jelzi, hogy a job egy megnevezett csomóponton fog végrehajtódni fő-, amely az alapértelmezett csomópont a Jenkins szerveren.

Másoljuk a fenti szkriptet a szövegmezőbe Csővezeték szakasz:

Mentsük el ezt a konfigurációt.

Most csak egy dolog marad el. Be kell állítanunk egy webhorgot a Bitbucket-ben. A Webhook felelős azért, hogy push értesítést küldjön a Jenkins szervernek, amikor egy adott esemény a Bitbucket-ben történik.

Vessünk egy pillantást a konfigurálására.

Jelentkezzünk be a Bitbucketbe, és válasszunk ki egy adattárat. Látnunk kellene egy lehetőséget Beállítások a bal oldali oszlopon. Kattintson rá, és látnunk kell egy lehetőséget Webhookok ban ben MUNKAFOLYAMAT szakasz. Hozzunk létre egy új webhorgot.

Bizonyos nevet kell adnunk ennek a webhooknak a Cím terület. A webhook URL-jét is meg kell adnunk a URL terület. Ennek az URL-nek egy adott REST API-végpontra kell mutatnia, amelyet a Jenkins adott, és ez a végpont az bitbucket-hook.

Meg kell jegyezni, hogy az URL-nek végződéssel kell végződnie:

A fenti Webhook konfigurálása közben kiválasztottuk az opciót Adattár leküldés. Ez azt jelenti, hogy a Bitbucket értesítést küld a Jenkins szervernek, amikor egy lökés történik.

Ez a viselkedés módosítható; többféle lehetőség közül lehet választani.

Most egyelőre menjünk az alapértelmezett opcióval, azaz Repository Push.

Beállíthatunk webhorgot a Github-ban is; itt van néhány hasznos információ ennek konfigurálásáról.

Rövid történet: elkészítettünk egy Groove nyelvű forgatókönyvet - ennek ki kell húznia a forráskódot a master ágból a megadott SCM-tárház (a megadott felhasználói hitelesítő adatok felhasználásával), valahányszor lökés támad a tárházban és akkor végrehajtani mvn tiszta telepítés parancs a Jenkins szerveren.

Meg kell jegyezni, hogy ez a munka egy adott pillanatban sem fog futni. Ehelyett arra vár, hogy lökést érjen el az SCM-tárház főágában.

Amint új push esemény lesz, új végrehajtást fogunk látni a „Építési előzmények” szakasz a Jenkins munka irányítópultján.

Látnunk kellene egy új építést a függőben levő állapot mellette.

Néhány másodperc múlva ennek a buildnek el kell kezdenie a végrehajtást, és láthatjuk a teljes bejelentkezést Konzol kimenet.

A konzol kimenetének első állítása a következőt mondja: „A Bitbucket által elindított lépés ...” - ez azt jelenti, hogy az összeállítás automatikusan elindult, amikor Push történt a Bitbucket-ben:

Ha minden jól megy, akkor sikeresen befejeződik az összeállítás.

6. Hozzon létre egy munkát, amely a Jenkinsfile fájlt használja

Lehetséges, hogy NEM írhat semmilyen szkriptet a Jenkins csővezetékbe, és így is elérheti az összeállítás végrehajtását, amelyet a Bitbucket Webhook vált ki.

Ehhez létre kell hoznunk egy új fájlt a Bitbucket-ben, és így kell elneveznünk Jenkinsfile. A csővezeték szkriptjét kissé módosítva át kell helyezni erre a Jenkinsfile-ra. Nézzük meg pontosan, hogyan kell ezt megtenni.

Létrehozunk egy új csővezetéket a Jenkins-ben és megnevezzük PipelineWithJenkinsfile.

A csővezeték konfigurációs oldalán kiválasztjuk Csővezeték-szkript az SCM-től mellett Meghatározás ban,-ben Csővezeték szakasz. Megjelenik egy legördülő menü, amely mellett különböző lehetőségek találhatók SCM. Válasszunk Git a legördülő menüből.

Ezután meg kell adnunk a Bitbucket adattár URL-jét és a felhasználói hitelesítő adatokat. Biztosítsuk ezt a melletti szövegmező Script Path tartalmazza az alapértelmezett értéket, azaz Jenkinsfile:

Ami Jenkins-t illeti, ennyit kell konfigurálnunk.

A Jenkinsfile-t azonban létre kell hoznunk a tárban; Tehát hozzunk létre egy új szövegfájlt, nevezzük Jenkinsfile néven, és használjuk ezt az egyszerű groovy szkriptet:

node ('master') {szakasz ('scm') {checkout scm} szakasz ('build') {withMaven (jdk: 'JDK9.0.1', maven: 'Maven3.5.2') {sh 'mvn tiszta telepítés'} }}

Ez a szkript csaknem egy módosítással megegyezik az előbbi szakaszban létrehozott folyamatfájl szkriptjével. A nyilatkozat szakasz („scm”) nincs szüksége az URL-re és a felhasználói hitelesítő adatokra. Ehelyett csak arra van szüksége pénztár scm.

És ez az. Abban a pillanatban, hogy ezt a fájlt a Bitbucket-be kötjük, elindítja a Jenkins felépítését - és látnunk kell az építést a Építsd a történelmet.

Az egyetlen különbség e szakasz és a korábbi között az definiáltuk a pipeline szkriptet a Bitbucket repository-ban.

Így, a build szkript a projekt forráskódjának része, amelyet fel kell építeni. Magában a Jenkins-ben nem tartjuk fenn a forgatókönyvet.

Ehelyett Jenkins ismeri az SCM adattár részleteit és a szkript fájlt. Ha van egy leküldés erre az adattárra, a szkript be Jenkinsfile végrehajtásra kerül a Jenkins szerveren.

7. Következtetés

Ebben az oktatóanyagban láthattuk, hogyan konfigurálhatók és ütemezhetők munkák a Jenkins-ben különböző stratégiák segítségével.

Láttuk azt is, hogyan konfigurálhatunk egy munkát a Jenkins-ben úgy, hogy az automatikusan elinduljon az SCM-adattárban végrehajtott bizonyos műveletek, például a Bitbucket alapján.