Jenkins Tutorial Pipeline: Cum se creează JenkinsFișier (Exemplu)

⚡ Rezumat inteligent

Jenkins Legăturile din conducte construiesc, testează și implementează joburi într-o secvență ordonată care rulează ca și cod. JenkinsFișierul comis lângă proiect transformă acea secvență într-o definiție revizuibilă și versionată a livrării.

  • 🔘 Conductă: Un grup de evenimente interconectate în care fiecare job depinde de cel precedent.
  • ☑️ JenkinsFişier: Un fișier text într-un limbaj specific domeniului care conține fiecare pas al conductei.
  • ✅ Două sintaxe: Declarativul oferă o ierarhie fixă; structură de tranzacții scriptate pentru Groovy controla.
  • 🧪 Patru termeni: Conductă, nod, etapă și pas denumesc fluxul, mașina, faza și sarcina.
  • 🛠️ Calea de configurare: Instalați pluginul pipeline de construire, adăugați o vizualizare a pipeline-ului, înlănțuiți joburile, rulați-l.
  • 📌 Practici: Păstrați lucrările materiale într-un bloc de nod, lucrările care nu sunt legate de configurare într-o etapă și încadrați intrările în timeout-uri.

Jenkins conductă definită ca cod într-un JenkinsFișier

Ce Este Jenkins Conductă?

Jenkins Pipeline este o combinație de plugin-uri care suportă integrarea și implementarea conducte de livrare continuăEste un server de automatizare extensibil pentru crearea de conducte de livrare simple și complexe sub formă de cod prin DSL-ul conductei. O conductă este un grup de evenimente interconectate într-o secvență.

Ce este conductele de livrare continuă? Cum functioneaza?

Într-o Jenkins În cadrul pipeline-ului, fiecare job sau eveniment are un fel de dependență de cel puțin unul sau mai multe evenimente, așa cum arată diagrama de mai jos.

Stările canalului de livrare continuă se construiesc, se implementează, se testează și se lansează în Jenkins
Lucrarea de Jenkins Conducte de livrare continuă

Imaginea de mai sus reprezintă o conductă de livrare continuă în Jenkins, alcătuită din stări numite build (construire), deploy (implementare), test (testare) și release (lansare). Fiecare stare are propriile evenimente, care rulează în secvență.

O conductă de livrare continuă exprimă acest proces automat, transportând software-ul de la controlul versiunilor până la lansare printr-o secvență repetabilă de build-uri. de testare și etapele de implementare.

Ce este a JenkinsFişier?

Jenkins conductele pot fi definite într-un fișier text numit JenkinsFișier. Exprimă conducta ca și cod într-un limbaj specific domeniului (DSL) și conține fiecare pas necesar pentru rularea conductei.

Avantajele utilizării JenkinsFișierele sunt:

  • O JenkinsFișierul poate crea conducte pentru fiecare ramură și poate executa cereri de extragere (pull requests).
  • Puteți să vă revizuiți Jenkins cod pe conductă
  • Îți poți audita Jenkins conducte
  • Aceasta este sursa singulară pentru conducta dvs. și poate fi modificată de mai mulți utilizatori.

O conductă poate fi definită în Jenkins interfață web sau într-o JenkinsFișier comis către controlul sursei. Un fișier declarativ minimal are o formă fixă ​​— un bloc de canalizare, un agent și etape care conțin câte o etapă per fază.

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying'
            }
        }
    }
}

Salvarea la rădăcina depozitului versionează canalul cu codul.

Sintaxa declarativă versus scriptată a conductei

Există două tipuri de Jenkins sintaxa canalului utilizată pentru definirea dvs. JenkinsFişier.

  1. Declarativ
  2. Scriptat

Declarativ

Sintaxa declarativă a pipeline-ului este cea mai ușoară. Aceasta urmează o ierarhie predefinită și controlează în continuare fiecare aspect al execuției pipeline-ului într-un mod simplu.

Scriptat

Scriptat Jenkins conducta circulă pe Jenkins controler printr-un executor ușor, folosind foarte puține resurse pentru a traduce canalul în comenzi atomice. Cele două sunt scrise destul de diferit, așa că alegeți unul pentru fiecare JenkinsFişier.

⚠️ Notă: Jenkins acum numește maestru il controlor.

De ce folosiți Jenkins Conductă?

