Planlegge en jobb i Jenkins

1. Introduksjon

I denne artikkelen vil vi dekke forskjellige måter å planlegge jobber i Jenkins på.

Vi begynner med å planlegge en enkel jobb som utfører noe så enkelt som å skrive ut en tekstmelding. Og vi vil utvikle eksemplet til å planlegge en jobb som automatisk blir utløst av endringer i et SCM-lager som GitHub, Bitbucket, etc.

2. Første oppsett

Vi antar det JDK og Maven er installert i Global Tool Configuration med navn som JDK9.0.1 og Maven3.5.2, henholdsvis på Jenkins-serveren.

Det forutsetter også det vi har tilgang til et SCM-depot som Bitbucket med et Maven-prosjekt riktig satt opp.

3. Planlegge en enkel jobb

På jobbkonfigurasjonssiden, la oss bla ned rett til Bygg utløsere seksjon. Siden vi har tenkt å lage en grei jobb, la oss merke av i avmerkingsboksen Bygg med jevne mellomrom. Så snart vi merker av for dette, vises en tekstboks med Rute merkelapp.

Vi må gi verdi i et Cron-kompatibelt format. Det er omfattende informasjon tilgjengelig på siden hvis vi klikker på spørsmålstegnet ved siden av boksen.

La oss skrive */2 * * * * her, som representerer et intervall på to minutter:

Når vi tapper ut av tekstboksen, kan vi se informasjon rett under boksen. Den forteller oss om når jobben vil gå videre.

La oss lagre jobben - om to minutter skal vi se status for den første utførelsen av jobben:

Siden vi har konfigurert jobben til å kjøre hvert annet minutt, bør vi se flere bygningsnumre når vi går tilbake til jobbpanelet etter å ha ventet litt tid.

4. Opprette en jobb som undersøker SCM

La oss gå et skritt fremover og lage en jobb som henter kildekoden fra SCM-lageret, for eksempel Bitbucket, og utfører en build.

La oss opprette en ny jobb som forklart i forrige avsnitt, med noen få modifikasjoner.

I Bygg utløsere seksjon, i stedet for å velge Bygg jevnlig, la oss velge Avstemning SCM. Så snart vi gjør det, bør vi se en tekstboks med etikett Rute.

La oss skrive */5 * * * * i denne boksen, noe som betyr at vi vil planlegge at jobben skal kjøre hvert 5. minutt:

La oss bla opp til Kildekodestyring seksjon. Når du velger alternativknappen ved siden av Git, vises en ny seksjon merket som Datalagre.

Det er her vi trenger å konfigurere detaljer om SCM-depotet vårt. La oss skrive inn URL-en til SCM-depotet i URL til depot tekstfelt:

Vi må også oppgi brukerlegitimasjon slik at Jenkins kan få tilgang til depotet.

La oss klikke på Legge til -knappen ved siden av legitimasjon, som viser et popup-skjermbilde for å opprette brukerlegitimasjonen.

La oss velge Snill som Brukernavn med passord. Vi må skrive inn brukernavn og passord i de angitte tekstfeltene:

Ved klikk på Legge til knappen, blir vi ført tilbake til Kildekodestyring seksjon.

La oss velge denne brukerlegitimasjonen i rullegardinmenyen ved siden av Legitimasjonserklæring:

Nå er det siste vi trenger å gjøre å sette opp build-skriptet.

La oss bla ned til Bygge delen, klikker du Legg til byggetrinn og velg Utfør Shell. Siden vi jobber med et Maven-prosjekt i SCM-depotet, vi trenger å skrive mvn ren installasjon, som skal utføre en Maven-bygning.

La oss prøve å forstå hva vi har gjort her.

Vi har opprettet en jobb som er planlagt å kjøre hvert 5. minutt. Jobben er konfigurert til å hente kildekoden fra hovedgrenen til det gitte Bitbucket-depotet.

Det vil bruke de oppgitte brukeropplysningene for å logge på Bitbucket.

Etter å ha hentet kildekoden, vil jobben utføre skriptet som inneholder en gitt Maven-kommando.

Nå, hvis vi sparer og venter omtrent fem minutter, bør vi se utførelsen av byggingen i Bygg historie seksjonen på jobbpanelet.

De Konsollutgang skal vise utdataene fra Maven-bygningen. Vi kan se i konsollutgangen at kildekoden er hentet fra Bitbucket og kommandoen mvn ren installasjon har blitt henrettet:

