Continuous deployment (CD)
Att varje ändring som klarar alla automatiska kontroller publiceras direkt, utan något manuellt steg.
- Kallas även
- kontinuerlig driftsättning
- Kategorier
- UtvecklingsflödeInfrastruktur
Continuous deployment, CD, kontinuerlig driftsättning, CI/CD
Enkel förklaring
Med continuous deployment publiceras varje godkänd ändring automatiskt. Ingen trycker på någon knapp: när testerna och kontrollerna har gått igenom hamnar ändringen hos användarna.
Det är ett steg längre än continuous delivery. Där är varje ändring redo att publiceras, men en människa startar publiceringen. Med continuous deployment tar automatiken även det steget.
Teknisk förklaring
Martin Fowler beskriver continuous deployment som att varje ändring går igenom hela kedjan av steg och automatiskt hamnar i produktion. Produktion betyder den miljö som de riktiga användarna använder.
Continuous deployment förutsätter continuous delivery: allt som behövs för en publicering måste redan vara automatiserat. Skillnaden är att det inte finns någon mänsklig kontroll mellan en grön pipeline och produktionen. Testerna blir därför den sista kontrollen, och de måste vara pålitliga.
Därför behövs också ett snabbt sätt att backa till förra versionen om något ändå går fel.
Praktiskt exempel
En webbtjänst med continuous deployment kan fungera så här: en utvecklare för in en rättning i huvudgrenen, CI kör testerna och några minuter senare är rättningen ute hos användarna, utan att någon har gjort något mer.
Kodkollektivet Academy använder inte continuous deployment. Varje publicering startas av en människa. Det är ett medvetet val i början, så att den som publicerar alltid vet att det sker.
När och varför används det?
Continuous deployment används när man vill få ut ändringar snabbt och ofta, och när testerna är så pålitliga att man litar på dem utan en mänsklig kontroll före publiceringen. Små ändringar som går ut direkt ger snabb återkoppling, och ett fel är lättare att hitta när bara en ändring har publicerats.
Det passar inte när en människa måste godkänna varje publicering, till exempel för att användarna ska förvarnas.
Rekommendation: gå över till continuous deployment först när testerna är pålitliga och det finns ett snabbt sätt att backa.
Vanliga missförstånd
- “Continuous deployment och continuous delivery är samma sak.” Nej. Skillnaden är om en människa startar publiceringen eller inte. Båda förkortas CD.
- “Med continuous deployment granskar ingen koden.” Nej. Ändringen granskas och kontrolleras innan den förs in, till exempel i en pull request. Det som är automatiskt är publiceringen efteråt.
- “Continuous deployment är alltid bättre.” Nej, det är ett val. Det kräver pålitliga tester och passar inte när varje publicering ska godkännas av en människa.