Hvad er CI/CD? Kontinuerlig integration og kontinuerlig levering

Hvad er Continuous Integration (CI)?

Kontinuerlig integration er en softwareudviklingsmetode, hvor teammedlemmer integrerer deres arbejde mindst én gang om dagen. I denne metode kontrolleres hver integration af en automatiseret build for at opdage fejl. Dette koncept blev først introduceret for over to årtier siden for at undgå "integrationshelvede", som sker, når integration udskydes til slutningen af ​​et projekt.

I Continuous Integration efter en kode-commit bygges og testes softwaren med det samme. I et stort projekt med mange udviklere laves commits mange gange i løbet af en dag. Med hver commit-kode bygges og testes. Hvis testen er bestået, testes build til implementering. Hvis implementeringen er en succes, skubbes koden til produktion. Denne forpligtelse, opbygning, test og implementering er en kontinuerlig proces, og deraf navnet kontinuerlig integration/implementering.

Hvad er Continuous Delivery (CD)?

Kontinuerlig tilførsel 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. Hovedformålet med kontinuerlig levering er at bygge, teste og frigive software med god hastighed og frekvens. Det hjælper dig med at reducere omkostningerne, tiden og risikoen ved at levere ændringer ved at tillade hyppige opdateringer i produktionen.

Hvad er forskellen mellem CI og CD?

CI vs CD: Continuous Integration (CI) er en metode til at teste hver ændring til kodebase automatisk, mens Continuous Delivery (CD) er en tilgang til at opnå ændringer af nye funktioner, konfiguration og fejlrettelser.

Udvikling uden CI vs. Udvikling med CI

Her er de vigtigste forskelle mellem udvikling ved hjælp af CI eller uden CI:

Udvikling uden CI Udvikling med CI
Masser af Bugs Færre fejl
Sjældent forpligter sig Regelmæssige commits
Sjældne og langsomme udgivelser Regelmæssige arbejdsudgivelser
Svær integration Nem og effektiv integration
Testen sker sent Kontinuerlig integrationstest sker tidligt og ofte.
Det rejste problem er sværere at løse Find og løs problemer hurtigere og mere effektivt.
Dårlig projektsynlighed Bedre projekt synlighed

Forskellen mellem kompilering og kontinuerlig integration

Aktiviteter i kontinuerlig integration
Aktiviteter i kontinuerlig integration

Mens kompilering kun kompilerer en kode, udfører CI følgende aktiviteter

DB integration

  • Sørg for at DB og kode er synkroniseret
  • Automatisk oprettelse af DB og testdata.

Kode inspektion

  • Sikrer en sund kodebase
  • Identificerer problemer tidligt og anvender bedste praksis

Automatiseret implementering

  • Giver dig mulighed for at frigive produktet når som helst
  • Konstant demo-tilstand, og den fungerer på enhver maskine

Dokumentgenerering

  • Sørg for, at dokumentationen er aktuel
  • Fjerner brændt fra udvikleren
  • Producerer byggerapporter og metrics

Compilation

Kompilering er den proces, computeren tager for at konvertere en programmeringssprogkode på højt niveau til et maskinsprog, som computeren er i stand til at forstå. Det sikrer en kodekompiler på hver målplatform.

Hvornår bygger jeg?

  • Ved hver check-in
  • Hver gang en afhængighed ændrer sig

Hvilke trin er i kontinuerlig integration?

CI-proces
CI proces
  • Ideelt set bør bygningen komme fra kommandolinjen og bør ikke afhænge af et integreret udviklingsmiljø (IDE).
  • Opbygningen skal ske kontinuerligt ved hjælp af en dedikeret Cl-server, ikke et cron-job.
  • CI bygget bør udløses ved hver check-in og ikke kun ved midnat
  • Bygningen skal give øjeblikkelig feedback og kræver ingen udviklerindsats
  • Identificer nøglemålinger og spor dem visuelt. Endnu vigtigere, handle på dem med det samme

Hvad har du brug for for at udføre CI-processen?

Gennemføre CI-proces

Her er de nøgleelementer, du skal bruge for at udføre hele CI-processen:

  • Versionskontrolsystem (VCS): Det tilbyder en pålidelig metode til at centralisere og bevare ændringer i dit projekt over tid.
  • Virtuel maskine: Du bør have en ekstra server eller mindst én virtuel maskine at bygge dit system.
  • Hosted CI Tool Solutions: For at undgå servere eller virtuelle maskiner bør du gå efter hostede CI-værktøjsløsninger. Dette værktøj hjælper med at vedligeholde hele processen og tilbyder lettere skalerbarhed.
  • Værktøjer: Hvis du vælger en selv-hostet variant, skal du installere en af ​​de mange CI værktøjer ligesom Jenkins, TeamCity, Bamboo, GitLab osv.

Hvordan fungerer kontinuerlig integration?

Du kender helt sikkert den gamle Nokia-telefon. Nokia plejede at implementere en procedure kaldet nightly build. Efter flere tilsagn fra forskellige udviklere i løbet af dagen, blev softwaren bygget hver nat. Da softwaren kun blev bygget én gang om dagen, er det en enorm smerte at isolere, identificere og rette fejlene i en stor kodebase.

