Planlægning af et job i Jenkins

1. Introduktion

I denne artikel dækker vi forskellige måder at planlægge job i Jenkins på.

Vi begynder med at planlægge et simpelt job, der udfører noget så simpelt som at udskrive en almindelig tekstbesked. Og vi vil udvikle eksemplet til planlægning af et job, der automatisk udløses af ændringer i et SCM-arkiv som GitHub, Bitbucket osv.

2. Første opsætning

Det antager vi JDK og Maven er blevet installeret i Global værktøjskonfiguration med navne som JDK9.0.1 og Maven3.5.2, henholdsvis på Jenkins-serveren.

Det forudsætter også det vi har adgang til et SCM-lager såsom Bitbucket med et Maven-projekt korrekt konfigureret.

3. Planlægning af et simpelt job

På jobkonfigurationssiden skal vi rulle ned lige til Byg udløsere afsnit. Da vi agter at oprette et ligetil job, skal vi markere afkrydsningsfeltet markeret Byg med jævne mellemrum. Så snart vi markerer dette afkrydsningsfelt, vises et tekstfelt med Tidsplan etiket.

Vi skal levere værdi i et Cron-kompatibelt format. Der er omfattende information tilgængelig på siden, hvis vi klikker på spørgsmålstegnet ved siden af ​​feltet.

Lad os skrive */2 * * * * her, hvilket repræsenterer et interval på to minutter:

Efter tabning ud af tekstfeltet kan vi se oplysninger lige under feltet. Det fortæller os om hvornår jobbet kører næste gang.

Lad os gemme jobbet - om cirka to minutter skal vi se status for den første udførelse af jobbet:

Da vi har konfigureret jobbet til at køre hvert andet minut, bør vi se flere buildnumre, når vi går tilbage til jobpanelet efter at have ventet i nogen tid.

4. Oprettelse af et job, der afstemmer SCM

Lad os bevæge os et skridt fremad og oprette et job, der henter kildekoden fra SCM-arkivet, såsom Bitbucket, og udfører en build.

Lad os oprette et nyt job som forklaret i det foregående afsnit med nogle få ændringer.

I Byg udløsere afsnit, i stedet for at vælge Byg med jævne mellemrum, lad os vælge Afstemning SCM. Så snart vi gør det, skal vi se et tekstfelt med etiket Tidsplan.

Lad os skrive */5 * * * * i dette felt, hvilket betyder, at vi vil planlægge, at jobbet skal køre hvert 5. minut:

Lad os rulle op til Kildekodestyring afsnit. Når du vælger alternativknappen ved siden af Git, vises et nyt afsnit mærket som Opbevaringssteder.

Det er her, vi skal konfigurere detaljerne i vores SCM-lager. Lad os skrive URL'en til SCM-arkivet i Lagrings-URL tekstfelt:

Vi skal også give brugeroplysninger, så Jenkins kan få adgang til lageret.

Lad os klikke på Tilføje knap ved siden af ​​legitimationsoplysninger, som viser en pop op-skærm for at oprette brugeroplysningerne.

Lad os vælge Venlig som Brugernavn med adgangskode. Vi bliver nødt til at skrive brugernavnet og adgangskoden i de angivne tekstfelter:

Ved klik på Tilføje knappen, vi føres tilbage til Kildekodestyring afsnit.

Lad os vælge denne brugerlegitimation i rullemenuen ud for Legitimationsoplysninger:

Nu er den sidste ting, vi skal gøre, at opsætte build-scriptet.

Lad os rulle ned til Byg sektion, klik Tilføj byggetrin og vælg Udfør Shell. Da vi arbejder på et Maven-projekt i SCM-arkivet, vi er nødt til at skrive mvn ren installation, som vil udføre en Maven-bygning.

Lad os prøve at forstå, hvad vi har gjort her.

Vi har oprettet et job, der er planlagt til at køre hvert 5. minut. Jobbet er konfigureret til at trække kildekode fra mastergren i det givne Bitbucket-lager.

Det bruger de medfølgende brugeroplysninger til at logge på Bitbucket.

Efter at have trukket kildekoden, udfører jobbet scriptet, der indeholder en Maven-kommando.

Nu, hvis vi gemmer og venter cirka fem minutter, skal vi se udførelsen af ​​build i Byg historie sektion på jobbrættet.

Det Konsol output skal vise output fra Maven-build. Vi kan se i konsoludgangen, at kildekoden er trukket fra Bitbucket og kommandoen mvn ren installation er udført:

Da det er en Maven-bygning, konsoludgangen kan være meget lang afhængigt af antallet af Maven-afhængigheder, der downloades.

