Jenkins Pipeline-handleiding: Hoe maak je er een? JenkinsBestand (voorbeeld)

⚡ Slimme samenvatting

Jenkins Pipeline-koppelingen voor het bouwen, testen en implementeren van taken vormen één geordende reeks die als code wordt uitgevoerd. JenkinsHet bestand dat naast het project wordt opgeslagen, zet die reeks om in een controleerbare, versiebeheerde definitie van de oplevering.

  • 🔘 Pijpleiding: Een groep onderling verbonden gebeurtenissen waarbij elke taak afhankelijk is van de voorgaande.
  • ☑️ JenkinsFile: Een tekstbestand in een domeinspecifieke taal met daarin elke pipeline-stap.
  • Twee syntaxen: Declaratief biedt een vaste hiërarchie; scripted ruilt structuur in voor Groovy controle.
  • 🧪 Vier termen: Pipeline, node, stage en step benoemen respectievelijk de stroom, machine, fase en taak.
  • Installatiepad: Installeer de build pipeline-plugin, voeg een pipeline-weergave toe, koppel de taken aan elkaar en voer het uit.
  • 📌 Praktijken: Plaats materiële taken in een knooppuntblok, niet-insteltaken in een fase en plaats invoer in time-outs.

Jenkins pijplijn gedefinieerd als code in een JenkinsDien in

Wat is Jenkins Pijpleiding?

Jenkins Pipeline is een combinatie van plugins die de integratie en implementatie ondersteunt. continue leveringspijpleidingenHet is een uitbreidbare automatiseringsserver voor het creëren van eenvoudige en complexe leveringspipelines als code via de pipeline DSL. Een pipeline is een groep gebeurtenissen die in een bepaalde volgorde met elkaar verbonden zijn.

Wat zijn continue leveringspijplijnen? Hoe het werkt?

In een Jenkins In een pipeline is elke taak of gebeurtenis afhankelijk van ten minste één of meer andere gebeurtenissen, zoals het onderstaande diagram laat zien.

De continue leveringspipeline beschrijft de fasen bouwen, implementeren, testen en vrijgeven. Jenkins
Werken van Jenkins Continue leveringspijplijnen

De afbeelding hierboven toont een continue-leveringspijpleiding in Jenkins, opgebouwd uit statussen genaamd build, deploy, test en release. Elke status heeft zijn eigen gebeurtenissen, die in een bepaalde volgorde worden uitgevoerd.

Een continue leveringspipeline brengt dat proces automatisch tot uitdrukking, waarbij software van versiebeheer naar release wordt gebracht via één herhaalbare reeks builds. het testen van en implementatiefasen.

Wat is een JenkinsBestand?

Jenkins Pijplijnen kunnen worden gedefinieerd in een tekstbestand met de naam JenkinsEen bestand. Dit bestand drukt de pipeline uit als code in een domeinspecifieke taal (DSL) en bevat elke stap die nodig is om de pipeline uit te voeren.

De voordelen van het gebruik JenkinsDe bestanden zijn:

  • One JenkinsHet bestand kan pipelines creëren voor elke branch en pull requests uitvoeren.
  • U kunt uw beoordeling bekijken Jenkins code in de pipeline
  • U kunt uw Jenkins pijpleiding
  • Dit is de unieke bron voor uw pijplijn en kan door meerdere gebruikers worden gewijzigd.

Een pijplijn kan worden gedefinieerd in de Jenkins web-UI of in een JenkinsHet bestand is opgenomen in versiebeheer. Een minimaal declaratief bestand heeft een vaste structuur: een pipelineblok, een agent en stages met één stage per fase.

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

Door het bestand in de hoofdmap van de repository op te slaan, wordt de pipeline samen met de code van een versie voorzien.

Declaratieve versus gescripte pijplijnsyntaxis

Er zijn twee types Jenkins pijplijnsyntaxis die wordt gebruikt om uw JenkinsHet dossier.

  1. Declaratief
  2. scripted

Declaratief

De declaratieve pijplijnsyntaxis is de eenvoudigere route. Deze volgt een vooraf gedefinieerde hiërarchie en beheert toch elk aspect van de pijplijnuitvoering op een overzichtelijke manier.

scripted

scripted Jenkins pijpleiding draait op de Jenkins De controller wordt via een lichtgewicht executor uitgevoerd, die zeer weinig resources gebruikt om de pipeline om te zetten in atomaire commando's. De twee zijn behoorlijk verschillend geschreven, dus kies er één per situatie. JenkinsHet dossier.

⚠️ Let op: Jenkins noemt nu de meester the controleur.

Waarom gebruiken Jenkins Pijpleiding?

Jenkins is een open continue integratieserver dat automatiseert software ontwikkelingsprocessenJe kunt meerdere maken. automatiseringsbanen selecteer uw use cases en voer ze uit als één pipeline.

