Aula 19 - Automação de Documentação Técnica e SSGs 📚
Objetivo Pedagógico
Objetivo: Conceber uma arquitetura escalável de documentação contínua utilizando o gerador de sites estáticos MkDocs Material, automação de navegação com hooks em Python, validação de links quebrados e publicação autônoma no GitHub Pages.
📑 1. Fundamentos Teóricos & Análise Técnica
Em organizações complexas com dezenas de microsserviços e bibliotecas, a documentação centralizada desatualiza-se rapidamente se depender de wikis manuais desconectadas do repositório de código.
A abordagem Docs-as-Code com MkDocs Material unifica documentação e engenharia: 1. Arquitetura do MkDocs Material: - Gerador de sites estáticos rápido baseado em Python e Markdown, extensível via plugins e hooks em Python puro. - Fornece busca textual instantânea indexada localmente (Web Worker Search), suporte nativo a tags, cartões de navegação (Grid Cards), guias de código (Content Tabs) e anotações explicativas. 2. Ciclo Contínuo de Validação de Documentação: - Assim como o código de aplicação possui suítes de testes, a documentação deve passar por verificações de integridade: - Detecção de links quebrados internos e externos (Dead Link Checkers). - Verificação de formatação e linter de Markdown com markdownlint. - Verificação de cobertura de documentação de APIs públicas a partir de docstrings. 3. Deploy Automatizado e Isolamento: - Compilação dos arquivos .md em páginas HTML/CSS estáticas de altíssima velocidade e publicação autônoma no GitHub Pages via GitHub Actions ou deploys locais sob demanda.
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph TD
Repo["Arquivos Markdown (.md) em docs/"] --> Config["mkdocs.yml (Configuração Declarativa)"]
Config --> Hook["Hooks em Python (Automação de Metadados / Validações)"]
Hook --> Build["Compilação MkDocs: Geração de HTML/JS Estático"]
Build --> LinkCheck["Validador de Links & Linter de Markdown"]
LinkCheck --> Deploy["Deploy Seguro no GitHub Pages (gh-pages branch)"]
style Repo fill:#e1f5fe,stroke:#01579b
style Config fill:#fff3e0,stroke:#e65100
style Hook fill:#f3e5f5,stroke:#7b1fa2
style Build fill:#e8f5e9,stroke:#2e7d32
style Deploy fill:#e0f2f1,stroke:#00695c 🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Busca Instantânea em Client-Side: Indexação em Web Worker que permite localizar termos e símbolos instantaneamente sem chamadas a servidores externos. - Integração de Hooks em Python: Capacidade de injetar variáveis dinâmicas, gerar tabelas automatizadas e manipular a AST dos documentos durante o build. - Layout Totalmente Responsivo: Visualização perfeita em computadores, tablets e smartphones com navegação por abas e barra lateral recolhível. - Manutenibilidade ao Lado do Código: A documentação vive no mesmo repositório da funcionalidade, evoluindo conjuntamente no mesmo Pull Request.
🛠️ 2. Implementação Prática em Static Site Generators (SSGs), MkDocs Material e CI/CD
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// mkdocs_advanced_config.yml (Configuração Enterprise do MkDocs Material)
site_name: Portal de Engenharia de Software
theme:
name: material
language: pt-BR
palette:
# Alternância dinâmica entre tema claro e escuro
- scheme: default
primary: indigo
accent: deep purple
toggle:
icon: material/brightness-7
name: Mudar para Modo Escuro
- scheme: slate
primary: indigo
accent: deep purple
toggle:
icon: material/brightness-4
name: Mudar para Modo Claro
features:
- navigation.instant
- navigation.tracking
- navigation.tabs
- navigation.sections
- navigation.top
- search.suggest
- search.highlight
- content.code.copy
markdown_extensions:
- pymdownx.highlight:
anchor_linenums: true
- pymdownx.superfences:
custom_fences:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format
- pymdownx.tabbed:
alternate_style: true
- admonition
- attr_list
💡 Análise Passo a Passo do Código
- Recurso
navigation.instant: Transforma o portal em uma Single Page Application (SPA), eliminando o recarregamento total da página entre navegações. - Suporte a Mermaid via
pymdownx.superfences: Renderiza blocos ```mermaid diretamente como gráficos vetoriais SVG. - Alternância de Paleta com Persistência: Memoriza a preferência do usuário por modo escuro ou claro no LocalStorage do navegador.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto