CI CD - LucasReynaert/It-Landscape GitHub Wiki

1. Inleiding

CI/CD (Continuous Integration en Continuous Deployment) is een nieuwe methode voor het schrijven → testen → releasen van code. Elke update van de code wordt automatisch getest en geïntegreerd met de main branch. CI is een pipeline waarbij je regelmatig pusht, automatisch buildt en automatisch tests runt. CD zorgt dan weer dat de geteste code uitrolt naar een test- of releasebranch. Dit kan met of zonder manuele goedkeuring.

De voordelen van deze methode zijn:

  • Snelle ontwikkeling
  • Minder manueel werk
  • Hogere kwaliteit
  • Makkelijker samenwerken

2. Het opzetten van de pipeline

Basis image opzetten : docker run -d -p 127.0.0.1:3000:3000 getting-started https://docs.github.com/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images#publishing-images-to-github-packages

Nu dat gebeurd is kunnen we beginnen met deze image in de repository te zetten die gebruik maakt van de CI/CD pipeline van github.

De eerste stap is om deze code in onze repository te zetten. Dus navigeer naar de map waar de image staat en zet deze in de repository.

Navigeer nu naar github actions en selecteer "Docker Image".

image

Nu druk je op configure krijg je deze template te zien.

image

Druk op save en dan loopt deze action. image

En nu dat je pushed of gepulled wordt loopt deze test automatisch. image

Hieronder heb ik mijn yml file aangepast zodat de frontend getest word:

name: CI Pipeline #Deze workflow draait bij elke push of pull request naar de main branch on: push: branches: ["main"] pull_request: branches: ["main"] jobs: build: runs-on: ubuntu-latest #Draait op een Ubuntu VM

steps:
  #haal de code uit de repository
  - name: Checkout code
    uses: actions/checkout@v4

  - name: Setup Node.js voor frontend
    uses: actions/setup-node@v4
    with:
      node-version: "20"

  - name: Installeer frontend dependencies
    working-directory: client
    run: npm install

  - name: Build frontend
    working-directory: client
    run: npm run build

   - name: Build the Docker image
     run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)
⚠️ **GitHub.com Fallback** ⚠️