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