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