CI/CD Pipeline: Lær med eksempel

Hvad er en CI/CD-pipeline?

En CI/CD-pipeline automatiserer processen med softwarelevering. Det bygger kode, kører tests og hjælper dig med sikkert at implementere en ny version af softwaren. CI/CD-pipeline reducerer manuelle fejl, giver feedback til udviklere og tillader hurtige produktgentagelser.

CI/CD-pipeline introducerer automatisering og kontinuerlig overvågning gennem et softwareprodukts livscyklus. Det involverer fra integrations- og testfasen til levering og implementering. Disse forbundne praksisser omtales som CI/CD-pipeline.

Hvad er Kontinuerlig Integration, Kontinuerlig Levering og Kontinuerlig Deployment?

  • Kontinuerlig integration er en softwareudviklingsmetode, hvor medlemmer af teamet kan integrere deres arbejde mindst én gang om dagen. I denne metode kontrolleres hver integration af en automatiseret build for at søge efter fejlen.
  • Kontinuerlig levering er en software engineering metode, hvor et team udvikler software produkter i en kort cyklus. Det sikrer, at software nemt kan frigives til enhver tid.
  • Kontinuerlig implementering er en softwareudviklingsproces, hvor produktfunktionaliteter leveres ved hjælp af automatisk implementering. Det hjælper testere med at validere, om kodebaseændringerne er korrekte, og den er stabil eller ej.

Stadier af en CI/CD-pipeline

En CI/CD-pipeline er en kørebar specifikation af de trin, som enhver udvikler skal udføre for at levere en ny version af enhver software. Fejl i hver enkelt fase udløser en meddelelse via fmail, Slack, eller andre kommunikationsplatforme. Det gør det muligt for ansvarlige udviklere at vide om de vigtige spørgsmål.

Her er de vigtige stadier af CI/CD-pipeline:

Stadier af CI/CD-pipeline
Stadier af CI/CD-pipeline

Kildestadie

I kildestadiet udløses CI/CD-pipeline af et kodelager. Enhver ændring i programmet udløser en meddelelse til CI/CD-værktøjet, der kører en tilsvarende pipeline. Andre almindelige triggere omfatter brugerinitierede arbejdsgange, automatiserede tidsplaner og resultaterne af andre pipelines.

Byggestadie

Dette er anden fase af CI/CD-pipeline, hvor du flette kildekoden og dens afhængigheder. Det gøres hovedsageligt for at bygge en kørebar instans af software, som du potentielt kan sende til slutbrugeren.

Programmer, der er skrevet på sprog som f.eks C + +, Java, C eller Go sprog bør kompileres. På den anden side, JavaScript, Python og Ruby-programmer kan fungere uden byggestadiet.

Manglende beståelse af byggefasen betyder, at der er en grundlæggende projektfejlkonfiguration, så det er bedre, at du løser et sådant problem med det samme.

Teststadie

Teststadiet omfatter udførelse af automatiserede tests for at validere kodens rigtighed og softwarens opførsel. Dette trin forhindrer let reproducerbare fejl i at nå klienterne. Det er udviklernes ansvar at skrive automatiserede tests.

Implementer Stage

Dette er den sidste fase, hvor dit produkt går live. Når buildet har bestået alle de nødvendige testscenarier, er det klar til at blive implementeret på en live server.

Eksempel på CI/CD Pipeline

Her er et eksempel på CI/CD-pipeline:

  • Kildekodekontrol: Værtskode på GitHub som et privat depot. Dette vil hjælpe dig med at integrere din applikation med større tjenester og software.
  • Kontinuerlig integration: Brug den kontinuerlige integrations- og leveringsplatform CircleCI og commit hver kode. Når ændringerne giver besked, trækker dette værktøj den tilgængelige kode i GitHub og behandler for at bygge og køre testen.
  • Implementer kode til UAT: Konfigurer CircleCI til at implementere din kode til AWS UAT-server.
  • Implementer til produktion: Du skal genbruge kontinuerlige integrationstrin for at implementere kode til UAT.

Best Practices for CI/CD-pipeline

