ADR-0017: Pipeline de CI/CD para o Gerador Estático (gbr_ssg_deploy) | Wiki
ADR-0017: Pipeline de CI/CD para o Gerador Estático (gbrssgdeploy)
Este documento especifica a decisão de arquitetura para a automação da esteira de Integração Contínua (CI) e Implantação Contínua (CD) do motor gbr_ssg via GitHub Actions e Cloudflare Pages.
1. Contexto e Motivação
O antigo workflow .github/workflows/deploy-wiki.yml focava exclusivamente na compilação da Wiki legada. Com a evolução do gerador estático gbr_ssg — que agora sintetiza as 3 marcas corporativas (gleam-lang.com.br, fvideen.com.br, gleam.dev.br) e integra o Edge Router (_worker.js) — faz-se necessário substituir o workflow por uma esteira dedicada e moderna: .github/workflows/gbr_ssg_deploy.yml.
2. Decisão Arquitetural
-
*Gatilhos Otimizados com Path Filtering:* Para evitar execuções desnecessárias da esteira quando alterações forem feitas em outros pacotes não relacionados do monorepo, o workflow escutará eventos de
pushepull_requestfiltrando estritamente os seguintes caminhos: -apps/gbr_ssg/**-packages/gbr_ssg_core/**-.github/workflows/gbr_ssg_deploy.yml -
**Separação em 2 Jobs Encadeados (
test$\rightarrow$deploy):** - **Jobtest(CI):** Instala o runtime Erlang e o Gleam CLI, e executa os testes unitários nas suítespackages/gbr_ssg_coreeapps/gbr_ssg. - **Jobdeploy(CD):** Depende estritamente do sucesso do job de teste (needs: test). Executa a geração dos artefatos estáticos (gleam run -- --input=./content --output=./dist) e realiza o upload do diretórioapps/gbr_ssg/distutilizando a Action oficialcloudflare/pages-action@v1.
3. Requisitos EARS
*Requisitos Ubíquos (Ubiquitous Requirements)*
- *UBQ-01 (Filtragem por Caminho):* O pipeline de integração DEVE ser disparado apenas quando houver alterações em arquivos pertencentes a apps/gbr_ssg/, packages/gbr_ssg_core/ ou ao próprio arquivo do workflow.
- *UBQ-02 (Garantia de Sucesso em CI antes do Deploy):* O job de publicação no Cloudflare Pages DEVE requerer a conclusão bem-sucedida do job de testes (needs: test), impedindo a implantação em produção caso ocorram falhas de compilação ou quebra de testes unitários.