GBR SSG: Arquitetura de CI/CD para Cloudflare Pages | Wiki
GBR SSG: Arquitetura de CI/CD para Cloudflare Pages
Este documento especifica a arquitetura da esteira de Integração Contínua (CI) e Entrega Contínua (CD) para a compilação e publicação automática de nossa Wiki estática.
1. Motivação e Definição Arquitetural
Para manter a governança de *Sistemas Lúcidos* e garantir a consistência das documentações e do software associado no monorepo, a automatização de testes e publicação é dividida em duas esteiras lógicas integradas via GitHub Actions:
-
*Integração Contínua (CI):* Valida a integridade do código, formatação do código de acordo com o formatter oficial do Gleam, e execução de testes automatizados nos pacotes do monorepo relevantes (
packages/gbr_ssg_coreeapps/gbr_ssg). -
*Entrega Contínua (CD):* Compila o conteúdo estático utilizando o executável
gbr_ssge faz o deploy do diretório compilado (./dist) para a infraestrutura de borda (Edge) na Cloudflare Pages.
2. Requisitos EARS
*Requisitos Ubíquos (Ubiquitous Requirements)*
- *UBQ-01:* O pipeline do GitHub Actions deve ser acionado automaticamente a cada commit enviado para a branch main ou na abertura de Pull Requests.
- *UBQ-02:* O deploy na Cloudflare Pages só deve ocorrer caso todas as etapas de validação de código (formatação, compilação e testes) do job de CI tenham concluído com sucesso absoluto.
- *UBQ-03:* O deploy deve gerar um artefato idempotente a partir da pasta compilada ./dist.
*Requisitos Orientados a Eventos (Event-Driven Requirements)* - *EVD-01:* Quando a Cloudflare Pages finalizar o deploy da nova versão da Wiki, as URLs e o status da implantação devem ser informados nos sumários do workflow e nos comentários do commit associado.
*Requisitos Orientados a Estado (State-Driven Requirements)*
- *STD-01:* Enquanto o job de CI estiver em execução, o runner do GitHub Actions deve utilizar a estratégia de cacheamento para as dependências baixadas do Hex/Rebar3 para reduzir o tempo de execução do pipeline.
- *STD-02:* Durante a execução do deploy para produção, as permissões do token do GitHub devem ser atenuadas, exigindo acesso de gravação exclusivamente para deploys (deployments: write) e leitura para o repositório (contents: read).
*Requisitos de Comportamento Indesejado (Unwanted Behavior Requirements)*
- *UNW-01:* Se o parser de TOML ou Djot do core falhar catastrófica ou silenciosamente devido a algum erro de formatação insuperável nos arquivos .djot, o processo de build do CLI deve retornar código de erro diferente de zero, abortando a esteira de CD e mantendo a versão anterior no ar.