Vad är kontinuerlig leverans?
Här följer du Tailspin-teamet när de diskuterar hur en pipeline för kontinuerlig leverans (CD) kan hjälpa dem med den kommande versionen.
Tailspin-teamet börjar känna sig bättre med sin byggprocess. De har en automatiserad process som körs på Azure Pipelines, vilket innebär att byggmiljön är stabil. Amita vet direkt när hon behöver testa en artefakt. Hon hittar färre buggar eftersom Andy och Mara har börjat lägga till enhetstester och kodkvalitetstester. Livet ser bra ut. Vi ska se hur det går för teamet.
Morgonmöte
Teamet är i mötesrummet och väntar på Irwin, produktchefen, som vill prata med dem. De ser fram emot att berätta för honom om sina framsteg. Men när Irwin kommer in ser han inte glad ut. Han börjar prata direkt.
Irwin: Jag hade ett möte i morse med ledningsgruppen. De vill veta varför det tar så lång tid att släppa våra spel och webbplatser. Våra närmaste konkurrenter får nya funktioner och nya spel där ute mycket snabbare än vi gör. Vi måste påskynda saker och ting. Jag varnar inte bara dig. Jag varnar alla team. Vad kan vi göra för att hjälpa ditt team att distribuera snabbare?
Andy: Det här är lite plötsligt, men vi ligger lite före dig. Vi har automatiserat hur vi skapar våra webbplatser. Nu kanske det är dags att utöka vår automatisering till vår lanseringsprocess.
Irwin: Hur skulle du göra det?
Mara: Vi har skapat en automatiserad byggpipeline med hjälp av Azure Pipelines. Den skapar en artefakt som Amita kan testa. Vi kan också skapa en pipeline för kontinuerlig leverans (CD).
Irwin: Vad är en CD-pipeline?
Mara börjar förklara, men avbryts när Irwins mobiltelefon pipar. Irwin läser ett sms och muttrar under andan.
Irwin: Jag är ledsen, men det här är brådskande. Jag måste gå. Varför tar ni inte reda på den här CD-verksamheten och återkommer till mig snart?
Andy ser sig omkring i sitt team.
Andy: Kaffe?
Andy och resten av teamet går till kaféet för att skapa en plan.
Vad är kontinuerlig leverans?
Teamet träffas via kaffe för att ta reda på hur du konfigurerar ett arbetsflöde för kontinuerlig leverans.
Andy: Mara, kan du berätta vad du vet om kontinuerlig leverans?
Mara: För mig är CD och DevOps oskiljaktiga. Kom ihåg att vi definierade DevOps som en union av personer, processer och produkter för att möjliggöra kontinuerlig leverans av värde till våra slutanvändare.
CD är en uppsättning processer, verktyg och tekniker som möjliggör snabb, tillförlitlig och kontinuerlig leverans av programvara. Så CD handlar inte bara om att konfigurera en pipeline, även om den delen är viktig. CD handlar om att konfigurera en arbetsmiljö där:
- Vi har en tillförlitlig och repeterbar process för att släppa och distribuera programvara.
- Vi automatiserar så mycket som möjligt.
- Vi väntar inte med att göra något som är svårt eller smärtsamt; I stället gör vi det oftare så att vi kommer på hur vi ska göra det rutinmässigt.
- Vi har allt i källkontrollen.
- Vi är alla överens om att gjort innebär frisläppt.
- Vi bygger in kvalitet i processen. Kvalitet är aldrig en eftertanke.
- Vi ansvarar alla för lanseringsprocessen. Vi arbetar inte längre i silor.
- Vi försöker alltid bli bättre.
Vi har redan satt många av dessa idéer på plats, och vi är alla överens om att de har förbättrat hur vi arbetar. CD är ett tillägg till det vi redan har startat.
Varför behöver jag kontinuerlig leverans?
CD hjälper programvaruteam att leverera tillförlitliga programuppdateringar till sina kunder i snabb takt. CD hjälper också till att säkerställa att både kunder och intressenter har de senaste funktionerna och korrigeringarna snabbt.
Låt oss fortsätta att lyssna på laget när de pratar ut det här.
Tack, Mara. Vi behöver CD eftersom världen, som vi alla vet, har förändrats. Nya funktioner släpps snabbare. Uppdateringar och felkorrigeringar måste vara tillgängliga direkt. Det är inte bara vår ledning som vill påskynda våra versioner. Ledningen reagerar helt enkelt på våra kunders krav. Om kunderna inte kan få vad de vill ha av oss, kommer de att gå någon annanstans.
Tim: Överens! Jag längtar efter att komma igång.
Andy: Tack, alla. Jag ska föreslå att Mara och jag sätter ihop ett enkelt konceptbevis (POC). Jag tror att allt kommer att bli mycket lättare att förstå om du kan se en CD-pipeline i praktiken.
Lycka till, ni två.
Teamet lämnar Andy och Mara för att räkna ut detaljerna.
Hur ser kontinuerlig leverans ut jämfört med att högerklicka på publicering?
Många utvecklingsverktyg tillhandahåller sätt att publicera ditt program direkt till vissa målmiljöer, till exempel Microsoft Internet Information Services (IIS) eller Azure. Du kan till exempel publicera en ASP.NET Core-app till Azure med hjälp av Visual Studio. Den här processen kallas ibland för högerklickspublicering.
Att högerklicka på publicering är ett bra sätt att snabbt skapa en prototyp. Du kan till exempel högerklicka på publicera ditt program till Azure så att du kan dela en ny idé med ditt team. Den här tekniken har dock begränsningar.
Kontinuerlig leverans ger ett konsekvent sätt för dig och ditt team att kontinuerligt testa, distribuera och övervaka ditt program varje gång du checkar in koden. När du högerklickar på publicera ditt program finns det ingen garanti för att koden har testats korrekt eller fungerar som förväntat under verklig användning.
I den här korta videon förklarar Abel Wang, molnrådgivare på Microsoft, mer.
Hur ser kontinuerlig leverans ut jämfört med kontinuerlig distribution?
I DevOps-communityn kan du höra termerna kontinuerlig leverans och kontinuerlig distribution. Betyder dessa termer samma sak? I den här korta videon förklarar Abel skillnaden.
Vilka verktyg för kontinuerlig leverans kan jag använda?
När mötet är slut planerar Andy och Mara nästa steg. De använder Azure Pipelines för att skapa sin programvara. De vill överväga vilka verktyg, inklusive Azure Pipelines, som är tillgängliga för att hjälpa dem med deras lanseringsprocess.
Mara: Var vill du börja?
Andy: Först måste vi komma överens om vårt versionshanteringsverktyg. Nu ska vi se till att verktyget vi väljer:
- Stöder vårt versionskontrollsystem.
- Kan distribuera till flera miljöer så att vi kan testa och validera vårt arbete.
- Gör det enkelt att definiera våra distributionsuppgifter.
- Är lätt att utöka.
Mara: Azure DevOps integreras med flera andra lösningar för kontinuerlig integrering (CI) och CD. Många lösningar finns där ute, och vi är inte investerade i någon av dem. Om vi var det, skulle det vara vettigt att använda den. Populära CI- och CD-system är Jenkins, Circle CI, GitLab, Travis CI och Azure Pipelines.
Dessa verktyg har likheter, men var och en av dem har också särskilda styrkor. Vissa av dessa verktyg är öppen källkod, vissa är kostnadsfria och vissa måste du betala för. De tillhandahåller också inbyggda integreringar med andra programvaruverktyg.
Jenkins är till exempel öppen källkod. Det har många plugin-program, och många företag använder det. Du kan köra Circle CI i molnet eller lokalt. Jag tror att vi skulle behöva anpassa det. GitLab är ett enda program för hela livscykeln för programvaruutveckling. Det kan vara större än vi vill ha just nu. Vi kan fortsätta att använda Azure Pipelines.
Här är en kort video där Abel berättar om hur du använder DevOps-metodtips för att distribuera kod till Azure.
Mara: Min röst är att stanna hos Azure Pipelines.
Andy: Jag håller med. Azure Pipelines har fungerat bra för oss hittills och vi behöver inte lära oss någon annan ny teknik.
Mara: Bra. Nu ska vi komma igång med pipelineinformationen.
Andy och Mara flyttar till ett konferensrum för att planera sin CD-pipeline.