Her er en CI/CD-pipeline bedste praksis:

  • Skriv den aktuelle udviklingsproces op, derfor kan du kende de procedurer, der skal ændres, og en der nemt kan automatiseres.
  • Start med et lille projektbevis, før du går videre, og fuldfør hele udviklingsprocessen på én gang.
  • Opret en pipeline med mere end én fase, hvor hurtige grundlæggende tests kører først.
  • Start hver arbejdsgang fra det samme, rene og isolerede miljø.
  • Kør open source-værktøjer, der dækker alt fra kodestil til sikkerhedsscanning.
  • Konfigurer en bedre kodehub til løbende at kontrollere kvaliteten af ​​din kode ved at køre standardsættet af tests mod hver gren.
  • Peer-kode gennemgår hver pull-anmodning for at løse et problem på en kollaborativ måde.
  • Du skal definere succesmålinger, før du starter overgangen til CD-automatisering. Dette vil hjælpe dig til konsekvent at analysere din software, og udvikling af fremskridt hjælper dig med at forfine, hvor det er nødvendigt.

Fordele ved CI/CD pipelines

Her er fordelene/fordele ved CI/CD Pipeline:

  • Opbygninger og test kan nemt udføres manuelt.
  • Det kan forbedre konsistensen og kvaliteten af ​​koden.
  • Forbedrer fleksibiliteten og har mulighed for at sende nye funktionaliteter.
  • CI/CD pipeline kan strømline kommunikationen.
  • Det kan automatisere processen med levering af software.
  • Hjælper dig med at opnå hurtigere kundefeedback.
  • CI/CD pipeline hjælper dig med at øge dit produkts synlighed.
  • Det giver dig mulighed for at fjerne manuelle fejl.
  • Reducerer omkostninger og arbejdskraft.
  • CI/CD-pipelines kan gøre softwareudviklingens livscyklus hurtigere.
  • Det har automatiseret pipeline-implementering.
  • En CD-pipeline giver en hurtig feedback-loop fra udvikler til klient.
  • Forbedrer kommunikationen mellem organisationens medarbejdere.
  • Det gør det muligt for udviklere at vide, hvilke ændringer i bygningen, der kan henvende sig til mægleren, og at undgå dem i fremtiden.
  • De automatiserede tests, sammen med få manuelle testkørsler, hjælper med at løse eventuelle problemer, der måtte opstå.

Vigtige CI/CD-værktøjer

Her er de vigtige CI/CD-værktøjer:

1) Jenkins

Jenkins er en open-source kontinuerlig integrationsserver, der hjælper med at opnå den kontinuerlige integrationsproces (og ikke kun) på en automatiseret måde. Jenkins er gratis og er helt skrevet i Java. Jenkins er en meget brugt applikation over hele verden, der har omkring 300 installationer og growing dag efter dag.

Jenkins

Funktioner:

  • Jenkin vil bygge og teste kode mange gange i løbet af dagen.
  • Automatiseret bygge- og testproces, sparer timing og reducerer defekter.
  • Koden er deployed efter hver vellykket bygning og test.
  • Udviklingscyklussen er hurtig.

Forbindelse: https://www.jenkins.io/download/


2) Bambus

Bamboo er en kontinuerlig integrationsbyggeserver, der udfører – automatisk opbygning, test og udgivelser på et enkelt sted. Det fungerer problemfrit med JIRA software og Bitbucket.

Bamboo

Funktioner:

  • Kør parallelle batchtest
  • Opsætning af Bamboo er ret simpelt
  • Per-environment permissions-funktionen giver udviklere og QA mulighed for at implementere til deres miljøer
  • Indbygget Git-forgrening og arbejdsgange. Det slår automatisk grenene sammen.

Forbindelse: https://www.atlassian.com/software/bamboo


3) CircleCi

CircleCi er et fleksibelt CI-værktøj, der kører i ethvert miljø som en mobilapp på tværs af platforme, Python API-server eller Docker cluster. Dette værktøj reducerer fejl og forbedrer kvaliteten af ​​applikationen.

CircleCi

