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
- O que é CI-CD - Fundamentos de CI/CD
- Jobs - Os Blocos da Pipeline - Como definir jobs
- Stages - Organização de stages
- api-grafo - API que processa o vault durante o build
- Gitlab - O que é - Entenda a plataforma GitLab
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:
- mainNotas Importantes
- Ajuste os comandos se usar Windows runner (
./scripts/update-vault.ps1). - O job
pagespublica 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 stagetest. - Mantenha o script
update-vaultidempotente para rodar no CI sem interação.
Como Funciona a API do Grafo
Durante o stage build, a API do Grafo é executada automaticamente:
- O
VaultServiceescaneia todos os arquivos.mdemobsidian-site/content/ - Extrai wikilinks
[[nome-do-arquivo]]para criar conexões - Gera um JSON com nodes e links
- Salva em cache por 5 minutos (otimização)
Veja mais detalhes em api-grafo.
Referências de CI/CD
- Dependências - Gerenciamento de dependências no pipeline
- Entendendo a Arquitetura do Gitlab - Arquitetura do GitLab Runner
- Configuração de branch - Configuração de branches protegidos