Arquitetura
O GitOps e composto por tres componentes independentes que trabalham juntos para automatizar a entrega de releases.
Visao Geral
┌─────────────┐ ┌──────────────────────────────────────────┐
│ GitHub │ │ GitOps │
│ │ │ │
│ ┌────────┐ │ │ ┌────────────┐ ┌──────────────────┐ │
│ │Release │──┼──webhook──► sys │ │ front │ │
│ │ v1.2.0 │ │ │ │ (Flask) │ │ (React) │ │
│ └────────┘ │ │ │ │ │ │ │
│ │ │ │ ┌────────┐ │ │ Dashboard │ │
│ ┌────────┐ │ │ │ │Process │ │ │ Repositorios │ │
│ │.gitops │ │ │ │ │Release │ │ │ Historico │ │
│ │ .yml │◄─┼─────┼──│ │ │ │ │ Status │ │
│ └────────┘ │ │ │ └───┬────┘ │ └──────────────────┘ │
└─────────────┘ │ │ │ │ │
│ └─────┼──────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ ┌──────────┐ │
│ │ B2 │ │ Telegram │ │
│ │ Storage │ │ Notify │ │
│ └────┬─────┘ └──────────┘ │
└───────┼──────────────────────────────────┘
│
▼
┌──────────────┐
│ Cloudflare │
│ CDN │
│ │
│ projeto.ccs │
│ .systems │
└──────────────┘Componentes
gitops-sys (Backend)
Stack: Python 3.12 + Flask 3.0 + Gunicorn
Responsavel por toda a logica de negocio:
- Webhook receiver: Recebe eventos de release do GitHub com validacao HMAC SHA256
- Scheduler: Polling periodico de repositorios (APScheduler - cron ou intervalo)
- Processador de releases: Baixa assets, extrai artefatos, gera ZIPs
- Upload B2: Envia para Backblaze B2 com estrutura versionada
- Documentacao: Busca e envia README, MANUAL, CHANGELOG
- Notificacoes: Telegram com tracking de mensagens
- API REST: CRUD de repositorios, monitoramento, webhooks
Interfaces:
| Interface | Uso |
|---|---|
| GitHub API | Releases, assets, file content, webhooks |
| Backblaze B2 | Upload de arquivos (b2sdk) |
| MySQL | Repositorios, releases processados, notificacoes |
| Redis | Cache (opcional) |
| Telegram | Notificacoes de release |
gitops-front (Frontend)
Stack: React 18 + Vite + Radix UI + TailwindCSS
Dashboard para monitoramento visual:
- Dashboard: Cards de status, releases recentes, saude do sistema
- Repositorios: Lista, filtros, busca, CRUD, toggle ativo/inativo
- Historico: Timeline de todos os releases processados
- Autenticacao: Login com JWT (HttpOnly cookies)
gitops-mcp (MCP Server)
Stack: Rust + rmcp
Integracao com Claude Code via protocolo MCP:
- 11 tools para gerenciamento completo
- Comunicacao via API REST autenticada
- Logging em stderr (JSON-RPC compativel)
Infraestrutura
Containers
| Container | Dominio | Porta |
|---|---|---|
gitops_borlot_com_br |
sys.gitops.borlot.com.br | 5000 |
front_gitops_borlot_com_br |
app.gitops.borlot.com.br | 4173 |
Banco de Dados
MySQL com 4 tabelas:
- users - Autenticacao JWT
- repositories - Repos monitorados
- processed_releases - Historico com JSON de files
- notifications - Tracking de mensagens Telegram
Storage
Backblaze B2 bucket ccs-systems com subpastas por projeto:
ccs-systems/
├── runner/
│ ├── runner
│ ├── runner.zip
│ ├── v1.2.3/
│ └── docs/
├── deployally/
├── implant/
└── backupally/CDN via Cloudflare com subdominio por projeto (projeto.ccs.systems).
By Borlot.com.br on 06/03/2026