# Usa un'immagine Node.js per tutti i job
image: node:lts-slim

# Definisci le fasi della pipeline
stages:
  - build
  - deploy

# Memorizza nella cache node_modules per velocizzare le build successive
cache:
  key:
    files:
      - yarn.lock
  paths:
    - node_modules/

# Job per installare le dipendenze e costruire il sito
build_site:
  stage: build
  script:
    # Se usi npm, cambia i comandi in "npm install" e "npm run build"
    - yarn install
    - yarn build
  artifacts:
    paths:
      # Docusaurus crea il sito nella cartella "build"
      - build/

# Job per pubblicare il sito su GitLab Pages
pages:
  stage: deploy
  # Questa riga è FONDAMENTALE: dice a GitLab di usare
  # SOLO i runner che hanno il tag "docusaurus".
  tags:
    - docusaurus
  script:
    # Pulisci la cartella public (potrebbe contenere vecchi file)
    - rm -rf public
    # Sposta i file costruiti dal job precedente nella cartella public
    - mv build public
  artifacts:
    paths:
      # Questo è il contenuto che GitLab Pages pubblicherà
      - public
  rules:
    # Esegui questo job solo sui commit nel branch principale
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
