Hva er CI/CD? Kontinuerlig integrasjon og kontinuerlig levering

Hva er kontinuerlig integrasjon (CI)?

Kontinuerlig integrasjon er en programvareutviklingsmetode der teammedlemmer integrerer arbeidet sitt minst en gang om dagen. I denne metoden kontrolleres hver integrasjon av en automatisert build for รฅ oppdage feil. Dette konseptet ble fรธrst introdusert for over to tiรฅr siden for รฅ unngรฅ "integrasjonshelvete", som skjer nรฅr integrering utsettes til slutten av et prosjekt.

I Continuous Integration etter en kodebekreftelse bygges og testes programvaren umiddelbart. I et stort prosjekt med mange utviklere foretas commits mange ganger i lรธpet av en dag. Med hver commit bygges og testes koden. Hvis testen er bestรฅtt, testes build for distribusjon. Hvis distribusjonen er en suksess, blir koden sendt til produksjon. Denne forpliktelsen, byggingen, testen og distribusjonen er en kontinuerlig prosess, og derav navnet kontinuerlig integrasjon/distribusjon.

Hva er kontinuerlig levering (CD)?

Kontinuerlig Levering er en programvareutviklingsmetode der et team utvikler programvareprodukter i en kort syklus. Det sikrer at programvare enkelt kan utgis nรฅr som helst. Hovedmรฅlet med kontinuerlig levering er รฅ bygge, teste og frigi programvare med god hastighet og frekvens. Det hjelper deg รฅ redusere kostnadene, tiden og risikoen for รฅ levere endringer ved รฅ tillate hyppige oppdateringer i produksjonen.

Hva er forskjellen mellom CI og CD?

CI vs CD: Continuous Integration (CI) er en tilnรฆrming for รฅ teste hver endring til kodebase automatisk, mens Continuous Delivery (CD) er en tilnรฆrming for รฅ oppnรฅ endringer av nye funksjoner, konfigurasjon og feilrettinger.

Utvikling uten CI vs. Utvikling med CI

Her er viktige forskjeller mellom utvikling ved bruk av CI eller uten CI:

Utvikling uten CI Utvikling med CI
Mange insekter Fรฆrre feil
Sjeldne forpliktelser Regelmessige forpliktelser
Sjeldne og langsomme utgivelser Vanlige arbeidsutgivelser
Vanskelig integrering Enkel og effektiv integrering
Testing skjer sent Kontinuerlig integrasjonstesting skjer tidlig og ofte.
Problemet som tas opp er vanskeligere รฅ fikse Finn og fiks problemer raskere og mer effektivt.
Dรฅrlig prosjektsynlighet Bedre prosjektsynlighet

Forskjellen mellom kompilering og kontinuerlig integrasjon

Aktiviteter i kontinuerlig integrasjon
Aktiviteter i kontinuerlig integrasjon

Mens kompilering bare kompilerer en kode, utfรธrer CI fรธlgende aktiviteter

DB-integrasjon

  • Sรธrg for at DB og kode er synkronisert
  • Automatisert oppretting av DB og testdata.

Kode inspeksjon

  • Sikrer en sunn kodebase
  • Identifiserer problemer tidlig og bruker beste praksis

Automatisert distribusjon

  • Lar deg slippe produktet nรฅr som helst
  • Kontinuerlig demo-tilstand og den fungerer pรฅ alle maskiner

Dokumentgenerering

  • Sรธrg for at dokumentasjonen er oppdatert
  • Fjerner brent fra utvikleren
  • Produserer byggerapporter og beregninger

Compilation

Kompilering er prosessen datamaskinen tar for รฅ konvertere en programmeringssprรฅkkode pรฅ hรธyt nivรฅ til et maskinsprรฅk som datamaskinen kan forstรฅ. Det sikrer en kodekompilator pรฅ hver mรฅlplattform.

Nรฅr bygger jeg?

  • Ved hver innsjekking
  • Hver gang en avhengighet endres

Hvilke trinn er i kontinuerlig integrasjon?

