WSL

WSL -8-🚀 CI/CD

🎯 Syfte

Automatisera testning och byggsteg i din utvecklingsprocess genom GitHub Actions. Du lär dig skapa ett arbetsflöde som kör när du pushar kod, t.ex. för att testa eller bygga en Docker-image.


🤔 Vad är CI/CD?

Term Förklaring
CI – Continuous Integration Varje gång du pushar kod körs tester och kontroller automatiskt
CD – Continuous Delivery/Deployment Din kod byggs och kan distribueras vidare (t.ex. till Docker Hub eller en server)

🧰 Vad är GitHub Actions?

GitHub Actions låter dig köra kod direkt i GitHub – t.ex. testa, bygga och publicera när något sker (t.ex. push eller pull_request).

Arbetsflöden (workflows) definieras i YAML-filer under .github/workflows/.


⚙️ Skapa ett CI-arbetsflöde

  1. Gå till din projektmapp (t.ex. Node.js/Docker-projekt).

  2. Skapa en mapp:

    mkdir -p .github/workflows
  3. Skapa filen ci.yml:

# .github/workflows/ci.yml
name: Testa och bygg Node.js-app

on:
  push:
    branches: [ "main" ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Klona repot
      uses: actions/checkout@v3

    - name: Installera Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '18'

    - name: Installera beroenden
      run: npm install

    - name: Kör tester
      run: npm test

    - name: Bygg Docker-image
      run: docker build -t node-docker-app .

Tips: Lägg till ett enkelt test i package.json med "test": "echo \"OK\"" om du inte har riktiga tester.


🔐 Publicera till Docker Hub (valfritt)

För att automatiskt pusha Docker-images behöver du:

  1. Skapa Docker Hub-användare och repo.

1.5 Gå in på Github->Settings->Secret and Variables->Secrets

  1. Skapa två Repository secrets GitHub Secrets:

    • DOCKER_USERNAME
    • DOCKER_PASSWORD
  2. Lägg till steg i workflow:

    - name: Logga in i Docker Hub
      run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin

    - name: Pusha image
      run: |
        docker tag node-docker-app ${{ secrets.DOCKER_USERNAME }}/node-docker-app:latest
        docker push ${{ secrets.DOCKER_USERNAME }}/node-docker-app:latest

📈 Se resultat i GitHub

  1. Committa och pusha .github/workflows/ci.yml till main:
git add .
git commit -m "Lägg till CI-workflow"
git push origin main
  1. Gå till ditt repo på GitHub → fliken Actions.
  2. Se hur din pipeline körs steg för steg.

🧪 Övning – Bygg din första pipeline

  1. Lägg till .github/workflows/ci.yml i ditt Docker-projekt.
  2. Lägg till ett testskript i package.json.
  3. Pusha och kontrollera att GitHub kör test och bygge.
  4. (Bonus) Lägg till Docker Hub-steg och pusha din image automatiskt.

🏁 Klar med Modul 8 – Automatiserad CI/CD

Du har nu ett arbetsflöde där kod:

  • testas och byggs vid varje push
  • kan publiceras som Docker-image automatiskt
  • ger snabb feedback direkt i GitHub

💡 Nästa steg?

  • Lägg till lint, formatter, code coverage i CI
  • Deployment till molnet (Azure, Render, Railway, Fly.io)
  • Arbeta med docker-compose och flera tjänster i CI