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?
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

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?

- 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?
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.

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 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 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 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.