Men i slutningen af ​​output skal vi se BYGG SUCCES besked.

5. Oprettelse af et job, der bruger rørledning som script

Indtil videre har vi set, hvordan man opretter job, der udføres på det foruddefinerede planlagte tidspunkt.

Lad os nu oprette et job, der ikke er bundet til nogen bestemt tidsplan. I stedet konfigurerer vi det til automatisk at udløse, når der er en ny forpligtelse i SCM-arkivet.

Gå tilbage til Jenkins dashboard, lad os klikke Ny vare. Denne gang i stedet for Freestyle-projekt, vælger vi Rørledning. Lad os navngive dette job PipelineAsScriptJob.

Når du klikker på OK-knappen, føres vi til pipelinekonfigurationssiden. Denne side har flere sektioner såsom “Generel", “Byg udløsere ”, “Avancerede projektindstillinger ”og “Rørledning ”.

Lad os rulle ned til “Byg udløsere ” sektion og afkrydsningsfeltet ud for Byg, når en ændring skubbes til Bitbucket. Denne mulighed vil kun være tilgængelig, hvis vi har installeret Bitbucket Plugin:

Lad os rulle ned til Rørledning afsnit. Vi er nødt til at vælge Rørledningsscript i rullemenuen ud for Definition.

Tekstboksen lige under denne rullemenu venter på, at scriptet placeres i. Der er to måder at gøre dette på.

Vi kan enten skrive hele scriptet eller vi kan gøre brug af et værktøj leveret af Jenkins, som er kendt som Rørledningssyntaks.

Lad os vælge den anden mulighed:

Ved klik på Rørledningssyntaks, som fremhævet i diagrammet ovenfor, åbnes en ny fane i browseren. Dette er et praktisk værktøj, hvor vi kan specificere den operation, vi ønsker at udføre, og værktøjet genererer scriptet i Groovy for os. Vi kan derefter kopiere scriptet og indsætte det i pipelinekonfigurationen.

Lad os vælge kasse: Generel SCM i Eksempel trin drop-down. Efter at have leveret SCM Repo URL og brugerlegitimationsoplysninger skal vi klikke på Generer pipeline-script knap.

Dette genererer scriptet i tekstboksen:

Lad os kopiere dette script og gemme det et sted til senere brug.

Lad os på samme side rulle op og vælge withMaven: Giv Maven-miljø i Eksempel trin drop-down. Det skal bemærkes her, at denne mulighed er kun tilgængelig, hvis Pipeline Maven Integration Plugin er installeret.

Vi er nødt til at vælge navnene på Maven- og JDK-installationer ud for de tilsvarende rullelister. Vi er nødt til at klikke på Generer pipeline-script knap.

Dette genererer scriptet i tekstboksen:

Lad os gemme scriptet.

Der er stadig et par flere scripts, som vi skal generere. Lad os vælge node: Tildel node i Eksempel trin drop-down, type mestre i Etiket tekstfelt og klik Generer pipeline-script:

Lad os gemme scriptet.

Og den sidste.

Lad os vælge scene: Stage i Eksempel trin drop-down, skriv scm i Kunstnernavn tekstfelt og klik Generer pipeline-script:

Lad os gemme det.

Det er tid til at samle alle de scripts, der er genereret hidtil, og sy dem sammen:

