CI/CD¶
Workflows¶
| Workflow | Responsabilidade |
|---|---|
ci.yml |
matriz Python, qualidade, cobertura, frontend e pacote da extensão |
docs.yml |
build estrito e publicação da documentação no GitHub Pages |
codeql.yml |
análise estática Python e JavaScript/TypeScript |
| Dependabot | atualizações semanais de pip, npm e GitHub Actions |
Matriz Python¶
A suíte pytest com mocks/fixtures roda em:
- Ubuntu + Python 3.11;
- Ubuntu + Python 3.12;
- Windows + Python 3.11;
- Windows + Python 3.12.
Um job Ubuntu/Python 3.12 executa adicionalmente Ruff, format check, compileall, Pyright, validators, dry-run da migração, data health, clean install e cobertura. O baseline local inicial é 86%; o relatório remoto é publicado como artefato, sem threshold arbitrário antes de comparar ambientes de forma estável.
Frontend¶
O job frontend executa:
npm ci
npm run test:unit
npm run lint
npm run typecheck
npm run build
npx playwright test tests/e2e/smoke.spec.ts tests/e2e/data-reliability.spec.ts --project=chromium
Vitest/Testing Library/MSW cobrem contratos rápidos; Playwright valida o navegador. O E2E usa dados de demonstração e APIs mockadas, sem provider externo.
Extensão¶
scripts/package_extension.py valida Manifest V3, arquivos obrigatórios e padrões de segredo antes de criar o ZIP. O artefato é enviado pelo workflow para inspeção, não publicado automaticamente como release.
Segurança e supply chain¶
- secret scan falha se uma credencial com padrão conhecido estiver rastreada;
- CodeQL analisa Python e JavaScript/TypeScript;
- Dependabot propõe atualizações pequenas e revisáveis;
npm auditgera relatório e não bloqueia sozinho sem triagem;- chamadas reais de IA e scraping de sites reais não rodam no CI;
- nenhum secret é necessário no workflow padrão.
Política de publicação¶
- validar a árvore local e os artefatos;
- enviar commits à
mainsem force-push; - aguardar todos os checks remotos obrigatórios;
- criar a tag anotada somente no commit verde;
- criar GitHub Release com notas reais;
- anexar somente ZIPs já escaneados e sem dados pessoais.
Falha de audit, CodeQL ou dependência deve ser analisada; falso positivo documentado não deve ser ocultado nem tratado automaticamente como vulnerabilidade explorável.