CI/CD Runner

Sistema de deploy automatizado escrito em Rust para orquestracao de deployments via Git.

Visao Geral

Atributo Valor
Versao 1.1.1
Linguagem Rust (Edition 2021)
Licenca MIT
Status Producao

Objetivos do Projeto

O Runner foi criado para resolver os seguintes problemas:

  1. Deploy manual propenso a erros - Automatizar todo o pipeline de deploy
  2. Downtime durante deploys - Estrategia blue-green com zero downtime
  3. Dificuldade em testar PRs - Ambientes de staging efemeros para cada PR
  4. Rollout arriscado - Canary deployments com controle de trafego
  5. Falta de visibilidade - Notificacoes em tempo real e logs estruturados

Hipotese de Solucao

PROBLEMA: Deploys manuais sao lentos, propensos a erro e causam downtime

SOLUCAO: Pipeline automatizado baseado em Git
         - Push na branch `dist` aciona deploy
         - Runner detecta mudancas via cron (fetch a cada 5 min)
         - Deploy blue-green com health check antes de promover
         - Rollback automatico em caso de falha
         - Notificacao via Telegram/Discord

Arquitetura

┌─────────────────────────────────────────────────────────────────┐
│                         REPOSITORIO                              │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│   dev ──────────────────► main ──────────────────► dist         │
│    │                       │                        │            │
│    │ Desenvolvimento       │ Releases               │ Deploy     │
│    │ Codigo fonte          │ Tags vX.Y.Z            │ Artefatos  │
│    │ Testes locais         │ Codigo estavel         │ Builds     │
│    │                       │                        │            │
│    ▼                       ▼                        ▼            │
│  Trabalho               Producao               CI/CD Runner      │
│   diario               aprovado              faz deploy aqui     │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
                                                      │
                                                      ▼
┌─────────────────────────────────────────────────────────────────┐
│                     SERVIDOR DE PRODUCAO                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│   /opt/runner/                                                   │
│   ├── runner              # Binario                              │
│   ├── config.yml          # Config global                        │
│   └── state/              # Estado das apps                      │
│                                                                  │
│   /apps/{projeto}/                                               │
│   ├── .deploy.yml         # Config do projeto                    │
│   └── src/                                                       │
│       ├── production/     # Instancia producao                   │
│       │   ├── v1.0.0/                                           │
│       │   └── v1.0.1/     # Versao ativa                        │
│       └── staging/        # Instancia staging                    │
│                                                                  │
│   /etc/traefik/dynamic/                                          │
│   └── {projeto}.yml       # Routing dinamico                     │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Hierarquia de Entidades

Projeto → Instancia → Versao

meu-projeto/
├── production/     # Instancia com dominio app.projeto.com.br
│   ├── v0.1.5/
│   └── v0.1.6/     # Versao ativa
└── staging/        # Instancia com dominio staging.projeto.com.br
    └── develop/

Features Principais

Deploy Automatizado

  • Deteccao automatica de mudancas via runner fetch --deploy
  • Cron a cada 5 minutos verifica atualizacoes
  • Build local, artefatos na branch dist

Blue-Green Deployment

  • Nova versao testada em container isolado
  • Health check antes de promover
  • Rollback automatico se falhar

Canary Deployment

  • Controle de trafego via weighted services do Traefik
  • Promocao gradual (10% → 50% → 100%)
  • Zero downtime na mudanca de peso

Staging de PRs

  • Ambientes efemeros para cada Pull Request
  • Dominio unico (pr-42.staging.projeto.com.br)
  • Cleanup automatico por TTL

MCP Server (v1.1.0)

  • Integracao com Claude Code via Model Context Protocol
  • 25+ tools para gerenciamento de deploys
  • Resources com documentacao embarcada
  • Prompts guiados para workflows

Seguranca

  • Scan de secrets no codigo
  • NPM audit e Python bandit
  • Health checks obrigatorios
  • Permissoes restritas em arquivos .secrets

Versionamento

Historico de Versoes

Versao Data Destaque
1.1.1 2026-02-13 URL runner.ccs.systems
1.1.0 2026-02-12 MCP Server + Self-Update
1.0.0 2026-02-05 Arquitetura baseada em instancias
0.6.0 2026-02-04 Traefik dynamic config
0.5.0 2026-01-28 Comando reset + hooks
0.4.0 2026-01-26 Staging de PRs
0.3.0 2026-01-26 Comandos add/fetch

Roadmap

  • Multi-service support (app + worker + scheduler)
  • Shared volumes em /data/apps/{projeto}/resource/
  • Webhook de PR closed para auto-destroy
  • Dashboard web para visualizacao

Requisitos de Sistema

Servidor de Producao

Requisito Minimo
OS Linux (Ubuntu 22.04+, Debian 12+)
Docker 24.0+
Traefik 3.0+
Memoria 512MB (apenas Runner)
Disco 1GB + espaco para apps

Dependencias

  • Docker Engine rodando
  • Traefik configurado com dynamic config
  • Acesso ao GitHub (token ou SSH key)
  • Opcional: Telegram Bot / Discord Webhook para notificacoes

Proximos Passos

  1. Inicio Rapido - Instale e configure o Runner
  2. Primeiro Deploy - Faca seu primeiro deploy
  3. Referencia CLI - Todos os comandos disponiveis
  4. Configuracao - Formato do .deploy.yml