Inden for softwareudvikling hjælper CI/CD eller Continuous Integration/Continuous Delivery pipelines med at bygge og implementere din kode til forskellige miljøer gennem en automatiseret proces.
Men at skabe og vedligeholde denne pipeline i sig selv kan blive en udfordrende opgave. Indtast Pipeline som kode – en tilgang, hvor du opretter hele din CI/CD-pipeline i kodeformat. I stedet for at stole på webbrugergrænseflader og træk-og-slip-værktøjer, bruger du konfigurationsfiler til at definere, hvordan din applikationskode vil blive bygget, testet og implementeret.
Men før vi går ind i detaljerne i Pipeline som kode, og hvordan du kan bygge din, lad os først forstå, hvad en pipeline præcis er.
Indholdsfortegnelse
Hvad er en pipeline i softwareudvikling?
En pipeline i softwareudvikling er en række automatiserede trin, der tager dine seneste kodeændringer, kører specifikke processer på den og implementerer den i dit foretrukne miljø. Lad os forstå dette bedre med et eksempel.
Forestil dig, at du har tre mikrotjenester, og du har tilføjet nye funktioner til en af dem. Nu vil du køre enhedstestene på kodeniveau. Når de er bestået, vil du også tjekke for kodeformateringsproblemer. Dernæst vil du bygge din kode. Derefter vil du installere det i to forskellige miljøer med flere maskiner i hvert miljø. Endelig vil du gerne køre integrationstests for at sikre, at dine ændringer er synkroniseret med de andre tjenester.
Du kan vælge at udføre alle ovenstående trin manuelt. Men det vil tage meget af din tid, og du vil være tilbøjelig til at fejle. Så er der en måde at automatisere dem på? Ja! Du kan oprette en pipeline og definere alle trinene. Derefter, hver gang du foretager ændringer i din kode, kan du udløse pipelinen og ikke bekymre dig om nogen manuelle trin.
Fordele ved Pipeline som kode
Hvis du bruger værktøjer som træk-og-slip, bliver det svært for dig at spore ændringer, opretholde standardisering eller fremme samarbejde. Pipeline som kode er en bedre måde at definere din softwareudviklingspipeline på.
Det hjælper med at holde tingene konsekvente. Ved at fremme automatisering får du repeterbarhed og bruger den samme pipeline til andre systemer. Og ligesom applikationskode fremmer koden, der bruges til at definere din pipeline, samarbejde.
#1. Konsistens
At være defineret i tekstformat sikrer, at intet sker i uorden. Ved at håndhæve en standard workflow for alle dine applikationsbygninger og implementeringer får du konsekvens og reducerer risikoen for uventede problemer.
Og med konsistens opnår du også compliance-tjek og sikkerhed. Ved at sikre en konsistent pipeline kan du definere dine sikkerhedsscanninger og sårbarhedstjek, så intet kommer forbi dig.
#2. Gentagelighed
Opret din pipeline og indstil automatisering. Ud over konsistens sikrer din automatiserede pipeline, at hver applikationskode gennemgår de samme stadier og kontroller.
Din kode vil flyde gennem den samme bygge- og implementeringsproces, hver gang du kører din pipeline. Du bevarer repeterbarheden på tværs af alle dine løbeture.
#3. Samarbejde
Med kode som det medie, du opretter din pipeline med, fremmer du samarbejde. Flere personer på tværs af dine teams kan bidrage til den samme kode, ligesom du gør for ansøgningskode.
Pipeline as Code giver dig også mulighed for at opretholde versionskontrol og tillade kodegennemgange. Dette sikrer, at den bedste praksis følges, og at potentielle problemer fanges tidligt.
Lad os nu dykke ned i, hvordan du kan oprette din egen pipeline ved hjælp af Pipeline som kode.
Pipeline som kode i Jenkins
Når det kommer til kontinuerlig integration og kontinuerlig implementering (CI/CD), Jenkins er den førende open source automatiseringsserver. Med Jenkins kan du ubesværet integrere dine kodeændringer, automatisere test og opbygning og implementere software. Og du kan gøre alt dette pålideligt og effektivt.
Uanset om du er en hobbyist, der prøver at lære mere om automatiseringspipelines, eller du bygger komplekse virksomhedssystemer, opfylder Jenkins alle dit projekts unikke krav. Dens overflod af plugins og stadigt voksende fællesskab kan hjælpe dig med at få mest muligt ud af din automatisering.
I Jenkins er en Pipeline et sæt af forskellige plugins defineret i en bestemt rækkefølge, som skaber dit CI/CD-system. Uanset om det er simple eller komplekse use cases, kan du oprette din pipeline ved hjælp af kode med Pipeline domænespecifikt sprog (DSL) syntaks. DSL er bygget ovenpå Apache Groovy.
Grundlaget for Pipeline as Code i Jenkins er Jenkinsfile – en tekstfil, der indeholder kode, der beskriver alle de forskellige stadier og handlinger. Lad os lære, hvordan du opretter din Pipeline som kode ved hjælp af Jenkinsfilen.
Hvordan opretter du din Pipeline som kode?
Når du har installeret og lanceret Jenkins, skal du navigere til web-brugergrænsefladen på din browser. Du skal muligvis logge ind. Dernæst ender du på hovedsiden Dashboard. Du vil starte herfra og oprette din pipeline.
Lad os starte med en simpel pipeline, som du kan konfigurere direkte fra brugergrænsefladen.
Opret pipeline som kode direkte i Jenkins
Når du er i sektionen Pipeline, er du klar til at oprette din første Pipeline som kode.
Fra rullemenuen Definition skal du vælge indstillingen Pipeline script. Under det finder du et scriptområde, hvor du kan kode din pipeline. Jenkins vedligeholder det manuskript, der er oprettet her.
Jenkins giver dig mulighed for at vælge mellem to kodningsstile eller syntakser – Declarative Syntax og Scripted Syntax. Mens Declarative er let at bruge og ideel til simple pipelines, er Scripted Syntax til superbrugere og design af komplekse flows.
Brug deklarativ syntaks til at oprette 3 enkle trin – Byg kode, testkode og implementer kode ved at bruge følgende kodestykke:
pipeline { agent any stages { stage('Build Code') { steps { echo 'This is the step for build...' } } stage('Test Code') { steps { echo 'This is the step to test...' } } stage('Deploy Code') { steps { echo 'This step deploys the code...' } } } }
Du kan også bruge den scriptede syntaks som vist nedenfor:
node { stage('Build Code') { echo 'This is the step for build...' } stage('Test Code') { echo 'This is the step to test...' } stage('Deploy Code') { echo 'This step deploys the code...' } }
Klik på Gem. Klik nu på knappen Byg nu i venstre panel. Dette vil udløse den pipeline, du lige har oprettet.
Når din pipeline er færdig, kan du tjekke den i Build History. Hvis dette er din første kørsel, skal du klikke på build nummer 1 til stede. Klik derefter på Konsoloutput til stede i venstre panel. Du finder de 3 ekko-udsagn, som du har i din pipeline-kode på hvert trin.
Opret pipeline som kode ved hjælp af en ekstern fil
Det bliver udfordrende at vedligeholde din pipeline direkte i Jenkins, når det begynder at blive komplekst. I dette tilfælde vil du gerne oprette en ekstern fil og bruge den.
Før du opretter din Jenkins-pipeline, har du brug for et eksternt lager og et versionskontrolsystem. Lad os oprette et Git-lager og hoste det eksternt på GitHub. Du opretter din Jenkinsfil og gemmer den her.
pipeline { agent any stages { stage('Build Code') { steps { echo 'This is the step for build defined in custom file...' } } stage('Test Code') { steps { echo 'This is the step to test defined in custom file...' } } stage('Deploy Code') { steps { echo 'This step defined in custom file deploys the code...' } } } }
Du har nu oprettet et fjernlager på GitHub, der indeholder en tilpasset Jenkinsfil. Lad os konfigurere Jenkins til at bruge dette.
Konfigurer Jenkins til at bruge Jenkinsfile fra GitHub
Kør derefter din pipeline. Jenkins vil først hente din kode fra fjernlageret. Det vil derefter oprette en pipeline ved hjælp af den brugerdefinerede Jenkinsfile og køre alle stadier.
Du har nu oprettet din egen softwareudviklingspipeline med Pipeline som kode. Derudover har du aktiveret versionskontrol på dit pipeline-script. Alle ændringer, du foretager i din pipelinekode, kan nu spores med hver Git-commit. Dernæst er det tid til at se på bedste praksis.
Bedste praksis for at skrive effektiv pipeline som kode
Lad os se på de bedste fremgangsmåder, du bør følge, når du skriver din Pipeline som kode.
- Hold din pipeline ren og undgå at skrive for mange komplekse forhold.
- Hvis du laver for mange kommandoer inde i pipelinen, så opdel dem i forskellige trin.
- Brug eksterne filer med versionsstyring til din Pipeline som kodescripts.
- Udnyt funktionerne i kodningssproget, som Groovy, til at integrere forskellige trin.
- Undgå opkald til Jenkins.getInstance eller dets accessorer for at afbøde sikkerheds- og ydeevneproblemer.
- Overskriv ikke indbyggede pipeline-kommandoer som sh og timeout.
- Opret eksterne værktøjer eller scripts til komplekse CPU-intensive opgaver, og sæt dem ind i din pipeline.
- Udnyt det store udvalg af eksisterende plugins, der er tilgængelige for Jenkins til at tackle din brugssag.
- Sørg for, at du har indarbejdet undtagelses- og fejlhåndtering, da tingene kan gå galt.
- Lav ikke din Pipeline som kode tæt forbundet med en masse forretningslogik indeni.
- Brug parameteriserede argumenter, hvor det er muligt for at gøre din pipeline genbrugelig.
Pipeline som kode: En simpel tilgang til komplekse processer
Sammenfattende forenkler Pipeline as Code automatiseringen af din CI/CD-pipeline ved at repræsentere hele processen som kode. Mens CI/CD-pipelines automatiserer opbygning, test og implementering af dine kodeændringer, tager det et skridt videre ved at udnytte Pipeline as Code. Det giver dig mulighed for at definere din arbejdsgang i tekst i stedet for at stole på grafiske grænseflader.
Med Pipeline som kode sikrer du, at hvert trin i din arbejdsgang sker i den rigtige rækkefølge. Du mindsker risikoen for at løbe ind i uønskede problemer. Derudover får du adskillige fordele – herunder konsekvens, repeterbarhed og fremme af samarbejde.
Ved at bruge denne guide ved du nu, hvordan du opretter dine egne pipelines ved hjælp af Jenkins, et meget brugt CI/CD-værktøj. Jenkins tilbyder en kraftfuld og fleksibel platform til implementering af Pipeline som kode gennem sin Jenkinsfile. Følg den bedste praksis, og skab arbejdsgange, der tackler alle dine pipeline-brugssager.
Hvis du ønsker at lære mere om Jenkins, kan du tjekke ud, hvordan du opretter din egen Jenkins-pipeline.