Continuous delivery är ett begrepp som används inom systemutveckling och betyder kontinuerlig leverans. Syftet är att snabbt kunna leverera ny mjukvara till kunden. Behovet av Continuous delivery kommer från agila utvecklingsprinciper där man jobbar i korta, fokuserade perioder där man efter varje period levererar ny funktionalitet till kunden som kan testa av och ge feedback inför nästa period.
Continuous delivery är någonting som är tätt relaterat till Continuous integration som är en process som knyter an till källkodshantering. Det normala är att när kod checkas in i källkodshantering så finns det en process som hämtar ut koden, kompilerar den, kör tester, validerar och lagrar artifakter (kompilerad kod). På så sätt kan man i slutet av processen få en kvittens på att allt fungerar som det skall.
Continuous delivery kan ta vid där Continuous integration slutar och använda de artifakter från varje bygge till att leverera koden i kompilerad form till en miljö där den kan testas. Det kan vara en intern utvecklingsmiljö, en demo-server eller till och med en server i kundens egen servermiljö.
Mjukvaruleveranser har traditionellt varit en manuell process och kan ha bestått i att klippa och klistra filer, använda verktyg som kan synka över filer, jämföra xml-filer rad för rad, jämföra databaser och generera script som skall köras i en magisk ordning eller batch-script som gör delar av ovan nämnda jobb mer eller mindre tillförlitligt. Till sist hänger dock ändå allt på att personen som gör leveransen förstår och kommer ihåg hur allt hänger ihop och inte glömmer något vilket är lättare sagt än gjort, speciellt om det är ett större system med många olika komponenter.
Ett annat problem är att veta vilken version av filer som släppts. Utan att ha en process för versionshantering är det svårt att veta vilken version av källkoden som hör ihop med de filer som ligger levererade på en server och därmed också smått omöjligt att göra hotfixar utan att även leverera all ny kod på en gång.
(image)