Siden det er en Maven-bygning, konsollutgangen kan være veldig lang, avhengig av antall Maven-avhengigheter som er lastet ned.

Men på slutten av produksjonen, bør vi se BYGG SUKSESS beskjed.

5. Lage en jobb som bruker rørledning som skript

Så langt har vi sett hvordan vi kan skape jobber som utføres til den forhåndsdefinerte planlagte tiden.

La oss nå lage en jobb som ikke er bundet til en bestemt tidsplan. I stedet konfigurerer vi den slik at den automatisk utløses når det er en ny forpliktelse i SCM-arkivet.

Gå tilbake til Jenkins dashbord, la oss klikke Ny gjenstand. Denne gangen, i stedet for Freestyle-prosjektvelger vi Rørledning. La oss kalle denne jobben RørledningAsScriptJob.

Når du klikker på OK-knappen, blir vi ført til konfigurasjonssiden for rørledningen. Denne siden har flere seksjoner som “Generell", “Bygg utløsere ”, “Avanserte prosjektalternativer ”, og “Rørledning ”.

La oss bla ned til “Bygg utløsere ” delen og velg avkrysningsruten ved siden av Bygg når en endring blir presset til Bitbucket. Dette alternativet vil bare være tilgjengelig hvis vi har installert Bitbucket Plugin:

La oss bla ned til Rørledning seksjon. Vi må velge Rørledningsskript i rullegardinmenyen ved siden av Definisjon.

Tekstboksen rett under denne rullegardinmenyen venter på at skriptet skal plasseres i. Det er to måter å gjøre dette på.

Vi kan enten skrive hele skriptet, eller vi kan benytte oss av et verktøy levert av Jenkins, som er kjent som Rørledningssyntaks.

La oss velge det andre alternativet:

Ved klikk på Rørledningssyntaks, som fremhevet i diagrammet ovenfor, åpnes en ny fane i nettleseren. Dette er et praktisk verktøy der vi kan spesifisere operasjonen vi ønsker å utføre, og verktøyet vil generere skriptet i Groovy for oss. Vi kan deretter kopiere skriptet og lime det inn i rørledningskonfigurasjonen.

La oss velge kasse: Generell SCM i Eksempel trinn fall ned. Etter å ha oppgitt SCM Repo URL og brukerlegitimasjon, må vi klikke på Generer Pipeline Script knapp.

Dette genererer skriptet i tekstboksen:

La oss kopiere dette skriptet og lagre det et sted for senere bruk.

På den samme siden, la oss bla opp og velge withMaven: Gi Maven-miljø i Eksempel trinn fall ned. Det må bemerkes her, at dette alternativet vil bare være tilgjengelig hvis Pipeline Maven Integration Plugin er installert.

Vi må velge navnene på Maven- og JDK-installasjoner ved siden av de tilsvarende rullegardinene. Vi må klikke på Generer Pipeline Script knapp.

Dette genererer skriptet i tekstboksen:

La oss lagre skriptet.

Det er fortsatt noen flere skript som vi trenger å generere. La oss velge node: Tildel node i Eksempel trinn fall ned, type herre i Merkelapp tekstfelt og klikk Generer Pipeline Script:

La oss lagre skriptet.

Og den siste.

La oss velge scene: Scene i Eksempel trinn rullegardinmeny, skriv inn scm i Artistnavnet tekstfelt og klikk Generer Pipeline Script:

La oss redde det.

Det er på tide å samle alle skriptene som er generert så langt, 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 installasjon'}}}

Den første uttalelsen, node (‘master’) i skriptet ovenfor, indikerer at jobben vil bli utført på en node som heter herre, som er standardnoden på Jenkins-serveren.

La oss kopiere skriptet ovenfor til tekstboksen i Rørledning seksjon:

La oss lagre denne konfigurasjonen.

Nå er det bare en ting som er utelatt. Vi må konfigurere en Webhook i Bitbucket. Webhook er ansvarlig for å sende ut et push-varsel til Jenkins-serveren når en bestemt hendelse finner sted i Bitbucket.

La oss ta en titt på hvordan du konfigurerer den.

La oss logge på Bitbucket og velge et depot. Vi burde se et alternativ Innstillinger på venstre kolonne. La oss klikke på den, så ser vi et alternativ Webhooks i ARBEIDSFLYT seksjon. La oss lage en ny Webhook.

