Vad är CI/CD? Kontinuerlig integration och kontinuerlig leverans

Vad är Continuous Integration (CI)?

Kontinuerlig integration är en metod för mjukvaruutveckling där teammedlemmar integrerar sitt arbete minst en gång om dagen. I denna metod kontrolleras varje integration av en automatiserad build för att upptäcka fel. Detta koncept introducerades först för över två decennier sedan för att undvika "integrationshelvetet", vilket händer när integrationen skjuts upp till slutet av ett projekt.

I Continuous Integration efter en kod-commit byggs och testas programvaran omedelbart. I ett stort projekt med många utvecklare görs commits många gånger under en dag. Med varje commit byggs och testas koden. Om testet är godkänt testas build för distribution. Om implementeringen lyckas skickas koden till produktion. Denna commit, bygg, test och distribution är en kontinuerlig process, och därav namnet kontinuerlig integration/deployment.

Vad är kontinuerlig leverans (CD)?

Kontinuerlig leverans är en mjukvaruutvecklingsmetod där ett team utvecklar mjukvaruprodukter i en kort cykel. Det säkerställer att programvara lätt kan släppas när som helst. Huvudsyftet med kontinuerlig leverans är att bygga, testa och släppa mjukvara med bra hastighet och frekvens. Det hjälper dig att minska kostnaden, tiden och risken för att leverera ändringar genom att tillåta frekventa uppdateringar i produktionen.

Vad är skillnaden mellan CI och CD?

CI vs CD: Continuous Integration (CI) är ett tillvägagångssätt för att testa varje ändring av kodbas automatiskt, medan Continuous Delivery (CD) är ett tillvägagångssätt för att få ändringar av nya funktioner, konfigurationer och buggfixar.

Utveckling utan CI vs. Utveckling med CI

Här är viktiga skillnader mellan utveckling med CI eller utan CI:

Utveckling utan CI Utveckling med CI
Massor av buggar Färre buggar
Sällsynta begås Regelbundna åtaganden
Sällsynta och långsamma släpp Regelbundna fungerande releaser
Svår integration Enkel och effektiv integration
Testning sker sent Kontinuerlig integrationstestning sker tidigt och ofta.
Problem som tagits upp är svårare att åtgärda Hitta och åtgärda problem snabbare och mer effektivt.
Dålig projektsynlighet Bättre projektsynlighet

Skillnaden mellan kompilering och kontinuerlig integration

Aktiviteter i kontinuerlig integration
Aktiviteter i kontinuerlig integration

Medan kompilering bara kompilerar en kod, utför CI följande aktiviteter

DB integration

  • Se till att DB och kod är synkroniserade
  • Automatiserat skapande av DB och testdata.

Kodinspektion

  • Säkerställer en sund kodbas
  • Identifierar problem tidigt och tillämpar bästa praxis

Automatiserad distribution

  • Låter dig släppa produkten när som helst
  • Kontinuerligt demo-tillstånd och det fungerar på vilken maskin som helst

Dokumentgenerering

  • Se till att dokumentationen är aktuell
  • Tar bort bränt från utvecklaren
  • Producerar byggrapporter och mätvärden

Sammanställning

Kompilering är den process som datorn tar för att konvertera en programmeringsspråkskod på hög nivå till ett maskinspråk som datorn kan förstå. Det säkerställer en kodkompilator på varje målplattform.

När bygger jag?

  • Vid varje incheckning
  • Varje gång ett beroende förändras

Vilka steg finns i kontinuerlig integration?

CI-process
CI-process
  • Helst bör byggnaden komma från kommandoraden och inte vara beroende av en integrerad utvecklingsmiljö (IDE).
  • Bygget bör ske kontinuerligt med en dedikerad Cl-server, inte ett cron-jobb.
  • CI byggd bör utlösas vid varje incheckning och inte bara vid midnatt
  • Bygget bör ge omedelbar feedback och kräver ingen utvecklaransträngning
  • Identifiera nyckeltal och spåra dem visuellt. Ännu viktigare, agera på dem omedelbart

Vad behöver du för att genomföra CI-processen?

Genomföra CI-processen

Här är nyckelelementen som du behöver för att utföra hela CI-processen:

  • Version Control System (VCS): Det erbjuder en pålitlig metod för att centralisera och bevara ändringar som gjorts i ditt projekt över tid.
  • Virtuell maskin: Du bör ha en reservserver eller åtminstone en virtuell maskin att bygga ditt system.
  • Hosted CI Tool Solutions: För att undvika servrar eller virtuella maskiner bör du välja värdbaserade CI-verktygslösningar. Detta verktyg hjälper till att underhålla hela processen och erbjuder enklare skalbarhet.
  • Verktyg: Om du väljer en variant med egen värd, måste du installera en av de många CI-verktyg som Jenkins, TeamCity, Bamboo, GitLab, etc.

Hur fungerar kontinuerlig integration?

Du är säkert medveten om den gamla telefonen Nokia. Nokia brukade implementera en procedur som kallas nattlig konstruktion. Efter flera åtaganden från olika utvecklare under dagen byggdes programvaran varje natt. Eftersom programvaran bara byggdes en gång om dagen är det en enorm smärta att isolera, identifiera och åtgärda felen i en stor kodbas.

