CI/CD Runner

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

Visao Geral

Atributo Valor
Versao 2.21.0
Linguagem Rust (Edition 2021)
Licenca MIT
Status Producao
Download https://runner.ccs.systems/runner

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                      │
│                                                                  │
│   /data/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

Self-Update (v1.1.0)

Canais GitOps (v1.1.6)

  • Releases estáveis na raiz: /runner
  • Release candidates em: /rc/runner
  • Versionamento automatico por tag pattern

Secrets Encriptados e Recovery (v1.3.2)

  • Encriptacao AES-256-GCM com content key (ckey) por projeto
  • Secrets persistidos como .runner/secrets.enc no repositorio
  • Recuperacao zero-touch em caso de perda do servidor
  • runner deploy --all para redeploy massivo apos recovery
  • Network Docker auto-creation

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.10 2026-02-16 Bug 11 - auto-mount respeita explicitos
1.1.9 2026-02-16 Bugs docker-build (env_files, volumes)
1.1.8 2026-02-16 TOML nested, copy_dir recursion fix
1.1.7 2026-02-15 Default /data/apps, self-update flags
1.1.6 2026-02-14 Canais GitOps (stable/rc)
1.1.5 2026-02-14 Fix versao interna
1.1.2 2026-02-13 Fix folder_name .gitops.yml
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 (formato instances{})
0.6.0 2026-02-04 Traefik dynamic config
0.5.0 2026-01-28 Comando reset + hooks

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. Secrets e Encriptacao - Recuperacao zero-touch
  4. Referencia CLI - Todos os comandos disponiveis
  5. Configuracao - Formato do .deploy.yml
By Borlot.com.br on 12/02/2026