Cum să-ți creezi prima conductă Jenkins?

Un ghid pas cu pas pentru crearea conductei Jenkins


De ce Jenkins Pipeline?

Livrarea continuă (CD) este o parte esențială a DevOps Lifecycle.

Se asigură că creatorii de dezvoltatori de software / aplicație sunt întotdeauna gata de producție. Pentru ca acest lucru să se întâmple, de fiecare dată când codul este actualizat, trebuie să fie construit, testat și implementat continuu. Aici intră în imagine Jenkins Pipeline.

În DevOps, integrarea continuă și livrarea continuă (CI / CD) se realizează prin intermediul conductei Jenkins. Folosirea Jenkins Pipeline pentru CD ajută la livrarea software-ului cu versiuni mai rapide și frecvente. Acest lucru ajută la încorporarea feedback-ului în fiecare versiune următoare.

Ce este Jenkins Pipeline?

Jenkins Pipeline este o combinație de locuri de muncă pentru a furniza software continuu folosind Jenkins.

Presupun că știi ce este Jenkins. Dacă nu, verificați acest lucru Curs Udemy pentru a-l stăpâni pe Jenkins.

O conductă Jenkins constă din mai multe stări sau etape, iar acestea sunt executate într-o secvență una după cealaltă. JenkinsFile este un fișier text simplu care este utilizat pentru a crea o conductă ca cod în Jenkins. Conține cod în limbajul specific domeniului Groovy (DSL), care este simplu de scris și care poate fi citit de oameni.

Fie puteți rula JenkinsFile separat, fie puteți rula codul conductei de la Jenkins Web UI. Există două modalități prin care poți crea o conductă folosind Jenkins.

  • Declarativ – un nou mod de a crea Jenkins Pipeline. Aici scrieți un cod groovy care conține blocuri „conducte”, care este verificat într-un SCM (Source Code Management)
  • Script – modul de scriere a codului groovy unde codul este definit în blocurile „nod”.

Înainte de a intra în demo, dacă nu ați instalat Jenkins, vă rugăm să o instalați mai întâi. Asigurați-vă că aveți Jenkins funcționat pe sistemul dvs..

Creați o conductă Jenkins

Așa arată un flux de conducte Jenkins, care constă în mai multe etape între dezvoltatorii care creează un software (codare) și software livrat la producție.

Jenkins Pipeline

Să creăm o conductă declarativă.

În tabloul de bord Jenkins, faceți clic pe Element nou. Apoi introduceți un nume de articol, de exemplu, „Prima conductă” și selectați proiectul „Pipeline”. Apoi faceți clic pe OK.

Element nou - Jenkins Pipeline

Faceți clic pe fila Pipeline așa cum se arată în imaginea de mai jos și puneți codul JenkinsFile (Groovy Code) aici.

Codul JenkinsFile

conductă {
agent orice
etape {
stage (‘Build’) {
pasi {
ecou ‘Bună, GeekFlare. Începând să construiți aplicația. ‘
}
}
stage (‘Test’) {
pasi {
intrare („Vrei să continui?”)
}
}
stage (‘Deploy’) {
paralel {
stage (‘Start implementare’) {
pasi {
ecou "Începeți implementarea .."
}
}
stage (‘Implementare acum’) {
agent {
docker {
reutilizareNod adevărat
imagine „nginx”
}
}

pasi {
ecou "Docker Creat"
}
}
}
}
scenă („Prod”) {
pasi {
ecou "Aplicația este gata Prod"
}

}
}
}

Permiteți-mi să vă explic blocurile de mai sus.

  • conducte blocul constă din toate instrucțiunile de construire, testare și livrare de software. Este componenta cheie a unei conducte Jenkins.
  • Un agent este alocat să execute conducta pe un nod și să aloce un spațiu de lucru pentru conductă.
  • A etapă este un bloc care are pași pentru a construi, testa și implementa aplicația. Etapele sunt utilizate pentru vizualizarea proceselor Jenkins Pipeline.
  • A Etapa este o singură sarcină care trebuie îndeplinită, de exemplu, crearea unui director, rularea unei imagini docker, ștergerea unui fișier etc.

Codul Groovy de mai sus, îl folosesc pentru JenkinsFile. Orice agent disponibil primește atribuirea conductei. Apoi definesc etapa Build și execut un simplu pas de ecou. Apoi am definit etapa de testare în care pasul vă întreabă dacă doriți să continuați sau nu. După aceea, am creat o etapă Deploy, care mai are două etape în care rulează în paralel. Etapa de început a implementării are un pas cu comanda ecou, ​​iar implementarea are acum un pas care trage o imagine docker a Nginx pe nod. În cele din urmă, există o etapă Prod cu un simplu pas de ecou.

Conducta explicată mai sus are etape care au pași simpli pentru a înțelege cum funcționează. După ce înveți cum să creezi o conductă, poți adăuga mai multă complexitate și creezi, de asemenea, conducte complexe.

După ce aveți codul în fila Pipeline, faceți clic pe Aplicare și Salvare. În cele din urmă, faceți clic pe Build Now pentru a începe construirea conductei Jenkins pe care tocmai ați creat-o.