Later, antog de metoden med kontinuerlig integration. Mjukvaran byggdes och testades så snart en utvecklare begick kod. Om något fel upptäcks kan respektive utvecklare snabbt åtgärda defekten.

Exempel på kontinuerlig integration
Exempel på kontinuerlig integration

Funktioner hos CI

Här är viktiga funktioner och fördelar med kontinuerlig integration:

  • Låter dig underhålla bara ett enda källlager
  • Du kan testa klonen av produktions-CI-miljön
  • Den byggda miljön ska ligga nära produktionsmiljön.
  • En av fördelarna med kontinuerlig integrering är ständig tillgänglighet av en aktuell version
  • Hela processen med att bygga och testa och distribuera bör vara synlig för alla stackinnehavare.

Varför använda CI?

Här är viktiga skäl för att använda kontinuerlig integration:

  • Hjälper dig att bygga mjukvara av bättre kvalitet
  • CI-processen hjälper till att skala upp personalantalet och leveransresultatet för ingenjörsteam.
  • CI tillåter mjukvaruutvecklare att arbeta oberoende med funktioner parallellt.
  • Hjälper dig att utföra repeterbara tester
  • Öka synligheten vilket möjliggör bättre kommunikation
  • Hjälper till att utveckla en potentiellt leveransbar produkt för helautomatisk konstruktion
  • Hjälper dig att minska riskerna genom att göra implementeringen snabbare och mer förutsägbar
  • omedelbar feedback när problemet uppstår
  • Undvik förvirring i sista minuten vid releasedatum och tidpunkt

Bästa metoder för att använda CI-system

Här är några viktiga bästa praxis vid implementering

  • Begå tidigt och begå Begår ofta aldrig trasig kod
  • Åtgärda byggfel omedelbart
  • Lag om mått
  • Inbyggd i varje målmiljö Skapa artefakter från varje byggnad
  • Byggandet av programvaran måste utföras på ett sätt så att det kan automatiseras
  • Var inte beroende av en IDE
  • Bygg och testa allt när det förändras
  • Databasschemat räknas som allt
  • Hjälper dig att ta reda på nyckeltal och spåra dem visuellt
  • Checka in ofta och tidigt
  • Starkare källkodskontroll
  • Kontinuerlig integration kör enhetstester närhelst du commit kod
  • Automatisera bygget och testa alla
  • Håll bygget snabbt med automatiserad distribution

Nackdelar med CI

Här är nackdelar/nackdelar med kontinuerlig integration:

  • Inledande installationstid och utbildning krävs för att bekanta dig med Cl-servern
  • Utveckling av lämpliga testprocedurer är avgörande
  • Välutvecklad testsvit krävde många resurser för Cl-servern
  • Konvertering av välbekanta processer
  • Kräver ytterligare servrar och miljöer
  • Väntetider kan uppstå när flera utvecklare vill integrera sin kod ungefär samtidigt

Verktyg för CI-process

Här är några av de viktigaste CI/CD-verktygen:

Jenkins

Jenkins

Jenkins är en mjukvara för kontinuerlig integration med öppen källkod. Det är skrivet med hjälp av Java programmeringsspråk. Det underlättar realtidstestning och rapportering om isolerade förändringar i en mer massiv kodbas. Den här programvaran hjälper utvecklare att snabbt hitta och lösa defekter i sin kodbas och automatisera testning av deras byggen.

Bamboo

Bamboo

Bamboo är en kontinuerlig integrationsbyggserver som utför – automatisk konstruktion, testning och släpper på en enda plats. Det fungerar sömlöst med JIRA-programvara och Bitbucket. Bamboo stöder många språk och teknologier som CodeDeply, Docker, Git, SVN, Mercurial, AWS och Amazon S3 hinkar.

TeamCity

TeamCity

TeamCity är en kontinuerlig integrationsserver som stöder många kraftfulla funktioner. Den håller en CI-server frisk och stabil även när inga versioner körs. Det ger bättre kodkvalitet för alla projekt

Sammanfattning

  • Kontinuerlig integration definition: Kontinuerlig integration är en metod för mjukvaruutveckling där medlemmar i teamet kan integrera sitt arbete minst en gång om dagen
  • CI/CD betyder kombination av kontinuerlig integration och kontinuerlig leverans eller kontinuerlig driftsättning.
  • Utveckling utan CI skapar många buggar medan utveckling med CI ger färre buggar
  • Viktiga aktiviteter för kontinuerlig integration är 1) DB-integration, 2) Kodinspektion, 3) Automatiserad distribution, dokumentgenerering och kompilering.
  • Bygget bör ske kontinuerligt med en dedikerad Cl-server, inte ett cron-jobb.
  • Viktiga delar av CI är 1) Versionskontrollsystem 2) Virtuell maskin 3) Host CI Tool-lösningar 4) Verktyg
  • Systemet med kontinuerlig integration låter dig underhålla bara ett enda källlager
  • CI/CD-processen hjälper dig att bygga mjukvara av bättre kvalitet
  • De viktigaste bästa praxis för Azure Kontinuerlig integrationsprocess är att begå tidigt och begå ofta aldrig trasig kod
  • Den stora nackdelen med CI/CD pipeline Processen är att välutvecklad testsvit krävde många resurser för Cl-servern
  • Jenkins, Bambook och Team City är några användbara AWS Continuous Integrationsverktyg.