Hieronder volgen de redenen waarom u gebruik zou moeten maken van Jenkins pijpleiding:

  • De pipeline is als code geïmplementeerd, waardoor meerdere gebruikers het proces kunnen bewerken en uitvoeren.
  • De pipelines zijn robuust: als de server onverwacht opnieuw opstart, wordt de pipeline automatisch hervat.
  • Je kunt een pipeline pauzeren en vasthouden totdat een gebruiker invoer geeft.
  • Pipelines ondersteunen grote projecten: voer meerdere taken tegelijk uit en gebruik pipelines zelfs in een lus.

Jenkins Pijpleiding Concepts

Vier termen komen steeds terug in elke JenkinsFile:

TermijnBeschrijving
PijpleidingEen set instructies, geschreven in code, die het volledige bouwproces voor continue levering omvat. Met een pipeline kun je de applicatie bouwen, testen en leveren.
KnooppuntDe machine waarop Jenkins Een 'run' wordt een knooppunt genoemd. Een knooppuntblok wordt voornamelijk gebruikt in scriptgestuurde pipeline-syntaxis.
StadiumEen stageblok bevat een reeks stappen. De bouw-, test- en implementatieprocessen komen elk samen in een stage, en dat is ook wat de pipeline-weergave visualiseert.
Stap voorEen enkele taak die een specifiek proces op een bepaald tijdstip uitvoert. Een pipeline is een reeks stappen.

Installeer de Build Pipeline-plug-in in Jenkins

De build pipeline-plugin creëert een pipeline-weergave van inkomende en uitgaande taken en voegt triggers voor handmatige interventie toe.

Installeer het als volgt:

Stap 1) De instellingen voor de plugin zijn te vinden onder Beheren Jenkins > Plug-ins beheren, hieronder weergegeven.

⚠️ Versie-opmerking: actueel Jenkins releases label dit scherm Beheren Jenkins → PluginsDe tabbladen gedragen zich zoals hier beschreven.

Pagina Plug-ins beheren in Jenkins waar de instellingen van de build pipeline plugin zich bevinden

Als u de plug-in al hebt geïnstalleerd, wordt deze weergegeven onder het tabblad Geïnstalleerd.

Geïnstalleerd tabblad van de Jenkins Pluginmanager met een lijst van de build pipeline-plugins

Stap 2) Als de plugin nog niet is geïnstalleerd, wordt deze weergegeven onder het tabblad 'Beschikbaar'.

Nadat de plugin is geïnstalleerd:

Hoe maak je Jenkins Pijpleiding

Zodra u bent ingelogd op uw Jenkins dashboards:

Stap 1) Klik op de "+" knop aan de linkerkant van uw scherm. Jenkins Dashboard om een ​​pipeline te creëren.

Plus-knop op de Jenkins dashboard gebruikt om een ​​nieuwe weergave toe te voegen

Stap 2) Vul het dialoogvenster voor de nieuwe weergave in:

  1. Geef de pijplijnweergave een naam. We noemen hem "Guru99 Pipeline” voor deze demo.
  2. Selecteer 'Een pijplijnweergave bouwen' onder de opties.
  3. Klik op OK, zoals hieronder weergegeven.

Er wordt een nieuw dialoogvenster geopend met de naam van de pijplijnweergave ingevoerd en 'Een pijplijnweergave bouwen' geselecteerd.

Stap 3) Op de volgende pagina wordt om meer configuratiegegevens gevraagd. Accepteer de standaardinstellingen en zorg ervoor dat u de eerste taak onder de instellingen selecteert.

Klik op Toepassen en vervolgens op OK.

De configuratiepagina van de bouwpipelineweergave met de standaardinstellingen en de eerste taak geselecteerd.

Vervolgens verschijnt de voorbeeldweergave van de pijplijn voor uw item:

Sample Jenkins De build pipeline-weergave is gemaakt voor de Guru99 Pijplijnitem

Een pijplijnbuild uitvoeren

Stap 1) Koppel eerst uw taken aan elkaar: open uw eerste taak en klik op configureren.

Configureer de link op de eerste Jenkins baan die gebruikt werd om banen aan elkaar te koppelen

Stap 2) Schakel nu onder 'Build Triggers' de optie 'Build after other projects are built' in.

De sectie 'Build Triggers' moet zijn ingesteld met de optie 'Build after other projects are built' aangevinkt.

Er bestaat nu een keten voor al uw banen.

Stap 3) Installeer de Build Pipeline view-plugin als je deze nog niet hebt geïnstalleerd.

Stap 4) Op de Jenkins Ga naar het dashboard, maak een weergave aan met de "+" knop, selecteer de optie 'Build Pipeline View' en klik op OK.

