Pipeline no GitLab CI/CD

Exemplo de .gitlab-ci.yml para automatizar o build do Quartz, validar o Next.js e publicar o vault no GitLab Pages.

Conceitos Relacionados

image: node:20
 
cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - node_modules/
 
stages:
  - test
  - build
  - pages
 
variables:
  NEXT_TELEMETRY_DISABLED: "1"
  NODE_ENV: production
 
before_script:
  - npm ci
 
lint:
  stage: test
  script:
    - npm run lint
 
build-app:
  stage: build
  script:
    - ./scripts/update-vault.sh     # gera obsidian-site/public e copia para public/vault
    - npm run build                 # garante que o Next.js compila
  artifacts:
    paths:
      - public/vault
      - .next
    expire_in: 1 week
 
pages:
  stage: pages
  script:
    - ./scripts/update-vault.sh     # garante conteúdo atualizado
    - mv public/vault public        # GitLab Pages lê a pasta public
  artifacts:
    paths:
      - public
  only:
    - main

Notas Importantes

  • Ajuste os comandos se usar Windows runner (./scripts/update-vault.ps1).
  • O job pages publica apenas o vault estático; o app Next.js completo costuma ir para Vercel/Netlify/servidor próprio.
  • Se quiser testes adicionais (npm test), adicione outro job na stage test.
  • Mantenha o script update-vault idempotente para rodar no CI sem interação.

Como Funciona a API do Grafo

Durante o stage build, a API do Grafo é executada automaticamente:

  1. O VaultService escaneia todos os arquivos .md em obsidian-site/content/
  2. Extrai wikilinks [[nome-do-arquivo]] para criar conexões
  3. Gera um JSON com nodes e links
  4. Salva em cache por 5 minutos (otimização)

Veja mais detalhes em api-grafo.

Referências de CI/CD