Construiți acum

Așa va arăta interfața cu utilizatorul când se execută conducta. Dacă ați respectat corect toți pașii, compilarea dvs. va avea succes și va apărea o culoare albastră pentru construcție (# 27). Dacă există greșeli în construcție, aceasta va conferi culoare roșie construcției (# 27).

Jenkins Build 27

Acum faceți clic pe construirea nr. 27 și apoi faceți clic pe Consola Output pentru a verifica ce s-a întâmplat exact în back-end când a rulat.

Jenkins Build

Așa se pare că ieșirea se va încheia cu un mesaj SUCCESS.

Iesire Consola de succes

Început de utilizator geekflare
Funcționare la nivel de durabilitate: MAX_SURVIVABILITY
[Pipeline] Începutul conductei
Nod [conductă]
Se rulează pe Jenkins în / var / lib / jenkins / workspace / First Pipeline
[Conductă] {
Etapa [conductă]
[Pipeline] {(Construire)
[Pipeline] ecou
Bună, GeekFlare. Începând să construiți aplicația.
[Conductă]}
[Conductă] // etapa
Etapa [conductă]
[Conductă] {(testare)
Intrare [conductă]
Doriți să continuați?
Continuați sau avocați
Aprobat de geekflare
[Conductă]}
[Conductă] // etapa
Etapa [conductă]
[Conductă] {(implementare)
[Conductă] paralel
[Pipeline] {(Sucursala: demararea implementării)
[Pipeline] {(Sucursala: implementare acum)
Etapa [conductă]
[Pipeline] {(Start implementare)
Etapa [conductă]
[Pipeline] {(implementare acum)
[Pipeline] getContext
[Pipeline] este Unix
[Conductă] sh
[Pipeline] ecou
Începeți implementarea ..
[Conductă]}
+ docker inspecta -f. Nginx
[Conductă] // etapa
[Conductă]}

Eroare: Niciun astfel de obiect: nginx
[Pipeline] este Unix
[Conductă] sh
+ docker pull nginx
Folosind eticheta implicită: cea mai recentă
cea mai recentă: extragerea din bibliotecă / nginx
8d691f585fa8: Tragerea stratului fs
5b07f4e08ad0: Tragerea stratului fs
abc291867bca: Stragerea stratului fs
abc291867bca: verificarea cecului
abc291867bca: Descărcare completă
5b07f4e08ad0: Verificarea Checksum-ului
5b07f4e08ad0: Descărcare completă
8d691f585fa8: verificarea cecului
8d691f585fa8: descărcare completă
8d691f585fa8: Trageți complet
5b07f4e08ad0: Trageți complet
abc291867bca: Trage complet
Digest: sha256: 922c815aa4df050d4df476e92daed4231f466acc8ee90e0e774951b0fd7195a4
Stare: Descărcat imaginea mai nouă pentru nginx: cea mai recentă
[Pipeline] cuDockerContainer
Jenkins nu pare să circule într-un container
$ docker run -t -d -u 125: 131 -w "/ var / lib / jenkins / workspace / First Pipeline" -v "/ var / lib / jenkins / workspace / First Pipeline: / var / lib / jenkins / workspace / First Pipeline: rw, z" -v "/ Var / lib / Jenkins / spațiu de lucru / Primul [Email protected]: / Var / lib / Jenkins / spațiu de lucru / Primul [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 pisica
$ docker top 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943 -eo pid, com
[Conductă] {
[Pipeline] ecou
Docker Creat
[Conductă]}
$ docker stop – time = 1 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
$ docker rm -f 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
[Pipeline] // cuDockerContainer
[Conductă]}
[Conductă] // etapa
[Conductă]}
[Conductă] // paralel
[Conductă]}
[Conductă] // etapa
Etapa [conductă]
[Conductă] {(Prod)
[Pipeline] ecou
Aplicația este gata Prod
[Conductă]}
[Conductă] // etapa
[Conductă]}
[Pipeline] // nod
[Pipeline] Sfârșitul conductei
Finisat: SUCCES

Conducta Jenkins de mai sus a creat o imagine de andocare a Nginx. Puteți verifica asta rulând comanda de mai jos. Puteți vedea imaginea de docker Nginx este, de asemenea, listat.

[Email protected]: ~ $ docker imagine ls
TAG REPOSITORIU MĂRIRE CREATE ID IMAGINI
nginx cel mai recent 540a289bab6c acum 2 săptămâni 126MB
httpd cel mai recent 7d85cc3b2d80 acum 2 luni 154MB
redis cea mai recentă f7302e4ab3a8 acum 2 luni 98.2MB
geekflare_mongodb cel mai recent 095d17727ca0 acum 3 luni 325MB

Concluzie

Sper că asta vă oferă o idee despre Conducta Jenkins beneficiile și modul în care puteți crea unul. Cele de mai sus sunt o demonstrație simplă, iar cel mai bun mod de a învăța este încercând construirea unor conducte complexe.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map