Jenkins este un deschis server de integrare continuă care automatizează procesele de dezvoltare softwarePuteți crea mai multe locuri de muncă în automatizare din cazurile tale de utilizare și rulează-le ca o singură pipeline.

Iată motivele pentru care ar trebui să folosești Jenkins conducta:

  • Pipeline-ul este implementat ca și cod, astfel încât mai mulți utilizatori pot edita și executa procesul.
  • Conductele sunt robuste: dacă serverul repornește în mod neașteptat, conducta se reia automat.
  • Puteți întrerupe o pipeline și o puteți menține activă până când un utilizator oferă informații.
  • Conductele suportă proiecte mari: rulează mai multe joburi și chiar folosește conducte într-o buclă.

Jenkins Conductă Concepts

Patru termeni se repetă în fiecare JenkinsFişier:

TermenDescriere
ConductăUn set de instrucțiuni scrise ca și cod care acoperă întregul proces de construire pentru livrare continuă. Cu ajutorul unui pipeline puteți construi, testa și livra aplicația.
NodMașina pe care Jenkins rulează se numește nod. Un bloc de nod este utilizat în principal în sintaxa scriptată a conductelor.
EtapăUn bloc de etape conține o serie de pași. Procesele de construire, testare și implementare se reunesc fiecare într-o etapă, care este și ceea ce vizualizează vizualizarea canalului.
PasO singură sarcină care execută un anumit proces la un moment dat. O conductă este o serie de pași.

Instalați pluginul Build Pipeline în Jenkins

Pluginul pentru conducta de construire creează o vizualizare a conductei pentru joburile primite și trimise și adaugă declanșatoare de intervenție manuală.

Instalați-l după cum urmează:

Pas 1) Setările pluginului pot fi găsite sub Administrare Jenkins > Gestionare pluginuri, prezentat mai jos.

⚠️ Notă privind versiunea: curent Jenkins lansări etichetează acest ecran Administrare Jenkins → Plugin-uri; filele se comportă așa cum este descris aici.

Pagina Gestionare pluginuri în Jenkins unde se află setările pluginului pentru conducta de compilare

Dacă ați instalat deja pluginul, acesta este afișat în fila Instalat.

Fila instalată a Jenkins manager de pluginuri care listează pluginul pentru conducta de compilare

Pas 2) Dacă pluginul nu este deja instalat, acesta apare în fila Disponibil.

Cu pluginul instalat:

Cum se creează Jenkins Conductă

După ce te-ai conectat la Jenkins tablou de bord:

Pas 1) Faceți clic pe butonul „+” din partea stângă a Jenkins tablou de bord pentru a crea o conductă.

Butonul Plus de pe Jenkins tabloul de bord folosit pentru a adăuga o nouă vizualizare

Pas 2) Completați caseta de dialog pentru noua vizualizare:

  1. Dați un nume vizualizării canalului. O vom numi „Guru99 Pipeline” pentru această demonstrație.
  2. Selectați Construiți o vizualizare a canalului sub opțiuni
  3. Faceți clic pe ok, așa cum se arată mai jos.

Caseta de dialog Vizualizare nouă cu numele vizualizării conductei introdus și opțiunea Construiți o vizualizare conductă selectată

Pas 3) Pagina următoare solicită mai multe detalii de configurare. Acceptați setările implicite și asigurați-vă că alegeți prima sarcină din setări.

Faceți clic pe Aplicare și apoi pe OK.

Creați pagina de configurare a vizualizării canalului cu setările implicite și primul job selectat

Apoi apare vizualizarea exemplului de canalizare a elementului dvs.:

Eşantion Jenkins vizualizare a canalului de construire creată pentru Guru99 Articol din conductă

Rularea unei build Pipeline

Pas 1) Înlănțuiți mai întâi joburile: deschideți primul job și faceți clic pe configurare.

Configurați linkul pe primul Jenkins job folosit pentru a începe lanțul de joburi

Pas 2) Acum, sub Declanșatoare de construire, bifați opțiunea Construiește după ce alte proiecte sunt construite.

Secțiunea Declanșatoare de construire cu opțiunea Construiește după construirea altor proiecte bifată

Acum există un lanț pentru toate locurile tale de muncă.

Pas 3) Instalați pluginul Build Pipeline view dacă nu îl aveți deja instalat.