Nieuw weergavedialoogvenster met de optie 'Build Pipeline View' geselecteerd.

Stap 5) Zoek in de configuratie van de pijplijnweergave naar Pijplijnstroom.

Selecteer onder Pipeline flow de eerste taak die moet worden uitgevoerd — de taak die is gekoppeld aan de andere taken in stap 1 en 2.

Pijplijnstroominstellingen met Guru99 Project 1 gekozen als de eerste opdracht

GuruHier wordt 99 Project 1 geselecteerd als de eerste taak, waardoor de gekoppelde taken één voor één worden uitgevoerd.

Tijdens de werking van de pijplijn geven rode en groene symbolen de status ervan weer: rood betekent een storing, groen betekent succes.

In dit voorbeeld is de knop groen, wat betekent dat de pipeline succesvol is voltooid.

Groene statusknop die een succesvolle status aangeeft Jenkins pijplijn uitvoeren

Hardlopen Jenkins pijpleiding

Klik op Uitvoeren om het programma te starten. Jenkins pijplijn. Het zal er ongeveer zo uitzien:

De knop 'Uitvoeren' op de Jenkins pijplijnweergave bouwen

Het bovenstaande voorbeeld bouwt een eenvoudig "helloworld.java"-programma. Echte projecten maken gebruik van veel complexere pipelines, zoals het onderstaande uitgebreidere overzicht laat zien.

Voltooid Jenkins Een overzicht van de bouwpipeline waarin elke gekoppelde taak in de juiste volgorde wordt weergegeven.

⚠️ Versie-opmerking: De Build Pipeline-weergaveplug-in is de verouderde manier om gekoppelde freestyle-taken te visualiseren; de huidige werkwijze definieert dezelfde workflow in een JenkinsBestand. Blauw Ocean is niet langer verbeterd.

Beste praktijken met behulp van Jenkins Pijpleiding

Zeven gewoonten zorgen ervoor dat een pijplijn beheersbaar blijft:

  • Gebruik de originele Jenkins Pijpleiding
  • Ontwikkel uw pijplijn als code
  • Alle niet-installatiewerkzaamheden in uw pijplijn moeten binnen een faseblok plaatsvinden.
  • Alle materiële werkzaamheden in een pijpleiding moeten binnen een knooppuntblok worden uitgevoerd.
  • Gebruik geen invoer binnen een knooppuntblok.
  • Stel nooit omgevingsvariabelen in met de globale variabele env
  • Verpak uw invoer in een time-out

Veelgestelde vragen

Het scant een repository en vindt elke branch die een bepaalde code bevat. JenkinsHet bestand maakt een taak aan voor elk onderdeel. Het gedrag van de branches wordt bepaald door de variabele BRANCH_NAME in dat bestand.

Bewaar ze in de Jenkins De inloggegevens worden opgeslagen en uitgelezen met de `credentials()`-helper in een `environment`-blok. De waarde wordt tijdens de uitvoering geïnjecteerd en gemaskeerd in het logbestand, zodat er geen wachtwoord in het bestand wordt opgeslagen.

Het wordt uitgevoerd nadat de fasen zijn voltooid, ongeacht de uitkomst. Voorwaarden zoals 'altijd', 'succes', 'mislukking' en 'instabiel' zorgen ervoor dat één bestand rapporten publiceert, artefacten archiveert en het team op de hoogte stelt zonder herhaling.

Ja. Een parallel blok binnen een fase voert zijn vertakkingen gelijktijdig uit, wat geschikt is voor testsuites die over meerdere browsers zijn verdeeld. Elke vertakking heeft een agent nodig, dus de uitvoeringstijd neemt alleen af ​​wanneer er uitvoerders beschikbaar zijn.

Stuur het naar het declaratieve linter-eindpunt, of open Replay op een eerdere run, bewerk het script en voer het uit zonder de repository aan te raken. Beide methoden sporen syntaxfouten vroegtijdig op.

Een AI-assistent kan een lang consolelogboek lezen en herhaalde stacktrace groeperen. tracHet geeft de fase aan waarin de fout is opgetreden. Ook worden intermitterende tests gemarkeerd. Controleer elke suggestie aan de hand van het onbewerkte logbestand.

Ja. Copilot Stelt een declaratief raamwerk op aan de hand van een commentaar waarin de fasen worden benoemd en voltooit stappen zoals uitchecken en shell-opdrachten. RevBekijk agentlabels, inloggegevens en time-outs, waarvan de suggesties vaak onjuist zijn.

Zodra hetzelfde blok in drie of meer gevallen voorkomt JenkinsBestanden. Een gedeelde bibliotheek bewaart die logica in één versiebeheerde repository, zodat een oplossing elk project bereikt en elk bestand alleen de eigen fasen bevat.

Vat dit bericht samen met: