4. CI CD - Roxane90/IT-Landscape GitHub Wiki

4.1 Inleiding tot CI/CD

4.1.1 Wat is CI/CD?

CI/CD is een verzamelterm voor een reeks praktijken en tools die het softwareontwikkelingsproces automatiseren en versnellen. Het is een essentieel onderdeel van DevOps, dat samenwerking tussen ontwikkelaars (development) en systeembeheerders (operations) stimuleert.

CI/CD staat voor:

  • Continuous Integration (CI) โ€“ continue integratie
  • Continuous Delivery / Deployment (CD) โ€“ continue levering of uitrol

Door deze technieken toe te passen, worden kleine en frequente wijzigingen in de code sneller en betrouwbaarder naar productie gebracht.

image Bron: https://www.civo.com/blog/the-role-of-the-ci-cd-pipeline-in-cloud-computing, geraadpleegd op 01/06/2025 .

4.1.2 Waarop is CI/CD een antwoord?

In klassieke softwareprojecten kwamen ontwikkelteams vaak dezelfde problemen tegen:

  • Code werkte op de computer van de ontwikkelaar, maar niet op de server.
  • Handmatige deploys leidden tot fouten.
  • Bugs werden laat ontdekt, soms pas tijdens productie.
  • Verschillende developers werkten op verschillende versies van de code.
  • Releases waren stressvolle momenten.

CI/CD is ontwikkeld om deze problemen structureel op te lossen.

4.1.3 Hoe werkt CI/CD?

Continuous Integration (CI)

Wanneer een ontwikkelaar nieuwe code pusht naar de centrale codebase (bijvoorbeeld op GitHub):

  • Wordt de code automatisch gevalideerd en getest

  • Wordt de applicatie opnieuw gebouwd (build)

  • Ontwikkelaars krijgen onmiddellijk feedback bij fouten

Deze stap detecteert problemen vroeg, nog vรณรณr de code in productie terechtkomt.

Continuous Delivery / Deployment (CD)

Wanneer de CI-pijplijn succesvol is, wordt de code:

  • Delivery: automatisch voorbereid voor release (bijvoorbeeld als Docker image of artefact)

  • Deployment: automatisch uitgerold naar een staging- of productieomgeving

Dit maakt het mogelijk om tientallen keren per dag te releasen โ€“ zonder manuele tussenkomst.

4.1.4 Waarom is CI/CD belangrijk?

  • Geautomatiseerde en veilige deploys
  • Snelle feedback bij elke wijziging
  • Samenwerken is eenvoudiger en betrouwbaarder
  • Problemen worden vroeg opgemerkt
  • Releases zijn routine en vaak automatisch

CI/CD zorgt voor betrouwbaardere software en een soepelere workflow. Dit is essentieel voor moderne softwareteams.


4.2 Gebruik van CI/CD

4.2.1 Opzetten een CI/CD pipeline naar deze repository

Stap 1: maak de mappen en bestanden aan

Open een terminal, maak de map aan, ga in die map staan en open Visual Studio Code met mkdir itl-app cd itl-app code .

image

Maak hierin drie bestanden aan:

  • package.json
  • server.js
  • Dockerfile

image

Stap 2: zet het project op GitHub

  • Log je in op github.com en maak een nieuwe repository aan, bijvoorbeeld 'IT-Landscape'.
  • Initialiseer git in de terminal met de volgende code (aangepast aan jouw gebruikersnaam en repositorynaam: git init git remote add origin https://github.com/Roxane90/IT-Landscape.git git add . git commit -m "Eerste commit" git push -u origin master

image

Stap 3: Voeg GitHub Action toe

GitHub Actions gaat in je repository zoeken naar een specifieke folderstructuur: .your-project/ โ”œโ”€โ”€ .github/ โ”‚ โ””โ”€โ”€ workflows/ โ”‚ โ””โ”€โ”€ docker-publish.yml

De volgende stap is om deze structuur lokaal toe te voegen, in de terminal of bijvoorbeeld in Visual Studio Code. Wanneer je hierna wijzigingen pusht naar GitHub, weet GitHub dat het een workflow moet uitvoeren.

  • Maak de map aan met 'mkdir -p .github/workflows'

image

  • Maak in die map een bestand aan en voeg hier de correcte YAML-inhoud aan toe.

image

Dus, elke keer dat je iets pusht naar de master branch, gaat GitHub automatisch deze actie (docker-publish.yml) uitvoeren

Stap 4: alles committen en pushen

Met de volgende code in de terminal:

git add .github/workflows/docker-publish.yml git commit -m "GitHub Action toegevoegd voor CI/CD" git push

image

Stap 5: Controleer op GitHub in het tabblad 'Actions' of de action werd uitgevoerd

image

Tip: pas je repository instellingen aan onder Settings - Actions - General - Workflow permissions en zorg dat Read and write permissions aanstaat.

image