Vi må oppgi noe navn til denne nettkroken i Tittel felt. Vi må også oppgi en URL for nettkroken i URL felt. Denne URL-en må peke på ett bestemt REST API-endepunkt levert av Jenkins, og det er sluttpunktet bøttekrok.

Det må bemerkes at URL-adressen MÅ ende med en etterfølgende skråstrek:

Mens du konfigurerer Webhook ovenfor, har vi valgt alternativ Repository push. Dette betyr at Bitbucket vil sende et varsel til Jenkins-serveren når et trykk skjer.

Denne oppførselen kan endres; det er flere forskjellige alternativer å velge mellom.

For nå, la oss gå med standardalternativet, dvs. Repository Push.

Vi kan også konfigurere webhook i Github; her er litt nyttig informasjon om hvordan du konfigurerer det.

Lang historie kort: vi har laget et pipeline-skript på Groovy-språk - som skal trekke kildekoden fra hovedgrenen av det medfølgende SCM-depotet (ved hjelp av den oppgitte brukerlegitimasjonen), når det er et trykk i depotet og så henrette mvn ren installasjon kommandoen på Jenkins-serveren.

Det må bemerkes at denne jobben ikke kommer til å løpe på et bestemt tidspunkt. I stedet kommer det til å vente til det er et trykk i hovedgrenen til SCM-depotet.

Så snart det er en ny push-hendelse, ser vi en ny kjøring i “Bygg historie” seksjonen på Jenkins jobb dashbord.

Vi burde se at et nybygg initieres med en Avventer status ved siden av.

I løpet av få sekunder skal denne byggingen starte utførelsen, og vi vil kunne se fullstendig pålogging Konsollutgang.

Den første uttalelsen i konsollutgangen sier “Started by Bitbucket push by ..” - dette betyr at bygningen ble utløst automatisk da en push fant sted i Bitbucket:

Hvis alt går bra, bør byggingen fullføres.

6. Opprett en jobb som bruker Jenkinsfile

Det er mulig å IKKE skrive noe skript i Jenkins-rørledningen og fremdeles oppnå byggekjøring som blir utløst av Bitbucket Webhook.

Å gjøre slik, Vi må lage en ny fil i Bitbucket og gi den navnet Jenkinsfile. Rørledningsskriptet må overføres til denne Jenkinsfilen med en liten modifisering. La oss se nøyaktig hvordan du gjør det.

Vi oppretter en ny rørledning i Jenkins og navngir den RørledningMedJenkinsfile.

På konfigurasjonssiden for rørledningen velger vi Rørledningsskript fra SCM ved siden av Definisjon i Rørledning seksjon. Vi ser en rullegardin med forskjellige alternativer ved siden av SCM. La oss velge Git fra rullegardinmenyen.

Vi må da oppgi URL-en til Bitbucket-depotet og brukerlegitimasjonen. La oss sørge for det tekstfeltet ved siden av Skriptbane inneholder standardverdien, dvs. Jenkinsfile:

Når det gjelder Jenkins er det alt vi trenger å konfigurere.

Vi må imidlertid opprette Jenkinsfilen i depotet; så la oss lage en ny tekstfil, gi den navnet Jenkinsfile og bruk dette enkle, groovy skriptet:

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

Dette skriptet er nesten det samme som rørledningsskriptet som vi opprettet i den tidligere delen, med bare en endring. Uttalelsen i scene (‘scm’) trenger ikke informasjon om URL og brukerlegitimasjon. I stedet er alt det trenger kassen scm.

Og det er det. I det øyeblikket vi forplikter denne filen til Bitbucket, vil den utløse bygningen i Jenkins - og vi bør se at bygningen blir utløst i Bygg historie.

Den eneste forskjellen mellom denne seksjonen og den tidligere er at vi definerte rørledningsskriptet i Bitbucket-depotet.

Så, build-skriptet er en del av kildekoden til prosjektet som må bygges. Vi vedlikeholder ikke skriptet i Jenkins selv.

I stedet har Jenkins kunnskap om SCM-depotdetaljene og skriptfilen. Når det er et trykk på dette depotet, skriptet inn Jenkinsfile blir henrettet på Jenkins-serveren.

7. Konklusjon

I denne opplæringen har vi sett hvordan jobber kan konfigureres og planlegges i Jenkins ved hjelp av forskjellige strategier.

Vi har også sett hvordan du konfigurerer en jobb i Jenkins slik at den automatisk utløses, basert på visse handlinger utført i SCM-depot som Bitbucket.


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