Later, antog de den kontinuerlige integrationstilgang. Softwaren blev bygget og testet, så snart en udvikler forpligtede sig til kode. Hvis der opdages en fejl, kan den respektive udvikler hurtigt rette fejlen.

Eksempel på kontinuerlig integration
Eksempel på kontinuerlig integration

Funktioner af CI

Her er vigtige funktioner og fordele ved kontinuerlig integration:

  • Giver dig mulighed for kun at vedligeholde et enkelt kildelager
  • Du kan teste klonen af ​​produktions-CI-miljøet
  • Det byggede miljø skal være tæt på produktionsmiljøet.
  • En af fordelene ved kontinuerlig integration er konstant tilgængelighed af en aktuel build
  • Den komplette proces med opbygning og test og implementering bør være synlig for alle stakholdere.

Hvorfor bruge CI?

Her er vigtige grunde til at bruge kontinuerlig integration:

  • Hjælper dig med at bygge software af bedre kvalitet
  • CI-processen hjælper med at opskalere antallet af medarbejdere og leveringsoutput for ingeniørteams.
  • CI giver softwareudviklere mulighed for at arbejde uafhængigt med funktioner parallelt.
  • Hjælper dig med at udføre gentagelige tests
  • Øg synlighed, hvilket muliggør større kommunikation
  • Hjælper med at udvikle et produkt, der kan sendes til fuldautomatisk opbygning
  • Hjælper dig med at reducere risici ved at gøre implementeringen hurtigere og mere forudsigelig
  • øjeblikkelig feedback, når problemet opstår
  • Undgå forvirring i sidste øjeblik ved udgivelsesdato og -tidspunkt

Bedste praksis for at bruge CI-systemer

Her er nogle vigtige bedste praksisser under implementering

  • Begå tidligt og begå Begå ofte aldrig brudt kode
  • Ret byggefejl med det samme
  • Lov om metrics
  • Indbygget hvert målmiljø Skab artefakter fra hver build
  • Opbygningen af ​​softwaren skal udføres på en måde, så den kan automatiseres
  • Vær ikke afhængig af en IDE
  • Byg og test alt, når det ændrer sig
  • Databaseskemaet tæller som alt
  • Hjælper dig med at finde ud af nøglemålinger og spore dem visuelt
  • Check-in ofte og tidligt
  • Stærkere kildekodekontrol
  • Kontinuerlig integration kører enhedstests, hver gang du begår kode
  • Automatiser opbygningen og test alle
  • Hold opbygningen hurtig med automatiseret implementering

Ulemper ved CI

Her er ulemper/ulemper ved kontinuerlig integrationsproces:

  • Indledende opsætningstid og træning er påkrævet for at blive bekendt med Cl-serveren
  • Udvikling af passende testprocedurer er afgørende
  • Veludviklet test-suite krævede mange ressourcer til Cl-serveren
  • Konvertering af kendte processer
  • Kræver yderligere servere og miljøer
  • Ventetider kan forekomme, når flere udviklere ønsker at integrere deres kode omkring samme tid

Værktøjer til CI-proces

Her er nogle af de vigtigste CI/CD-værktøjer:

Jenkins

Jenkins

Jenkins er en open source-software til kontinuerlig integration. Det er skrevet ved hjælp af Java programmeringssprog. Det letter realtidstest og rapportering om isolerede ændringer i en mere massiv kodebase. Denne software hjælper udviklere med hurtigt at finde og løse defekter i deres kodebase og automatisere test af deres builds.

Bamboo

Bamboo

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 understøtter mange sprog og teknologier såsom CodeDeply, Docker, Git, SVN, Mercurial, AWS og Amazon S3 spande.

TeamCity

TeamCity

TeamCity er en kontinuerlig integrationsserver, der understøtter mange kraftfulde funktioner. Det vedligeholder en CI-server sund og stabil, selv når ingen builds kører. Det giver bedre kodekvalitet til ethvert projekt

Resumé

  • Kontinuerlig integration definition: Kontinuerlig integration er en softwareudviklingsmetode, hvor medlemmer af teamet kan integrere deres arbejde mindst én gang om dagen
  • CI/CD betyder kombination af Kontinuerlig Integration og Kontinuerlig Delivery eller Continuous Deployment.
  • Udvikling uden CI skaber mange fejl, mens udvikling med CI giver færre fejl
  • Vigtige aktiviteter for kontinuerlig integration er 1) DB-integration, 2) Kodeinspektion, 3) Automatiseret implementering, dokumentgenerering og kompilering.
  • Opbygningen skal ske kontinuerligt ved hjælp af en dedikeret Cl-server, ikke et cron-job.
  • Vigtige elementer i CI er 1) Versionskontrolsystem 2) Virtuel maskine 3) Vært CI Værktøjsløsninger 4) Værktøjer
  • Kontinuerligt integrationssystem giver dig mulighed for kun at vedligeholde et enkelt kildelager
  • CI/CD-processen hjælper dig med at bygge software af bedre kvalitet
  • De vigtigste bedste praksisser for Azure Kontinuerlig integrationsproces er at begå tidligt og begå ofte aldrig brudt kode
  • Den største ulempe ved CI/CD pipeline processen er, at veludviklet test-suite krævede mange ressourcer til Cl-serveren
  • Jenkins, Bambook, og Team City er nogle nyttige AWS Continuous Integrationsværktøjer.