CI/CD staat voor continuous integration en continuous delivery (of continuous deployment): een werkwijze waarbij elke codewijziging automatisch wordt gebouwd, getest en klaargezet voor livegang, of zelfs direct live gaat. In plaats van grote, risicovolle releases om de paar maanden leveren teams vaak kleine wijzigingen op, veilig en voorspelbaar. De geautomatiseerde reeks stappen heet een CI/CD-pijplijn (pipeline).
CI, CD en CD
- Continuous integration (CI): ontwikkelaars voegen hun wijzigingen vaak samen in de hoofdbranch, minstens dagelijks. Elke wijziging start automatisch een build en de tests, zodat integratieproblemen binnen minuten zichtbaar worden in plaats van aan het eind van een project.
- Continuous delivery: elke wijziging die de pijplijn doorstaat, levert een versie op die klaar is voor livegang. Naar productie gaan is één klik of goedkeuring.
- Continuous deployment: een stap verder: elke wijziging die alle controles doorstaat, gaat automatisch naar productie, zonder handmatige tussenkomst.
Hoe ziet een CI/CD-pijplijn eruit?
- Start: een push of pull request in Git start de pijplijn.
- Build: de code wordt gecompileerd en afhankelijkheden worden geïnstalleerd, vaak in een Docker-image.
- Test: unittests, integratietests en waar zinvol end-to-endtests.
- Kwaliteits- en beveiligingscontroles: linting, statische analyse, en scans van afhankelijkheden en containers.
- Uitrol naar test of acceptatie: de build gaat naar een omgeving die op productie lijkt.
- Uitrol naar productie: automatisch of na goedkeuring, vaak geleidelijk (canary of blue-green) met automatisch terugdraaien bij fouten.
Waarom CI/CD?
Kleine, frequente wijzigingen zijn makkelijker te testen, te reviewen en terug te draaien dan grote releases. Fouten worden eerder gevonden, wanneer ze nog goedkoper zijn om op te lossen. Releases zijn geen spannende momenten meer die afhangen van de kennis van één persoon, omdat elke stap in de pijplijn is vastgelegd. En omdat dezelfde pijplijn ook infrastructuurwijzigingen uitrolt met tools zoals Terraform, wordt het hele platform reproduceerbaar.
Tools voor CI/CD
Populaire tools zijn GitHub Actions, GitLab CI/CD, Azure DevOps Pipelines, Bitbucket Pipelines en Jenkins. Voor uitrol naar Kubernetes zijn GitOps-tools zoals Argo CD en Flux gebruikelijk. De tool is minder belangrijk dan de discipline: snelle pijplijnen, betrouwbare tests, en een hoofdbranch die altijd klaar is voor livegang. Zie onze CI/CD diensten en wat is DevOps.
Veelgestelde vragen over CI/CD
Waar staat CI/CD voor?
Continuous integration en continuous delivery, of continuous deployment. CI gaat over het automatisch bouwen en testen van elke wijziging; CD over het klaarzetten voor of uitvoeren van de livegang.
Wat is het verschil tussen continuous delivery en continuous deployment?
Bij continuous delivery is elke wijziging klaar voor livegang, maar beslist een mens wanneer die live gaat. Bij continuous deployment gaat elke wijziging die de pijplijn doorstaat automatisch live.
Hebben kleine teams CI/CD nodig?
Ja, misschien zelfs nog meer. Een eenvoudige pijplijn die elke wijziging bouwt, test en uitrolt, bespaart een klein team veel handwerk en voorkomt fouten waar niemand tijd voor heeft om ze uit te zoeken.
Hoe snel moet een CI/CD-pijplijn zijn?
Zo snel mogelijk: idealiter enkele minuten voor de build en de belangrijkste tests, zodat ontwikkelaars feedback krijgen terwijl ze nog met de wijziging bezig zijn.