Kennisbank.

Wat is CI/CD? Continuous Integration en Continuous Delivery verder uitgelegd.

Continuous Integration (CI) en Continuous Delivery (CD) is de benaming voor een manier van werken binnen software teams, waarbij de afhandeling van codewijzigingen wordt gedaan door een aantal geautomatiseerde stappen. Denk hierbij aan het automatisch testen van de code en het doorzetten van de wijzigingen naar de productieomgeving. Deze reeks aan geautomatiseerde stappen wordt ook wel een CI/CD pipeline genoemd. De CI/CD pipeline zorgt ervoor dat ontwikkelteams wijzigingen in de code vaker en betrouwbaarder (dus minder fouten) door kunnen voeren.

Wat is CI/CD? Continuous Integration en Continuous Delivery verder uitgelegd.

In detail wat is CI/CD?

Continuous Integration

Continuous Integration is een concept dat ervoor zorgt dat ontwikkelaars zich kunnen focussen op het belangrijke werk, namelijk het schrijven van nieuwe kwalitatieve code en zich niet druk hoeven te maken over het integreren van de code in de bestaande systemen.

Het doel van CI is om een duidelijke en geautomatiseerde manier te creëren voor het ontwikkelen, bouwen en testen van applicaties. Binnen grotere organisaties zijn er verschillende teams van verschillende expertises die allemaal werken aan dezelfde applicatie. Met een duidelijk integratieproces is de kans groter dat teams codewijzigingen vaker doorvoeren, wat resulteert in een betere samenwerking tussen verschillende teams en softwarekwaliteit.

Continuous delivery

Continuous delivery begint waar Continuous Integration stopt. CD vereenvoudigt het proces om de nieuwe codewijzigingen op verschillende omgevingen te krijgen. Dit kan bijvoorbeeld een productieserver zijn. De meeste teams hebben te maken met veel andere omgevingen dan productie, zoals acceptatie- en testomgevingen die elk weer een eigen configuratie hebben. CD zorgt ervoor dat er een geautomatiseerde manier is om codewijzigingen door te voeren naar deze verschillende omgevingen.

CI/CD tools kunnen helpen bij het beheren en bewaren van deze omgeving specifieke configuraties. De CI/CD pipeline voert vervolgens de eigen definitie de vereiste commando’s uit op de webservers, databases en andere systemen die betrokken zijn bij de applicatie. Eventueel worden een aantal systemen opnieuw opgestart als dit nodig is bij een nieuwe implementatie van codewijzigingen.

Hoe zit het met Continuous Deployment?

CD in CI/CD wordt ook wel eens Continuous Deployment genoemd. Het verschil tussen Continuous Delivery en Deployment is het moment waar de pipeline ophoudt. Bij delivery wordt na de CI stappen de applicatie klaargemaakt en verpakt zodat deze doorgezet kan worden naar de verschillende omgevingen. Dit doorzetten wordt dan vaak gedaan door een systeembeheerder. Handmatig of met zijn eigen set aan tools. Bij Continuous Deployment wordt ook het doorzetten naar de verschillende omgevingen volledig geautomatiseerd.

Verschillende aanbieders van CI/CD pipelines

Welke tools zijn beschikbaar?

Gitlab

Gitlab is een online all-in-one DevOps platform. Bij Elastic Web maken we zelf gebruik van Gitlab. Dit doen wij omdat Gitlab naast de CI/CD pipelines meerdere functionaliteiten aanbiedt die we gebruiken in onze dagelijkse werkzaamheden. Zo worden alle code repositories beheert binnen Gitlab en biedt Gitlab de mogelijkheid om de development sprints te faciliteren. Leuk feitje, Gitlab is opgericht door de Nederlander Sid Sijbrandij.

Jenkins

Jenkins is momenteel de marktleider voor open-source automation servers. Jenkins wordt veel gebruikt om Continuous Integration en Continuous Delivery te faciliteren binnen software projecten ontwikkeld met behulp van Java. Een cloudbased alternatief voor Jenkins bestaat in de vorm van CircleCI.

AWS CodeBuild

Amazon heeft voor bijna elk onderdeel van software development een dienst die ze aanbieden. Zo ook voor Continuous Integration en Continuous Delivery. Ze hebben een aantal vooraf ingestelde CI/CD pipelines waardoor je direct aan de slag kunt met jouw project. Past het niet? Geen probleem je kunt uiteindelijk volledig je eigen pipeline instellen.

Azure DevOps

Sinds een aantal jaren is Microsoft zich meer gaan mengen in de wereld van software development. Dit zijn ze onder andere gaan doen met het gehele Azure platform wat, net als Amazon, uiteindelijk alle tools moet bieden aan software teams om hun werkzaamheden uit te voeren. Een onderdeel daarvan is DevOps wat het inrichten van een CI/CD pipeline faciliteert.