‘N Stap-vir-stap handleiding om die Jenkins-pypleiding te skep


Waarom Jenkins Pypeline?

Continuous Delivery (CD) is ‘n wesenlike deel van DevOps Lifecycle.

Dit maak seker dat die sagteware / toepassingsontwikkelaars skep altyd produksieklaar is. As dit gebeur, moet dit voortdurend gebou, getoets en ontplooi word wanneer die kode opgedateer word. Dit is waar Jenkins Pipeline in die prentjie kom.

In DevOps word deurlopende integrasie en deurlopende aflewering (CI / CD) bereik via Jenkins Pipeline. As u Jenkins Pipeline vir CD gebruik, help u om die sagteware vinniger en gereeld vry te stel. Dit help om die terugvoer in elke volgende weergawe te neem.

Wat is Jenkins Pipeline?

Jenkins Pipeline is ‘n kombinasie van take om sagteware voortdurend met behulp van Jenkins te lewer.

Ek neem aan jy weet wat Jenkins is. As dit nie so is nie, kyk dan na hierdie Udemy-kursus om Jenkins te bemeester.

‘N Jenkins-pypleiding bestaan ​​uit verskillende toestande of stadiums, en die een na die ander word in volgorde uitgevoer. JenkinsFile is ‘n eenvoudige tekslêer wat gebruik word om ‘n pyplyn as kode in Jenkins te skep. Dit bevat kode in Groovy Domain Specific Language (DSL), wat maklik is om te skryf en leesbaar is deur die mens.

U kan JenkinsFile afsonderlik bestuur, of u kan ook die pypleidingkode vanaf Jenkins Web UI gebruik. Daar is twee maniere waarop u ‘n pypleiding met Jenkins kan skep.

  • Verklarend – ‘n nuwe manier om Jenkins Pipeline te skep. Hier skryf jy ‘n groovy-kode wat ‘pyplyn’-blokke bevat, wat in ‘n SCM (Broncode Management) gekontroleer word
  • Geskrifte – manier om groovy-kodes te skryf waar die kode binne ‘node’ blokke gedefinieer word.

Voordat ons met die demo begin, moet u dit eers installeer as u Jenkins nog nie geïnstalleer het nie. Maak seker dat u Jenkins op u stelsel het.

Skep ‘n Jenkins-pyplyn

Dit is hoe ‘n Jenkins-pyplynstroom lyk, wat bestaan ​​uit verskeie fases tussen ontwikkelaars wat ‘n sagteware (kodering) skep en sagteware wat tydens produksie gelewer word.

Jenkins-pyplyn

Laat ons ‘n verklarende pyplyn skep.

Klik op die Jenkins-dashboard op Nuwe item. Voer dan ‘n itemnaam in, byvoorbeeld ‘Eerste pyplyn’ en kies die ‘pyplyn’-projek. Klik dan op OK.

Nuwe item - Jenkins-pyplyn

Klik op die tab Pyplyn soos hieronder getoon, en plaas u JenkinsFile-kode (Groovy Code) hier.

Jenkins-lêskode

pyplyn {
agent enige
stadiums {
stadium (‘Bou’) {
stappe {
eggo ‘Hallo, GeekFlare. Begin die app te bou. ‘
}
}
stadium (‘toets’) {
stappe {
invoer (‘Wil u voortgaan?’)
}
}
stadium (‘Ontplooi’) {
parallel {
stadium (‘Ontplooi begin’) {
stappe {
eggo "Begin met die ontplooiing .."
}
}
stadium (‘Nou ontplooi’) {
agent {
docker {
hergebruikNode waar
prent ‘nginx’
}
}

stappe {
eggo "Docker geskep"
}
}
}
}
stadium (‘Prod’) {
stappe {
eggo "Die program is gereed gereed"
}

}
}
}

Laat ek die blokke hierbo verduidelik.

  • Die pyplyn blok bestaan ​​uit al die instruksies om sagteware te bou, te toets en af ​​te lewer. Dit is die sleutelkomponent van ‘n Jenkins-pyplyn.
  • ‘n agent word opgedra om die pypleiding op ‘n node uit te voer en ‘n werkruimte toe te ken vir die pyplyn.
  • A stadium is ‘n blok wat stappe bevat om die toepassing te bou, te toets en te ontplooi. Stadiums word gebruik om die Jenkins-pyplynprosesse te visualiseer.
  • A stap is ‘n enkele taak wat uitgevoer moet word, byvoorbeeld, maak ‘n gids, voer ‘n dokumente-afbeelding uit, verwyder ‘n lêer, ens.

Die Groovy-kode hierbo gebruik ek vir die JenkinsFile. Enige beskikbare agent word aan die pyplyn toegewys. Dan definieer ek die Build-verhoog en voer ‘n eenvoudige eggostap uit. Daarna het ek die toetsfase gedefinieer waar die stap gevra word of u wil voortgaan of nie. Daarna het ek ‘n Deploy-verhoog geskep wat nog twee fases in parallel loop. Ontplooiingstapfase het ‘n stap met eggo-opdrag, en Implementering het nou ‘n stap wat ‘n docker-beeld van Nginx op die node trek. Laastens is daar ‘n Prod-fase met ‘n eenvoudige eggostap.

Die bogenoemde pyplyn het stadiums wat eenvoudige stappe vir u het om te verstaan ​​hoe dit werk. Sodra u geleer het hoe om ‘n pyplyn te skep, kan u meer ingewikkeldheid byvoeg en ook komplekse pypleidings skep.

