Calcula score de crédito (0-100) baseado em:
- 💰 Renda
- 👤 Idade
- 💳 Dívidas
docker-cicd-demo/
├── calculadora.py # Lógica principal (30 linhas)
├── validador.py # Valida dados com Pandera
├── test_calculadora.py # Testes com pytest
├── clientes.csv # Dados exemplo
├── requirements.txt # 3 bibliotecas
├── Dockerfile # Container (15 linhas)
└── .github/workflows/
└── testes.yml # CI/CD (30 linhas)
Total: ~100 linhas de código!
pip install -r requirements.txtpython calculadora.pyOutput:
🏦 Calculadora de Score de Crédito
========================================
Renda: R$ 6000.00
Idade: 35 anos
Dívidas: R$ 2000.00
Score: 85 (Alto)
Renda: R$ 2000.00
Idade: 22 anos
Dívidas: R$ 8000.00
Score: 20 (Baixo)
python validador.pyOutput:
✅ Testando validação...
✅ Dados válidos passaram!
❌ Dados inválidos rejeitados (correto!): Idade mínima: 18 anos
pytest test_calculadora.py -vOutput:
test_calculadora.py::test_score_alto PASSED [25%]
test_calculadora.py::test_score_baixo PASSED [50%]
test_calculadora.py::test_score_medio PASSED [75%]
test_calculadora.py::test_score_dentro_limites PASSED [100%]
✅ 4 passed
Empacota código + dependências em um "container"
Problema: "Funciona na minha máquina" ≠ funciona em outras
Solução: Container com TUDO dentro
cat DockerfileO que tem:
FROM python:3.11-slim # 1. Imagem base
WORKDIR /app # 2. Pasta
COPY requirements.txt . # 3. Copiar deps
RUN pip install -r ... # 4. Instalar
COPY . . # 5. Copiar código
CMD ["python", "calculadora.py"] # 6. Rodardocker build -t calculadora-score .O que acontece:
- Baixa Python 3.11
- Instala pandas, pandera, pytest
- Copia todo código
- Fica pronto!
docker run calculadora-scoreResultado: Mesma saída da calculadora, mas rodando DENTRO do container!
docker run calculadora-score pytest test_calculadora.py -vResultado: Testes rodam dentro do container (ambiente isolado)
Testes automáticos em cada commit
Cenário SEM CI/CD:
Programador: Altera código
Programador: "Acho que tá funcionando..." 🤔
Programador: Faz commit
Sistema: Quebra! 💥
Cenário COM CI/CD:
Programador: Altera código
GitHub: Roda testes AUTOMATICAMENTE
GitHub: ❌ "Teste falhou! Validação de idade quebrou"
Programador: Corrige ANTES de quebrar produção ✅
cat .github/workflows/testes.ymlO que tem:
steps:
- Baixar código
- Instalar Python
- Instalar dependências
- Validar dados (Pandera!) ← AUTOMÁTICO!
- Rodar testes (pytest!) ← AUTOMÁTICO!- Você faz commit
- GitHub detecta automaticamente
- Roda todos os steps
- Se passar: ✅ Pode fazer merge
- Se falhar: ❌ Bloqueia merge
Acessar: github.com/[seu-repo]/actions
Exemplo de sucesso:
✅ Baixar código 2s
✅ Instalar Python 3s
✅ Instalar dependências 12s
✅ Validar dados 1s
✅ Rodar testes 3s
Total: 21s - PASSOU!
Exemplo de falha:
✅ Baixar código 2s
✅ Instalar Python 3s
✅ Instalar dependências 12s
❌ Validar dados 1s
Erro: Idade mínima: 18 anos
❌ FALHOU - Commit bloqueado
- ✅ Containerização
- ✅ Isolamento de ambiente
- ✅ Portabilidade ("funciona igual em todos lugares")
- ✅ Dockerfile (receita do container)
- ✅ Testes automáticos
- ✅ Validação de dados (Pandera)
- ✅ Testes unitários (pytest)
- ✅ GitHub Actions
- ✅ Integração contínua