Gleam.br Wiki

GBR SSG: Arquitetura de CI/CD para Cloudflare Pages | Wiki

Documentação de engenharia e especificações técnicas da Gleam-BR.

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_core e apps/gbr_ssg).
  • *Entrega Contínua (CD):* Compila o conteúdo estático utilizando o executável gbr_ssg e 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.