Sodra u die kode in die pyplyn-oortjie het, klik op Pas toe en stoor. Klik uiteindelik op Build Now om te begin met die bou van die Jenkins-pyplyn wat u so pas gemaak het.

Bou nou

Dit is hoe die gebruikerskoppelvlak sal lyk as die pypleiding loop. As u al die stappe korrek gevolg het, sal u bouwerk suksesvol wees, en die blou kleur vir die bouwerk (# 27). As daar foute in die bou is, gee dit die kleur ‘n rooi kleur (# 27).

Jenkins Build 27

Klik nou op # 27 build en klik dan op Console Output om te kyk wat presies in die agterkant gebeur het toe dit hardloop.

Jenkins Build

Dit is hoe die uitvoer lyk, eindig met ‘n SUKSES-boodskap.

Sukseskonsole-uitset

Begin deur geekflare van die gebruiker
Loop in duursaamheidsvlak: MAX_SURVIVABILITY
[Pyplyn] Begin van die pyplyn
[Pyplyn] -knoop
Hardloop op Jenkins in / var / lib / jenkins / werkruimte / eerste pyplyn
[Pyplyn] {
[Pyplyn] stadium
[Pyplyn] {(Build)
[Pyplyn] eggo
Hallo, GeekFlare. Begin die program te bou.
[Pyplyn]}
[Pyplyn] // verhoog
[Pyplyn] stadium
[Pyplyn] {(toets)
[Pyplyn] invoer
Wil u voortgaan??
Gaan voort of stop
Goedgekeur deur geekflare
[Pyplyn]}
[Pyplyn] // verhoog
[Pyplyn] stadium
[Pyplyn] {(ontplooi)
[Pyplyn] parallel
[Pyplyn] {(tak: implementering begin)
[Pyplyn] {(tak: implementeer nou)
[Pyplyn] stadium
[Pyplyn] {(Ontplooi begin)
[Pyplyn] stadium
[Pyplyn] {(Nou ontplooi)
[Pyplyn] getContext
[Pyplyn] isUnix
[Pyplyn] sh
[Pyplyn] eggo
Begin met die ontplooiing ..
[Pyplyn]}
+ docker inspekteer -f. nginx
[Pyplyn] // verhoog
[Pyplyn]}

Fout: Geen so ‘n voorwerp nie: nginx
[Pyplyn] isUnix
[Pyplyn] sh
+ docker trek nginx
Die gebruik van standaard-etiket: nuutste
nuutste: Trek uit biblioteek / nginx
8d691f585fa8: Trek die laag aan
5b07f4e08ad0: Trek die laag laag
abc291867bca: Trek die laag aan
abc291867bca: Verifiëring van Checksum
abc291867bca: Aflaai voltooi
5b07f4e08ad0: Verifiëring van tjeks
5b07f4e08ad0: Aflaai voltooi
8d691f585fa8: Verifiëring van tjeksum
8d691f585fa8: Aflaai voltooi
8d691f585fa8: Trek voltooi
5b07f4e08ad0: Trek voltooi
abc291867bca: Trek voltooi
Vertering: sha256: 922c815aa4df050d4df476e92daed4231f466acc8ee90e0e774951b0fd7195a4
Status: nuwer beeld vir nginx afgelaai: nuutste
[Pyplyn] withDockerContainer
Dit lyk nie of Jenkins binne ‘n houer loop nie
$ docker run -t -d -u 125: 131 -w "/ var / lib / jenkins / werkruimte / eerste pyplyn" -v "/ var / lib / jenkins / workspace / First Pipeline: / var / lib / jenkins / workspace / First Pipeline: rw, z" -v "/ Var / lib / jenkins / werkplek / Eerste [Email protected]: / Var / lib / jenkins / werkplek / Eerste [Email protected]: RW, z" -e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** nginx-kat
$ docker top 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943 -eo pid, komm
[Pyplyn] {
[Pyplyn] eggo
Docker geskep
[Pyplyn]}
$ docker stop – tyd = 1 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
$ docker rm -f 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
[Pyplyn] // withDockerContainer
[Pyplyn]}
[Pyplyn] // verhoog
[Pyplyn]}
[Pyplyn] // parallel
[Pyplyn]}
[Pyplyn] // verhoog
[Pyplyn] stadium
[Pyplyn] {(Prod)
[Pyplyn] eggo
Die program is gereed gereed
[Pyplyn]}
[Pyplyn] // verhoog
[Pyplyn]}
[Pyplyn] // knooppunt
[Pyplyn] Einde van die pyplyn
Klaar: SUKSES

Bogenoemde Jenkins Pipeline het ‘n doktersbeeld van Nginx geskep. U kan dit verifieer deur die onderstaande opdrag uit te voer. U kan sien dat die Nginx-docker-afbeelding ook gelys is.

[Email protected]: ~ $ docker-beeld ls
REPOSITORY LAG BEELD ID GESKAPTE GROOTTE
nginx nuutste 540a289bab6c 2 weke gelede 126MB
httpd nuutste 7d85cc3b2d80 2 maande gelede 154MB
redis nuutste f7302e4ab3a8 2 maande gelede 98.2MB
geekflare_mongodb nuutste 095d17727ca0 3 maande gelede 325MB

Afsluiting

Ek hoop dit gee jou ‘n idee van Jenkins-pyplyn voordele en hoe u een kan skep. Bogenoemde is ‘n eenvoudige demonstrasie, en die beste manier om te leer is om komplekse pypleidings te probeer bou.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me