14-16 Mar 2026
Logica do Sistema

Infraestrutura — Topologia Real

Secao 15

CI/CD (GitHub Actions)

Adicionado em 2026-03-14 a partir de varredura de 25 arquivos de infraestrutura (INFRA-01 a INFRA-24).

  • 3 pipelines: Develop (branch develop), Homolog (branch homolog), Production (branch master)
  • Fluxo unico por pipeline: checkout -> configure-aws -> ecr-login -> docker-build -> docker-push -> kubectl-apply
  • Sem testes automatizados, sem SAST, sem dependency scan, sem image scan
  • Deploy em producao disparado automaticamente por push em master — sem aprovacao manual
  • Runner: gemini (auto-hospedado) — hipotese: pode ser o mesmo k3s de desenvolvimento

Kubernetes

  • Producao: AWS EKS, namespace cargofleet
  • Develop/Homolog: k3s com Traefik ingress (com insecureSkipVerify: true — INFRA-05)
  • 1 replica por servico em todos os ambientes
  • Strategy Recreate em todos os deployments de producao — downtime garantido a cada deploy
  • Zero probes (liveness/readiness/startup) em todos os deployments
  • Zero NetworkPolicies em todos os ambientes
  • Zero securityContext nos pods — todos os containers rodam como root

Docker

  • Backend: mcr.microsoft.com/dotnet/sdk:9.0 com instalacao de Node.js/npm via apt-get sem versoes fixadas
  • Frontend: npm install sem --ci — builds nao deterministicos
  • AuthServer: gera pfx OpenIddict no Dockerfile com senha hardcoded (INFRA-01) — chave de assinatura JWT embutida na imagem
  • Imagens tagueadas com SHA e :latest, mas manifests de producao usam apenas :latest

Redis (Producao)

  • Sem autenticacao (requirepass ausente no ConfigMap)
  • Volume emptyDir — todos os dados de sessao perdidos em restart do pod
  • maxmemory: 2mb — insuficiente para cache ABP com 22+ tenants (eviction silenciosa)

AWS SSM (nao integrado)

  • Script .github/scripts/get_params.py existe para ler secrets do AWS SSM Parameter Store e gravar em .env
  • NAO e utilizado em nenhum dos 3 pipelines CI/CD
  • Secrets continuam hardcoded nos appsettings.json e docker-compose files