node ('master') {stage ('scm') {checkout ([$ class: 'GitSCM', branches: [[name: '* / master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [ ], userRemoteConfigs: [[credentialsId: 'e50f564f-fbb7-4660-9c95-52dc93fa26f7', url: '// [email protected] /projects/springpocrepo.git']]]}} stage ('build') {withMaven ( jdk: 'JDK9.0.1', maven: 'Maven3.5.2') {sh 'mvn ren installation'}}}

Den første erklæring, node ('master') i scriptet ovenfor, angiver, at jobbet vil blive udført på en navngivet node mestre, som er standardnoden på Jenkins-serveren.

Lad os kopiere ovenstående script til tekstboksen i Rørledning afsnit:

Lad os gemme denne konfiguration.

Nu er der kun én ting, der er udeladt. Vi er nødt til at konfigurere en Webhook i Bitbucket. Webhook er ansvarlig for at sende en push-underretning til Jenkins-serveren, hver gang en bestemt begivenhed finder sted i Bitbucket.

Lad os se på, hvordan du konfigurerer det.

Lad os logge ind på Bitbucket og vælge et lager. Vi skulle se en mulighed Indstillinger i venstre søjle. Lad os klikke på det, og vi skal se en mulighed Webhooks i WORKFLOW afsnit. Lad os oprette en ny Webhook.

Vi er nødt til at give noget navn til denne webhook i Titel Mark. Vi skal også angive en URL til webhooken i URL Mark. Denne URL skal pege på et bestemt REST API-slutpunkt leveret af Jenkins, og det er slutpunktet bitbucket-krog.

Det skal bemærkes, at URL-adressen SKAL ende med en efterfølgende skråstreg:

Mens vi konfigurerer Webhook ovenfor, har vi valgt mulighed Repository skub. Dette betyder, at Bitbucket sender en underretning til Jenkins-serveren, når der sker et push.

Denne adfærd kan ændres; der er flere forskellige muligheder at vælge imellem.

Lad os nu gå med standardindstillingen, dvs. Repository Push.

Vi kan også konfigurere webhook i Github; her er nogle nyttige oplysninger om, hvordan du konfigurerer det.

Lang historie kort: vi har oprettet et pipeline-script på Groovy-sprog - der skulle trække kildekoden fra hovedgrenen af det medfølgende SCM-lager (ved hjælp af de medfølgende brugeroplysninger) når der er et skub i lageret og så udføre mvn ren installation kommando på Jenkins-serveren.

Det skal bemærkes, at dette job ikke løber på et bestemt tidspunkt. I stedet for venter det, indtil der er et skub i mastergrenen i SCM-arkivet.

Så snart der er en ny push-begivenhed, ser vi en ny udførelse i "Byg historie" sektion på Jenkins jobdashboard.

Vi burde se, at en ny bygning initieres med en verserende status ud for det.

Om et par sekunder skal denne build starte udførelse, og vi kan se den komplette login Konsol output.

Den første sætning i konsoludgangen siger "Startet af Bitbucket push by .." - dette betyder, at build blev udløst automatisk, da en Push fandt sted i Bitbucket:

Hvis alt går godt, skal bygningen gennemføres med succes.

6. Opret et job, der bruger Jenkinsfile

Det er muligt IKKE at skrive noget script i Jenkins-pipelinen og stadig opnå build-udførelse, der udløses af Bitbucket Webhook.

For at gøre det, Vi er nødt til at oprette en ny fil i Bitbucket og navngive den som Jenkinsfile. Rørledningsscriptet skal overføres til denne Jenkinsfil med en lille ændring. Lad os se, hvordan man gør det.

Vi opretter en ny pipeline i Jenkins og navngiver den RørledningMedJenkinsfil.

På pipelinekonfigurationssiden vælger vi Pipeline script fra SCM ved siden af Definition i Rørledning afsnit. Vi ser en rullemenu med forskellige muligheder ud for SCM. Lad os vælge Git fra rullemenuen.

Vi er derefter nødt til at angive URL'en til Bitbucket-lageret og brugerlegitimationsoplysninger. Lad os sikre det tekstfeltet ud for Script sti indeholder standardværdien, dvs. Jenkinsfile:

For Jenkins er det alt, hvad vi har brug for at konfigurere.

Vi er dog nødt til at oprette Jenkinsfilen i arkivet; så lad os oprette en ny tekstfil, navngiv den som Jenkinsfile og brug dette enkle groovy script:

node ('master') {stage ('scm') {checkout scm} stage ('build') {withMaven (jdk: 'JDK9.0.1', maven: 'Maven3.5.2') {sh 'mvn ren installation'} }}

Dette script er næsten det samme som pipeline-scriptet, som vi oprettede i det tidligere afsnit, med kun en ændring. Erklæringen i scene ('scm') behøver ikke URL- og brugeroplysningerne. I stedet er alt, hvad det har brug for kassen scm.

Og det er det. I det øjeblik vi forpligter denne fil til Bitbucket, udløser den bygningen i Jenkins - og vi skulle se, at bygningen blev udløst i Byg historie.

Den eneste forskel mellem dette afsnit og det tidligere er, at vi definerede pipeline-scriptet i Bitbucket-arkivet.

Så, build-scriptet er en del af kildekoden til det projekt, der skal bygges. Vi vedligeholder ikke scriptet i Jenkins selv.

I stedet har Jenkins kendskab til SCM-lageroplysningerne og scriptfilen. Når der er et skub til dette arkiv, åbnes scriptet Jenkinsfile bliver udført på Jenkins-serveren.

7. Konklusion

I denne vejledning har vi set, hvordan job kan konfigureres og planlægges i Jenkins ved hjælp af forskellige strategier.

Vi har også set, hvordan man konfigurerer et job i Jenkins, så det automatisk udløses, baseret på bestemte handlinger, der udføres i SCM-lager, såsom Bitbucket.


$config[zx-auto] not found$config[zx-overlay] not found