Pas 4) Pe Jenkins tabloul de bord, creați o vizualizare cu butonul „+”, selectați opțiunea Build Pipeline View și faceți clic pe OK.

Casetă de dialog Vizualizare nouă cu opțiunea Build Pipeline View selectată

Pas 5) Sub Configurare vizualizare canal, localizați Flux canal.

Sub Flux de canal, selectați jobul inițial de executat — jobul legat de celelalte din pașii 1 și 2.

Setări de flux de conductă cu Guru99 Proiectul 1 ales ca job inițial

GuruProiectul 99 este selectat aici ca job inițial, astfel încât joburile înlănțuite se execută unul câte unul.

În timp ce conducta rulează, simbolurile roșii și verzi raportează starea acesteia: roșu indică eșecul, verde indică succesul.

În acest exemplu, butonul este verde, deci pipeline-ul a reușit.

Buton verde de stare care arată o operațiune reușită Jenkins rulare conductă

Alergare Jenkins conducte

Faceți clic pe Executare pentru a rula Jenkins conductă. Va arăta cam așa:

Butonul Run de pe Jenkins vizualizare de construire a canalului

Exemplul de mai sus construiește un program simplu „helloworld.java”. Proiectele reale înlănțuie conducte mult mai complexe, așa cum arată imaginea completă de mai jos.

Terminat Jenkins vizualizare a canalului de construire care arată fiecare job înlănțuit în secvență

⚠️ Notă privind versiunea: Pluginul Build Pipeline view este metoda tradițională de vizualizare a joburilor freestyle înlănțuite; practica actuală definește același flux într-un JenkinsFișier. Albastru Ocean nu mai este îmbunătățită.

Cele mai bune practici de utilizare Jenkins Conductă

Șapte obiceiuri mențin o conductă de lucru funcțională:

  • Folosește autenticul Jenkins Conductă
  • Dezvoltați-vă pipeline ca cod
  • Orice lucru care nu este de configurare în conducta dvs. ar trebui să aibă loc într-un bloc de etapă.
  • Orice lucrare materială într-o conductă trebuie efectuată într-un bloc de noduri.
  • Nu utilizați date de intrare într-un bloc de noduri.
  • Nu setați niciodată variabile de mediu cu variabila globală env
  • Încheiați intrările într-un timeout

Întrebări frecvente

Scanează un depozit, găsește fiecare ramură care conține un JenkinsFișier și creează câte un job pentru fiecare. Comportamentul ramificării provine din variabila BRANCH_NAME din fișierul respectiv.

Păstrați-le în Jenkins Credențialele le stochează și le citesc cu ajutorul funcției de ajutor credentials() într-un bloc de mediu. Valoarea este injectată la momentul execuției și mascată în jurnal, deci nicio parolă nu se află în fișier.

Rulează după finalizarea etapelor, indiferent de rezultat. Condiții precum întotdeauna, succes, eșec și instabilitate permit unui fișier să publice rapoarte, să arhiveze artefacte și să notifice echipa fără repetiții.

Da. Un bloc paralel în interiorul unei etape își execută ramurile simultan, ceea ce este potrivit pentru suitele împărțite pe browsere. Fiecare ramură are nevoie de un agent, deci timpul de execuție scade doar atunci când executorii sunt liberi.

Postează-l la endpoint-ul declarativ al linter-ului sau deschide Replay la o rulare anterioară, editează scriptul și execută-l fără a atinge repozitoriul. Ambele metode detectează din timp erorile de sintaxă.

Un asistent cu inteligență artificială poate citi un jurnal lung al consolei, o stivă repetată de grupare tracși denumește etapa în care a început eroarea. De asemenea, semnalează testele intermitente. Confirmați fiecare sugestie în raport cu jurnalul brut.

Da. Co-pilot elaborează un schelet declarativ dintr-un comentariu care denumește etapele și finalizează pași precum checkout și comenzi shell. Revvizualizați etichetele, acreditările și expirarile agenților, pe care sugestiile le ghicesc adesea greșit.

Odată ce același bloc apare în trei sau mai multe JenkinsFișiere. O bibliotecă partajată păstrează acea logică într-un singur depozit versionat, astfel încât o corecție ajunge la fiecare proiect și fiecare fișier își păstrează doar propriile etape.

Rezumați această postare cu: