Definitie: CI/CD staat voor continuous integration en continuous delivery of continuous deployment: een werkwijze waarbij codewijzigingen automatisch worden samengevoegd, gebouwd, getest en klaargezet of uitgerold. Het doel is dat software in kleine, gecontroleerde stappen sneller en betrouwbaarder bij gebruikers komt.
In het kort
- Continuous integration (CI) betekent dat ontwikkelaars hun wijzigingen minstens dagelijks samenvoegen, waarna een automatische build en tests controleren of alles nog werkt.
- Continuous delivery zet geteste code automatisch klaar voor livegang; iemand geeft nog handmatig akkoord.
- Continuous deployment gaat een stap verder: elke wijziging die alle tests doorstaat, gaat automatisch live.
- Bekende tools zijn Jenkins, GitLab CI/CD, GitHub Actions, CircleCI en Azure DevOps.
Wat is CI/CD?
CI/CD is een manier om software te bouwen en uit te rollen waarbij zo veel mogelijk handwerk is geautomatiseerd. Elke keer dat een ontwikkelaar een wijziging opslaat in de gedeelde codebase, start een reeks vaste stappen: de code wordt gebouwd, getest en, als alles slaagt, klaargezet of direct live gezet. Die reeks heet een pipeline.
Het idee erachter is eenvoudig. Een kleine wijziging is makkelijker te controleren en terug te draaien dan een grote. Als je dagelijks kleine stappen zet en elke stap automatisch test, vind je fouten op het moment dat ze ontstaan. Volgens Guru99 werd continuous integration meer dan twintig jaar geleden geïntroduceerd om de zogenaamde integratiehel te voorkomen: het probleem dat code van verschillende ontwikkelaars pas aan het eind van een project wordt samengevoegd en dan niet blijkt te passen.
Wat is het verschil tussen CI, continuous delivery en continuous deployment?
De afkorting CD wordt voor twee dingen gebruikt. Red Hat en OVHcloud maken het onderscheid zo:
| Continuous integration | Continuous delivery | Continuous deployment | |
|---|---|---|---|
| Wat het doet | Wijzigingen samenvoegen, bouwen en testen | Geteste code automatisch klaarzetten voor productie | Geteste code automatisch live zetten |
| Menselijke stap | Code schrijven en beoordelen | Akkoord geven voor livegang | Geen, behalve bij falende tests |
| Vraagt | Geautomatiseerde tests | Een betrouwbare, herhaalbare uitrol | Veel vertrouwen in de testdekking |
| Geschikt voor | Elk softwareproject met meerdere wijzigingen | De meeste zakelijke applicaties | Teams met sterke testautomatisering en veel releases |
OVHcloud merkt op dat organisaties met strikte regelgeving vaak niet kiezen voor continuous deployment, omdat een menselijke controle voor livegang dan verplicht of wenselijk is.
Hoe ziet een CI/CD-pipeline eruit?
Een pipeline is de reeks automatische stappen die een wijziging doorloopt. Een typische pipeline voor een webapplicatie:
- Commit. Een ontwikkelaar zet een wijziging in het versiebeheer, meestal Git.
- Build. De applicatie wordt opgebouwd, inclusief de benodigde pakketten.
- Tests. Unittests, integratietests en regressietests controleren of alles werkt en of bestaande functies niet kapot zijn gegaan.
- Codecontroles. Automatische controles op codestijl, kwaliteit en bekende kwetsbaarheden in gebruikte pakketten.
- Uitrol naar een testomgeving. De wijziging komt op een omgeving die op productie lijkt.
- Akkoord. Bij continuous delivery beoordeelt iemand het resultaat en geeft groen licht.
- Uitrol naar productie. De nieuwe versie gaat live, vaak zonder dat gebruikers iets merken.
- Monitoring. Na livegang wordt gekeken of er fouten optreden, zodat je snel kunt terugdraaien.
Faalt een stap, dan stopt de pipeline en krijgt het team een melding. De kapotte wijziging komt dan niet verder.
Welke tools worden gebruikt voor CI/CD?
| Tool | Kenmerk |
|---|---|
| Jenkins | Open source CI-server met veel plug-ins |
| GitLab CI/CD | Ingebouwd in GitLab, naast het beheer van de code |
| GitHub Actions | Ingebouwd in GitHub, met workflows in configuratiebestanden |
| CircleCI | Cloudplatform met omgevingen op basis van containers |
| Azure DevOps | Microsoft-suite voor code, pipelines en taakbeheer |
| Bamboo en TeamCity | Commerciële CI-servers |
De tools in deze tabel worden genoemd door OVHcloud en Guru99, aangevuld met GitHub Actions, dat veel gebruikt wordt door teams die hun code op GitHub beheren. Voor kleinere projecten is de CI/CD-functie van het platform waar de code al staat vaak de eenvoudigste keuze.
Voordelen van CI/CD
- Fouten eerder gevonden. Elke wijziging wordt direct getest, dus problemen komen boven terwijl ze nog klein zijn.
- Kleinere, veiligere releases. Een kleine wijziging is makkelijker te begrijpen en terug te draaien.
- Voorspelbare uitrol. Elke release volgt dezelfde stappen, zonder vergeten handelingen.
- Sneller verbeteren. Nieuwe functies en reparaties bereiken gebruikers sneller.
- Minder handwerk. Volgens OVHcloud besteden ontwikkelaars minder tijd aan handmatig testen en uitrollen.
- Minder stress rond releases. Een uitrol is een routine in plaats van een spannend moment.
Nadelen en aandachtspunten
- Investering vooraf. PayPro Global wijst erop dat invoering kennis, tijd en middelen vraagt.
- Zo goed als de tests. Een pipeline zonder goede tests zet fouten net zo snel live als verbeteringen.
- Onderhoud. De pipeline zelf moet worden bijgehouden, net als de applicatie.
- Beveiliging. Red Hat noemt risico’s zoals gelekte wachtwoorden en sleutels, onveilige externe componenten en ongeautoriseerde toegang tot de code of buildtools. Het begrip DevSecOps staat voor het inbouwen van beveiliging in elke stap.
- Databasewijzigingen. Een nieuwe versie van de code is makkelijk terug te draaien, een wijziging in de database vaak niet. Die vraagt extra zorg.
CI/CD en DevOps
CI/CD is een belangrijk onderdeel van DevOps, de werkwijze waarin ontwikkeling en beheer nauw samenwerken. Waar DevOps over cultuur en samenwerking gaat, is CI/CD de technische ruggengraat: de automatisering die ervoor zorgt dat code betrouwbaar van de ontwikkelaar naar de gebruiker gaat. Red Hat noemt dat CI/CD-processen vaak worden ondersteund door DevOps- of SRE-teams.
Wat betekent CI/CD voor een opdrachtgever?
Je hoeft als opdrachtgever geen pipeline te kunnen bouwen, maar het is goed om te weten wat je kunt vragen. Hoe komt een wijziging bij gebruikers terecht? Wordt er automatisch getest voor livegang? Is er een testomgeving waar je een nieuwe versie eerst kunt bekijken? En hoe snel kan een versie worden teruggedraaid als er toch iets misgaat? De antwoorden zeggen veel over hoe betrouwbaar onderhoud en doorontwikkeling straks verlopen.
Wat betekent dit voor jouw project?
Na de eerste versie begint de fase van beheer en verbetering. Dan is de vraag welke verbetering nu prioriteit heeft, en hoe die veilig bij gebruikers komt. In een voorstel beschrijf ik daarom ook beheer, eigenaarschap, toegang en wijzigingsafspraken, en wie na oplevering verantwoordelijk is voor onderhoud en wijzigingen.
Ik vind het belangrijk dat die afspraken passen bij de omvang van het project. Een kleine interne tool vraagt een andere aanpak dan een applicatie waar klanten dagelijks op inloggen. Wat ik wel altijd belangrijk vind: een wijziging moet controleerbaar zijn voordat gebruikers ermee werken.
Vraag? Wil je een applicatie laten bouwen die na oplevering betrouwbaar kan doorgroeien? Stuur me voor wie het is, wat er nu gebeurt en wat de eerste versie moet oplossen. Dan bepalen we samen de logische eerste stap. Lees meer over een webapplicatie bouwen.
Veelgestelde vragen over CI/CD
Wat betekent CI/CD?
CI/CD staat voor continuous integration en continuous delivery of continuous deployment. Het is een werkwijze waarbij codewijzigingen automatisch worden samengevoegd, gebouwd, getest en klaargezet of uitgerold naar gebruikers.
Wat is het verschil tussen continuous delivery en continuous deployment?
Bij continuous delivery wordt geteste code automatisch klaargezet voor productie, maar geeft iemand nog handmatig akkoord voor de livegang. Bij continuous deployment gaat elke wijziging die alle automatische tests doorstaat zonder menselijke tussenkomst live.
Wat is continuous integration?
Continuous integration is de werkwijze waarbij ontwikkelaars hun codewijzigingen vaak, minstens dagelijks, samenvoegen in een gedeelde codebase. Elke wijziging start een automatische build en tests, zodat fouten direct worden gevonden.
Verwante termen
DevOps · Git versiebeheer · Unit test · Software testen · Doorontwikkeling en onderhoud · Cloud hosting · Technische schuld
← Terug naar de kennisbank