Pular para o conteúdo principal

CI/CD e deploy

Integração contínua (GitHub Actions)

Os projetos rodam verificações automáticas a cada push. No Syens, por exemplo, há workflows separados para:

  • RuboCop (estilo e qualidade do Ruby).
  • ESLint (estilo do JavaScript).
  • Webpack build (garante que o front empacota).
  • Tests (a suíte de testes).

Mantenha os checks verdes antes de pedir review. Padronização de estilo é verificada por RuboCop (Ruby) e ESLint (JS) — rode-os localmente antes do push.

Empacotamento (Docker)

Os sistemas são empacotados em imagens Docker. É comum haver um Dockerfile para produção e um Dockerfile.dev para desenvolvimento, além de docker-compose.yml para subir o ambiente local (app + PostgreSQL + Redis).

Deploy das aplicações

  • Backends Rails vão para o Amazon ECR e rodam na AWS. Exemplo do fluxo de imagem da Chamada Escolar:
# (passos de shell, ilustrativos)
# docker build -> docker tag (ECR) -> docker push
# a imagem publicada no ECR é então implantada no ambiente AWS
  • Fronts estáticos (como o cpe-inscricao) são publicados na Cloudflare.
  • Esta documentação (Docusaurus) também é publicada na Cloudflare — veja Deploy — Cloudflare.

Infraestrutura como código (InfraSpawn)

A infraestrutura AWS é gerida pelo InfraSpawn, uma plataforma interna (Go + React/Vite) que aplica Terraform e acompanha a fila de deploys.

  • Cada sistema tem sua definição de infraestrutura (por exemplo, syens.tf, cpe.tf), sobre uma base de rede compartilhada (vpc-base.tf).
  • Mudanças de infraestrutura passam pelo Terraform (versionado), não por alterações manuais no console da AWS.

Assim, o ciclo completo fica: código no GitHub → CI valida → imagem no ECR / estático na Cloudflare → infraestrutura provisionada pelo Terraform via InfraSpawn.