Handleiding voor een CI/CD-pipeline met een voorbeeld
โก Slimme samenvatting
Een CI/CD-pipeline is het geautomatiseerde traject dat een codewijziging van een commit naar productie brengt. Het bouwt, test en implementeert software in vier fasen: broncode, build, test en implementatie. Dit vermindert handmatige fouten en verkort de cyclus tussen ontwikkelaars en eindgebruikers.

Wat is een CI/CD-pijplijn?
A CI/CD-pijplijn Het automatiseert het traject dat een codewijziging aflegt, van de commit van een ontwikkelaar tot de implementatie van een release. Het compileert de code, voert de testsuite uit en promoot de binaire code veilig naar een of meer omgevingen. Een goed ontworpen pipeline vermindert handmatige fouten, geeft ontwikkelaars snel feedback en maakt kleine, frequente productiteraties mogelijk.
De pipeline verbindt automatisering en continue monitoring over de gehele softwarelevenscyclus โ van integratie en testen tot levering en implementatie. De gekoppelde werkwijzen worden gezamenlijk een CI/CD-pipeline genoemd.
Wat is continue integratie, continue levering en continue implementatie?
- Continue integratie (CI): Een ontwikkelmethode waarbij teamleden hun werk minstens รฉรฉn keer per dag integreren. Elke integratie wordt geverifieerd door een geautomatiseerde build- en testrun die fouten snel aan het licht brengt.
- Continue levering (CD): Een engineeringpraktijk waarbij het team het product aan het einde van elke iteratie gereed houdt voor release. De implementatie in productie verloopt doorgaans via handmatige goedkeuring.
- Continue implementatie (CD): Het tilt Continuous Delivery naar een hoger niveau: elke wijziging die de geautomatiseerde controles doorstaat, wordt automatisch in productie genomen, zonder menselijke tussenkomst.
Fasen van een CI/CD-pipeline
Een CI/CD-pipeline is een uitvoerbare specificatie van de stappen die nodig zijn om een โโnieuwe versie van de software uit te brengen. Een fout in een van deze stappen activeert een melding, bijvoorbeeld via e-mail. Slackof een ander kanaal, zodat de verantwoordelijke technicus onmiddellijk op de hoogte wordt gebracht.
Fasen van een CI/CD-pipeline.
Bronstadium
De pipeline wordt geactiveerd door een wijziging in de code repository. Elke commit geeft de CI/CD-tool een melding om de bijbehorende pipeline uit te voeren. Andere veelvoorkomende triggers zijn door de gebruiker geรฏnitieerde workflows, geplande uitvoeringen en de resultaten van upstream pipelines.
Bouwfase
De buildfase compileert de broncode en lost de afhankelijkheden ervan op tot een uitvoerbaar artefact. Gecompileerde talen zoals C++, JavaC en Go moeten hier binaire bestanden produceren. Geรฏnterpreteerde talen zoals JavaScript, PythonEn Ruby profiteert nog steeds van deze fase om afhankelijkheden te bundelen, te controleren op fouten (linting) en containerimages te produceren.
Een fout in de bouwfase duidt meestal op een fundamentele configuratiefout in het project, dus het probleem moet onmiddellijk worden aangepakt.
Testfase
De testfase voert de geautomatiseerde testsuite uit om de correctheid van de code en het gedrag van de software te valideren. Het spoort gemakkelijk reproduceerbare bugs op voordat ze de klanten bereiken. Het schrijven en onderhouden van de tests is de verantwoordelijkheid van de ontwikkelaar; de pipeline zorgt er alleen voor dat ze worden uitgevoerd.
Fase implementeren
De implementatiefase verplaatst het geverifieerde artefact naar een doelomgeving, zoals staging, UAT of productie. Zodra de build alle vereiste tests heeft doorstaan, kan de implementatie automatisch worden gestart (continue implementatie) of na een handmatige controle (continue levering).
Voorbeeld van een CI/CD-pipeline
De onderstaande stappen tonen een concrete pipeline die gebruikmaakt van GitHub. CircleCIen AWS.
- Bron Code Controle: De applicatiecode wordt in een privรฉ GitHub-repository geplaatst, zodat deze kan worden geรฏntegreerd met de build-, scan- en deploy-services.
- Continue integratie: verbinden CircleCI naar de repository, zodat elke push de nieuwe code ophaalt, compileert en de testsuite uitvoert.
- Implementeer naar UAT: configureer CircleCI Succesvolle builds implementeren in een AWS UAT-omgeving voor testen door belanghebbenden.
- Implementeer naar productie: Gebruik dezelfde CI/CD-stappen opnieuw om het artefact naar productie te brengen, met handmatige goedkeuring als je Continuous Delivery toepast.
Aanbevolen werkwijzen voor CI/CD-pijplijnen
De onderstaande werkwijzen zorgen ervoor dat pipelines snel, betrouwbaar en door het team vertrouwd blijven:
- Documenteer het huidige leveringsproces voordat u het automatiseert, zodat u weet wat u moet behouden, wijzigen of verwijderen.
- Begin met een kleinschalig proefproject in plaats van de hele pipeline in รฉรฉn keer te automatiseren.
- Structureer de pipeline in meerdere fasen, zodat de fundamentele controles snel als eerste worden uitgevoerd.
- Start elke workflow vanuit een schone, geรฏsoleerde omgeving om ervoor te zorgen dat builds reproduceerbaar blijven.
- Voeg open-source tools toe die alles omvatten, van codestijl tot beveiligingsscans.
- Gebruik een codekwaliteitsplatform dat dezelfde tests uitvoert op elke branch.
- Beoordeel elk pull-verzoek onderling en beschouw de output van de pipeline als onderdeel van de beoordeling.
- Definieer succesindicatoren voordat u met de transitie begint; ze stimuleren continue verbetering.
Voordelen van CI/CD-pipelines
Een volwaardige CI/CD-pipeline levert diverse meetbare voordelen op:
- Vervangt foutgevoelige handmatige builds en releases door betrouwbare automatisering.
- Verbetert de consistentie en kwaliteit van elk verzonden product.
- Verhoogt de flexibiliteit: nieuwe functionaliteit kan op aanvraag worden geleverd.
- Stroomlijnt de communicatie tussen ontwikkelaars, QA-medewerkers en de operationele afdeling.
- Versnelt de feedbackloops van klanten door frequente releases.
- Verhoogt de productzichtbaarheid via dashboards, logboeken en meldingen.
- Elimineert handmatige fouten en verlaagt de releasekosten.
- Verkort de softwareontwikkelingscyclus.
- Biedt een snelle feedbacklus van ontwikkelaar naar eindgebruiker.
- Markeer wijzigingen die de build onbruikbaar maken, zodat ze snel teruggedraaid kunnen worden.
- Combineert geautomatiseerde tests met lichte handmatige verkennende tests om de kwaliteit hoog te houden.
Belangrijke CI/CD-tools
Moderne teams kunnen kiezen uit een breed scala aan CI/CD-tools. De meest gebruikte tools worden hieronder beschreven.
1) Jenkins
Jenkins is een open-source Continuous Integration-server die build-, test- en release-workflows automatiseert. Geschreven in Java en ondersteund door een groot ecosysteem van plugins, Jenkins levert stroom aan honderdduizenden installaties wereldwijd.
Kenmerken:
- Bouwt en test code meerdere keren per dag.
- Automatiseert de volledige build-/testpipeline, waardoor tijd wordt bespaard en het aantal fouten wordt verminderd.
- Implementeert code na elke succesvolle build en test.
- Versnelt de ontwikkelingscyclus door snelle feedback.
Link: https://www.jenkins.io/download/
2) Bamboo
Bamboo is een buildserver voor continue integratie die automatische builds, tests en releases bundelt in รฉรฉn tool. Het integreert naadloos met Jira Software en Bitbucket.
Kenmerken:
- Voert parallelle batchtests uit.
- Snel te installeren en configureren.
- Per-omgevingsmachtigingen stellen ontwikkelaars en QA-medewerkers in staat om in hun eigen omgevingen te implementeren.
- Ingebouwde Git-branchworkflows die branches automatisch samenvoegen.
Link: https://www.atlassian.com/software/bamboo
3) CircleCI
CircleCI is een flexibele CI-tool die builds uitvoert voor platformoverschrijdende mobiele apps. Python API's, Docker-clusters en meer. Het vermindert bugs en verbetert de applicatiekwaliteit door snelle feedback.
Kenmerken:
- Keuze van ontwikkelomgevingen.
- Ondersteunt vele talen, waaronder C++, JavaScript, .NET, PHP, Python, en Ruby.
- Docker-ondersteuning voor aangepaste build-images.
- Annuleert automatisch lopende of in de wachtrij staande builds wanneer een nieuwere build wordt gestart.
Link: https://circleci.com/
4) GitHub Actions, GitLab CI en Argo CD
GitHub Actions en GitLab CI integreren CI/CD rechtstreeks in het versiebeheersysteem, waardoor een externe buildserver overbodig wordt. Argo CD voegt daar continue implementatie in GitOps-stijl aan toe voor Kubernetes-clusters, waarbij het cluster wordt afgestemd op de gewenste status die in Git is gedefinieerd.
Waarom is de CI/CD-pijplijn belangrijk voor IT-leiders?
- Verbetert de betrouwbaarheid en voorspelbaarheid van releases.
- Maakt de technische organisatie beter geschikt voortractive voor ontwikkelaars.
- Haalt code uit versiebeheer en voert de build met รฉรฉn klik uit.
- Verplaatst binaire bestanden veilig naar de doelomgeving.
- Hiermee kunnen projectleiders omgevingsvariabelen en configuratie per omgeving beheren.
- Publiceert applicatiecomponenten naar web, database, API en andere services.
- Het systeem registreert gegevens en waarschuwingen over de status van elke release.
- Controleert codewijzigingen voordat ze worden doorgevoerd, waardoor het aantal fouten in de productieomgeving wordt verminderd.
CI/CD-pipeline KPI's
- Cyclus- of implementatietijd: De tijd die nodig is om van de bouwfase naar de productiefase te gaan. Trends onthullen knelpunten in uw leveringsproces.
- Implementatiefrequentie: Hoe vaak je releases uitbrengt. Vaker en in kleinere stappen verklein je het risico en zijn fouten makkelijker te verhelpen.
- Doorlooptijd wijzigen: De tijd die verstrijkt tussen de start van de ontwikkeling en een succesvolle implementatie. Dit geeft aan hoe goed de planning, de codering en de oplevering op elkaar zijn afgestemd.
- Mislukkingspercentage wijzigen: Het percentage implementaties dat incidenten veroorzaakt of teruggedraaid moet worden. Tracks de veiligheid van de pijpleiding.
- MTTR (gemiddelde hersteltijd): De gemiddelde tijd die nodig is om de dienstverlening na een storing te herstellen. Meet de veerkracht.
- MTTF (gemiddelde tijd tot falen): de gemiddelde tijd tussen storingen. Tracbetrouwbaarheid op lange termijn.