CI-prosess
CI-prosess
  • Ideelt sett bรธr bygningen komme fra kommandolinjen og bรธr ikke vรฆre avhengig av et integrert utviklingsmiljรธ (IDE).
  • Byggingen skal skje kontinuerlig ved รฅ bruke en dedikert Cl-server, ikke en cron-jobb.
  • CI bygget bรธr utlรธses ved hver innsjekking og ikke bare ved midnatt
  • Byggingen skal gi umiddelbar tilbakemelding og krever ingen utviklerinnsats
  • Identifiser nรธkkelberegninger og spor dem visuelt. Enda viktigere, handle pรฅ dem umiddelbart

Hva trenger du for รฅ gjennomfรธre CI-prosessen?

Gjennomfรธre CI-prosess

Her er nรธkkelelementene du trenger for รฅ utfรธre hele CI-prosessen:

  • Versjonskontrollsystem (VCS): Det tilbyr en pรฅlitelig metode for รฅ sentralisere og bevare endringer som er gjort i prosjektet ditt over tid.
  • Virtuell maskin: Du bรธr ha en reserveserver eller minst รฉn virtuell maskin รฅ bygge systemet ditt.
  • Hosted CI Tool Solutions: For รฅ unngรฅ servere eller virtuelle maskiner bรธr du gรฅ for vertsbaserte CI-verktรธylรธsninger. Dette verktรธyet hjelper til med vedlikehold av hele prosessen og tilbyr enklere skalerbarhet.
  • Verktรธy: Hvis du velger en selvhostet variant, mรฅ du installere en av de mange CI verktรธy som Jenkins, TeamCity, Bamboo, GitLab, etc.

Hvordan fungerer kontinuerlig integrasjon?

Du er sikkert klar over den gamle telefonen Nokia. Nokia pleide รฅ implementere en prosedyre kalt nattlig bygg. Etter flere forpliktelser fra forskjellige utviklere i lรธpet av dagen, ble programvaren bygget hver natt. Siden programvaren ble bygget bare รฉn gang om dagen, er det en stor smerte รฅ isolere, identifisere og fikse feilene i en stor kodebase.

Later, tok de i bruk tilnรฆrmingen til kontinuerlig integrasjon. Programvaren ble bygget og testet sรฅ snart en utvikler forpliktet kode. Hvis det oppdages en feil, kan den respektive utvikleren raskt fikse feilen.

Eksempel pรฅ kontinuerlig integrasjon
Eksempel pรฅ kontinuerlig integrasjon

Egenskaper til CI

Her er viktige funksjoner og fordeler med kontinuerlig integrasjon:

  • Lar deg vedlikeholde bare ett enkelt kildelager
  • Du kan teste klonen til produksjons-CI-miljรธet
  • Byggemiljรธet bรธr ligge nรฆrt produksjonsmiljรธet.
  • En av fordelene med kontinuerlig integrasjon er konstant tilgjengelighet av en nรฅvรฆrende build
  • Hele prosessen med รฅ bygge og teste og distribuere bรธr vรฆre synlig for alle stabelholdere.

Hvorfor bruke CI?

Her er viktige grunner til รฅ bruke kontinuerlig integrasjon:

  • Hjelper deg รฅ bygge programvare av bedre kvalitet
  • CI-prosessen hjelper til med รฅ skalere opp antall ansatte og leveringsresultater til ingeniรธrteam.
  • CI lar programvareutviklere arbeide uavhengig med funksjoner parallelt.
  • Hjelper deg med รฅ gjennomfรธre repeterbare tester
  • ร˜k synlighet som muliggjรธr stรธrre kommunikasjon
  • Hjelper med รฅ utvikle et potensielt fraktbart produkt for helautomatisert bygg
  • Hjelper deg med รฅ redusere risikoen ved รฅ gjรธre distribusjonen raskere og mer forutsigbar
  • umiddelbar tilbakemelding nรฅr problemet kommer
  • Unngรฅ forvirring i siste liten ved utgivelsesdato og tidspunkt

Beste praksis for bruk av CI-systemer

