004-deploy-strategy¶
| Metadado | Valor |
|---|---|
| Status | |
| Data | 06-01-2026 |
| Decisores | JGustavoCN |
| Contexto | DevOps & CI/CD |
Resumo Executivo
Adoção de uma estratégia de Deploy Manual Controlado (via Makefile) para o GitHub Pages, em detrimento de uma automação total de CI/CD nesta fase. O objetivo é garantir que apenas versões estáveis e revisadas da documentação sejam publicadas, evitando a exposição de rascunhos ("Gatekeeper Strategy").
1. Contexto e Problema¶
O ciclo de vida da documentação do DataProfiler envolve edições frequentes, rascunhos de novas funcionalidades e seções incompletas ("Work in Progress").
A implementação de uma automação tradicional de CI/CD (ex: Deploy on Push na branch main) traria os seguintes riscos para este estágio inicial:
- Exposição de Rascunhos: Publicação imediata de conteúdo incompleto ou não revisado.
- Poluição do Histórico: Múltiplos deploys quebrados ou parciais no ambiente de produção (GitHub Pages).
- Falta de Validação Local: Risco de publicar erros de formatação (Markdown/Mermaid) que não foram testados localmente pelo desenvolvedor.
2. Drivers da Decisão (Requisitos)¶
- Controle de Qualidade: O deploy só deve ocorrer após validação explícita do desenvolvedor.
- Simplicidade de Operação: O processo de publicação deve ser executado com um único comando, sem configurações complexas de pipeline.
- Segurança: Evitar a publicação acidental de informações sensíveis ou funcionalidades não lançadas.
- Independência de Infra: O processo deve funcionar sem depender de "runners" externos de CI/CD configurados.
3. Opções Consideradas¶
Opção A: CI/CD Automatizado (GitHub Actions)¶
Configuração de um workflow .yaml que dispara o build e deploy a cada push na branch main.
Prós
- Zero Toque: Publicação contínua sem intervenção humana.
- Padrão de Mercado: Prática comum em projetos maduros.
Contras
- Risco de "Quebra em Produção": Se o commit tiver um erro de sintaxe, o site quebra publicamente.
- Overhead de Configuração: Necessidade de gerenciar segredos e tokens no GitHub Actions.
Opção B: Deploy Manual Controlado (Gatekeeper) - ESCOLHIDA¶
Uso de scripts locais (Makefile) para compilar e publicar a documentação sob demanda.
Prós
- Gatekeeper Humano: O desenvolvedor valida o site localmente (
make docs) antes de decidir publicar. - Atomicidade: Garante que a versão publicada é exatamente a que foi testada na máquina do desenvolvedor.
- Simplicidade: Implementação via comando simples do
mkdocsencapsulado.
Contras
- Fator Humano: O desenvolvedor pode esquecer de publicar após uma atualização importante.
4. Decisão¶
Foi selecionada a Opção B (Deploy Manual Controlado).
Justificativa Técnica¶
Nesta fase de estruturação massiva de conteúdo (550 páginas), a prioridade é a qualidade e integridade da informação publicada. A estratégia de Gatekeeper devolve o controle ao engenheiro, mitigando o risco de expor documentação "quebrada" ou incompleta. A automação total será reavaliada (ADR Futura) quando o projeto atingir maturidade estável.
graph TD
A[Desenvolvedor] -->|1. make docs| B(Validação Local)
B -->|Aprovado?| C{Decisão Humana}
C -->|Sim| D[2. make docs-deploy]
C -->|Não| E[Corrigir Rascunho]
D --> F["GitHub Pages (Produção)"]
5. Consequências¶
| Tipo | Descrição |
|---|---|
| Garantia de que 100% dos deploys foram visualmente validados por um humano. | |
| Eliminação de custos e tempo de espera de filas de build em CI/CD. | |
Dessincronia temporária entre o código na main e o site publicado (se o dev esquecer o deploy). |
6. Implementação Técnica¶
O comando é abstraído no Makefile para garantir a execução correta do script Python, forçando a atualização do histórico da branch de páginas.