Continuous delivery (CD)
Att programmet hela tiden hålls i ett skick där det kan publiceras, så att en godkänd ändring kan släppas med ett enkelt steg när någon bestämmer det.
- Kallas även
- kontinuerlig leverans
- Kategorier
- UtvecklingsflödeInfrastruktur
Continuous delivery, CD, kontinuerlig leverans, CI/CD
Enkel förklaring
Continuous delivery betyder att programmet alltid är redo att publiceras. Varje ändring som har godkänts byggs och testas automatiskt, och resultatet ligger färdigt att släppa.
Själva publiceringen startas av en människa, när man vill. Det ska bara kräva ett enkelt steg, till exempel ett kommando eller en knapp, och inte ett långt arbete med manuella moment.
Continuous delivery bygger vidare på continuous integration, där ändringarna kontrolleras automatiskt. Om även publiceringen sker automatiskt kallas det continuous deployment.
Teknisk förklaring
Martin Fowler beskriver continuous delivery som att bygga programvaran så att den kan släppas till produktion när som helst. Det betyder bland annat att programmet går att publicera under hela utvecklingen, att alla snabbt får automatisk återkoppling på om en ändring är redo, och att vilken version som helst kan publiceras med ett enkelt steg.
Kedjan kallas ofta en deployment pipeline: bygge, tester, eventuellt fler kontroller och sedan publicering till en eller flera miljöer, till exempel test och produktion. Resultatet från bygget sparas ofta som en artefakt, alltså färdiga filer som kan publiceras utan att byggas om.
Produktion betyder den miljö som de riktiga användarna använder.
Praktiskt exempel
Kodkollektivet Academy ligger nära continuous delivery men inte helt. När en ändring är godkänd och CI är grön, startar en människa publiceringen med ett kommando. Publiceringen stoppar själv om CI inte är grön, och den förra versionen kan återställas med ett annat kommando.
Det som saknas är artefakten: publiceringen bygger sajten på nytt i stället för att använda filerna som CI redan har byggt och testat.
När och varför används det?
Continuous delivery används när man vill kunna publicera ofta och säkert. Små leveranser är lättare att kontrollera och lättare att backa än stora leveranser med många ändringar på en gång.
Det passar också när en människa ska bestämma när något publiceras, till exempel för att användarna ska förvarnas eller för att en ändring ska släppas en viss dag.
Vanliga missförstånd
- “Continuous delivery betyder att allt publiceras automatiskt.” Nej, det är continuous deployment. Med continuous delivery kan varje ändring publiceras, men en människa startar publiceringen.
- “CD betyder att ändringar går ut utan kontroll.” Nej. Ändringarna kontrolleras av CI och granskas innan de förs in. CD handlar om vad som händer efter det.
- “Förkortningen CD betyder alltid continuous delivery.” CD används för både continuous delivery och continuous deployment. Sammanhanget avgör vilket som menas.
- “CI/CD är en sak.” Det är två saker som ofta används tillsammans: CI kontrollerar, och CD levererar.