Her er noen viktige beste fremgangsmรฅter under implementering

  • Begรฅ tidlig og begรฅ Begรฅr ofte aldri รธdelagt kode
  • Reparer byggefeil umiddelbart
  • Lov om beregninger
  • Innebygd hvert mรฅlmiljรธ Lag artefakter fra hvert bygg
  • Byggingen av programvaren mรฅ utfรธres pรฅ en mรฅte slik at den kan automatiseres
  • Ikke avhengig av en IDE
  • Bygg og test alt nรฅr det endres
  • Databaseskjemaet teller som alt
  • Hjelper deg med รฅ finne ut nรธkkelberegninger og spore dem visuelt
  • Sjekk inn ofte og tidlig
  • Sterkere kildekodekontroll
  • Kontinuerlig integrasjon kjรธrer enhetstester hver gang du forplikter kode
  • Automatiser byggingen og test alle
  • Hold bygget raskt med automatisert distribusjon

Ulemper med CI

Her er ulemper/ulemper med kontinuerlig integrasjonsprosess:

  • Innledende oppsettstid og opplรฆring kreves for รฅ bli kjent med Cl server
  • Utvikling av egnede testprosedyrer er avgjรธrende
  • Velutviklet testpakke krevde mange ressurser for Cl-serveren
  • Konvertering av kjente prosesser
  • Krever ekstra servere og miljรธer
  • Ventetider kan oppstรฅ nรฅr flere utviklere รธnsker รฅ integrere koden sin rundt samme tid

Verktรธy for CI-prosessen

Her er noen av de viktigste CI/CD-verktรธyene:

Jenkins

Jenkins

Jenkins er en รฅpen kildekode kontinuerlig integreringsprogramvare. Den er skrevet ved hjelp av Java programmeringssprรฅk. Det letter sanntidstesting og rapportering om isolerte endringer i en mer massiv kodebase. Denne programvaren hjelper utviklere til raskt รฅ finne og lรธse feil i kodebasen og automatisere testing av byggene deres.

Bamboo

Bamboo

Bamboo er en kontinuerlig integrasjonsbyggeserver som utfรธrer โ€“ automatisk bygg, test og utgivelser pรฅ ett enkelt sted. Det fungerer sรธmlรธst med JIRA-programvare og Bitbucket. Bamboo stรธtter mange sprรฅk og teknologier som CodeDeply, Docker, Git, SVN, Mercurial, AWS og Amazon S3 bรธtter.

TeamCity

TeamCity

TeamCity er en kontinuerlig integrasjonsserver som stรธtter mange kraftige funksjoner. Den opprettholder en CI-server sunn og stabil selv nรฅr ingen bygg kjรธrer. Det gir bedre kodekvalitet for ethvert prosjekt

Sammendrag

  • Kontinuerlig integrasjon definisjon: Kontinuerlig integrasjon er en programvareutviklingsmetode der medlemmer av teamet kan integrere arbeidet sitt minst en gang om dagen
  • CI/CD betyr kombinasjon av kontinuerlig integrasjon og kontinuerlig levering eller kontinuerlig distribusjon.
  • Utvikling uten CI skaper mange feil, mens utvikling med CI gir fรฆrre feil
  • Viktige aktiviteter for kontinuerlig integrasjon er 1) DB-integrasjon, 2) kodeinspeksjon, 3) automatisert distribusjon, dokumentgenerering og kompilering.
  • Byggingen skal skje kontinuerlig ved รฅ bruke en dedikert Cl-server, ikke en cron-jobb.
  • Viktige elementer i CI er 1) Versjonskontrollsystem 2) Virtual Machine 3) Host CI Tool-lรธsninger 4) Verktรธy
  • Kontinuerlig integrasjonssystem lar deg vedlikeholde bare et enkelt kildelager
  • CI/CD-prosessen hjelper deg รฅ bygge programvare av bedre kvalitet
  • De viktigste beste praksisene for Azure Kontinuerlig integrasjonsprosess er รฅ forplikte seg tidlig og forplikte seg ofte aldri รฅ forplikte seg til brutt kode
  • Den stรธrste ulempen med CI/CD pipeline prosessen er at velutviklet testpakke krevde mange ressurser for Cl-serveren
  • Jenkins, Bambook, og Team City er noen nyttige AWS Continuous Integrasjonsverktรธy.

Oppsummer dette innlegget med: