Continuous Delivery

DevCore jobbar alltid aktivt för att säkra och höja kvaliteten på våra leveranser.

 

Korta release-cykler med automatiserade byggen, tester och produktionssättningar

Hög leveranskvalitet beror naturligtvis även på planering, projektstyrning och utvecklingsprocesser, men här koncentrerar vi oss på att berätta lite om hur vi förändrar våra release-processer.

Vi strävar efter att våra projekt ska anamma continuous delivery, vilket innebär korta release-cykler med automatiserade byggen, tester och produktionssättningar. Poängen med att automatisera så mycket som möjligt är att release-processen blir förutsägbar och repeterbar, vilket i sin tur gör att man sparar tid och minimerar mänskliga fel som kan uppkomma vid manuella steg.

Versionshantering

Versionshantering är en förutsättning för att spåra kodförändringar över tid och att hålla parallella utvecklingsspår samtidigt. Vi har länge använt Git för att hantera vår källkod, men nu har vi även standardiserat vår branching-strategi och hur den relaterar till olika release-kanaler och livscykler.

Byggsystem

Vi har tidigare använt Team Foundation Servers (TFS) XAML-byggsystem för att automatiskt kompilera och köra tester när ny kod checkas in. Nu migrerar vi våra byggen till det nya byggsystemet i TFS 2015 som är mer kraftfullt och modulärt. Med det nya byggsystemet kan vi nu, direkt på byggserver, enkelt köra allt som behövs (kod-kompilering, sass-kompilering, sprite-generering, npm, gulp m.m.) för att få ihop ett deploybart paket. Tidigare behövde utvecklare skapa detta paket lokalt på sin utvecklingsdator, vilket kan skapa problem då man inte har en konsekvent byggmiljö. 

Nu kan vi även köra fler tester och analysverktyg för att snabbare fånga eventuella problem. Det faktum att byggservern kan köra preprocessorer för t.ex. javascript och css, gör att vi inte längre behöver checka in resultatfilerna, så nu slipper vi onödiga irriterande merge-konflikter när flera utvecklare jobbar tillsammans.

Deploy

När det gäller deployer av det som byggts så har vi tidigare gjort det via MS web deploy i våra interna testmiljöer, men då web deploy har vissa begränsningar så har vi gjort produktionssättningar genom manuell filkopiering. Nu har vi införskaffat Octopus Deploy för att sköta alla deploys oavsett miljö. Med Octopus Deploy får vi en release-pipeline där releaser trycks in direkt ifrån byggservern. Release-pipelinen har olika steg, ett för varje miljö som ska deployas till. Hur många steg det är beror på projekt men oftast är det 2 eller 3 miljöer (utveckling/test - staging - produktion).

Med Octopus Deploy byggs releasen enbart en gång, vilket gör att man kan vara säker på att man deployar exakt samma filer oavsett miljö. Efter tester är avklarade i en miljö kan man enkelt avancera releasen till nästa steg i kedjan med en knapptrycking och Octopus Deploy sköter allt automatiskt. Transformationer för konfigurationsfiler, som hanterar skillnader mellan miljöer, appliceras vid deploy istället för vid bygge som är det vanliga.

Utöver att göra releaser snabbare och mer robusta så ger Octopus Deploy tillsammans med TFS total spårbarhet mellan miljöer, byggserver och källkod. Det blir inget tvivel om vilken kod som körs i en miljö då man snabbt kan se exakt vilket unikt versionsnummer som är deployat och vilket bygge och version av koden som det motsvarar.

De förändringar vi gjort gör jobbet enklare, effektivare och tryggare för våra utvecklare och vi är övertygade om att det kommer återspeglas i affärsvärde för våra kunder.

Vill du veta mer?

Vi hjälper dig gärna!

Maila [email protected] eller ring +46 8 24 40 30

Tack för ditt meddelande

Vi hör snart av oss!