Funktioner:

  • Giver mulighed for at vælge Byg miljø
  • Understøtter mange sprog, herunder C++, JavaScript, NET, PHP, Python og Ruby
  • Support til Docker lader dig konfigurere et tilpasset miljø.
  • Annuller automatisk alle i kø eller kørende builds, når en nyere build udløses.

Forbindelse: https://circleci.com/

Hvorfor betyder CI/CD-pipeline noget for it-ledere?

  • CI/CD-pipeline kan forbedre pålideligheden.
  • Det gør it-teamet mere attraktivt for udviklere.
  • CI/CD-pipeline hjælper IT-ledere med at hente kode fra versionskontrol og udføre softwarebuild.
  • Hjælper med at flytte kode til målcomputermiljøet.
  • Gør det muligt for projektledere nemt at administrere miljøvariabler og konfigurere til målmiljøet.
  • Projektledere kan udgive push-applikationskomponenter til tjenester som webtjenester, databasetjenester, API-tjenester osv.
  • Levering af logdata og advarsler om leveringstilstand.
  • Det gør det muligt for programmører at verificere kodeændringer, før de går videre, hvilket reducerer chancerne for, at defekter ender i produktionen.

Ci/CD Pipeline KPI

  • Cyklus eller implementeringstid: Cyklustid er den tid, det tager at gå fra byggefasen til produktionen. Du kan opnå gennemsnitlig livscyklustid ved at måle udviklingsprocessens faser. Denne metrik vil give indsigt i flaskehalse i din proces og den overordnede hastighed af udviklingstid.
  • Udviklingsfrekvens: Udviklingsfrekvens giver dig mulighed for at analysere flaskehalse, du finder under automatisering. De hyppigere mindre udgivelser reducerer risikoen for defekter og retter dem, når de findes. Sådan et mål er et overordnet mål for dit teams effektivitet.
  • Skift leveringstid: Den måler starttidspunktet for udviklingsfasen til implementering. Denne metrik er en indikator for hele udviklingsprocessen, og hvor godt teamet arbejder sammen.
  • Skift fejlfrekvens: Den fokuserer på antallet af gange, udviklingen lykkes kontra antallet af gange, den fejler.
  • MTTR vs. MTTF: MTTR (Mean Time to Recovery) er den tid, dit team kræver for at komme sig efter fejl. MTTF (Mean Time to Failure) måler mængden af ​​tid mellem rettelser og udfald. Disse målinger er en afspejling af teamets evne til at reagere og løse problemer.

Resumé

  • En CI/CD-pipeline automatiserer processen med softwarelevering.
  • CI/CD-pipeline introducerer automatisering og kontinuerlig overvågning gennem et softwareprodukts livscyklus.
  • Kontinuerlig integration er en softwareudviklingsmetode, hvor medlemmer af teamet kan integrere deres arbejde mindst én gang om dagen.
  • Kontinuerlig levering er en softwareteknologisk metode, hvor et team udvikler softwareprodukter i en kort cyklus.
  • Kontinuerlig implementering er en softwareudviklingsproces, hvor produktfunktionaliteter leveres ved hjælp af automatisk implementering.
  • Der er fire trin i en CI/CD-pipeline 1) Kildetrin, 2) Byggefase, 3) Testfase, 4) Implementeringsfase.
  • Vigtig CI/CD værktøjer er Jenkins, Bambo og Circle CI.
  • CI/CD-pipeline kan forbedre pålideligheden.
  • CI/CD pipeline gør IT-teamet mere attraktivt for udviklere.
  • Cyklustid er den tid, det tager at gå fra byggefasen til produktionen.
  • Udviklingsfrekvens giver dig mulighed for at analysere flaskehalse, du finder under automatisering.
  • Change Lead Time måler starttidspunktet for udviklingsfasen til implementering.
  • Change Failure Rate fokuserer på antallet af gange, udviklingen lykkes i forhold til antallet af gange, den mislykkes.
  • MTTR (Mean Time to Recovery) er den tid, dit team kræver for at komme sig efter fejl.
  • MTTF (Mean Time to Failure) måler mængden af ​​tid mellem rettelser og udfald.