Automação

Automatizando deploys com GitHub Actions: pipelines de CI/CD para qualquer projeto

Automatizando deploys com GitHub Actions: pipelines de CI/CD para qualquer projeto

Deploy manual é uma bomba-relógio. Cada passo manual é uma oportunidade de erro humano, e quanto mais frequentes os deploys, maior o risco acumulado. GitHub Actions permite automatizar todo o pipeline — do commit ao deploy em produção — com arquivos YAML versionados no próprio repositório. Vamos construir pipelines reais para diferentes stacks.

Anatomia de um workflow

Um workflow é um arquivo YAML em .github/workflows que define: quando executar (on push, pull request, schedule, manual), em qual ambiente rodar (ubuntu-latest, windows-latest, macos-latest), e quais passos seguir (checkout do código, setup de linguagem, instalar dependências, rodar testes, fazer deploy). Cada passo pode usar actions da comunidade ou executar comandos shell diretamente.

O conceito de jobs permite paralelismo: jobs de lint, testes unitários e testes de integração podem rodar em paralelo, reduzindo o tempo total do pipeline. Jobs podem ter dependências — o job de deploy só executa se os jobs de teste passarem. Isso cria um pipeline claro e seguro: código que não passa nos testes nunca chega a produção.

Pipeline para aplicação Node.js/React

Um pipeline típico para frontend inclui: checkout do código, setup do Node.js com cache do node_modules, instalação de dependências com npm ci (determinístico, usa package-lock.json), linting com ESLint, testes com Jest ou Vitest, build de produção, e deploy do artefato para Vercel, Netlify ou S3+CloudFront. O cache de dependências reduz o tempo de instalação de minutos para segundos em execuções subsequentes.

Para pull requests, rode lint e testes como checks obrigatórios — PRs que falham não podem ser mergados. Para pushes em main, adicione o passo de deploy. Essa separação garante que a branch principal está sempre num estado deployável, e o deploy é consequência automática de código aprovado.

Pipeline para aplicação Python/Django

O pipeline Python inclui: setup do Python com versão específica, instalação de dependências via pip com cache, linting com ruff (moderno e 10-100x mais rápido que flake8+pylint), type checking com mypy, testes com pytest e cobertura com coverage, e deploy via SSH ou Docker push. Para aplicações Django, adicione um service de PostgreSQL para testes de integração com banco real — GitHub Actions suporta services Docker nativas que sobem junto com o job.

Matrix strategy permite testar em múltiplas versões de Python simultaneamente: Python 3.10, 3.11, 3.12 em paralelo, garantindo compatibilidade. Combine com matrix de sistemas operacionais se seu projeto precisa funcionar em múltiplas plataformas.

Secrets e variáveis de ambiente

Credenciais como API keys, tokens de deploy e senhas de banco de dados são armazenadas como Secrets no repositório ou organização GitHub. Eles são mascarados nos logs automaticamente e acessíveis nos workflows via secrets.NOME_DO_SECRET. Nunca hardcode credenciais em workflows. Environments permitem ter secrets diferentes por estágio — staging e production com suas próprias credenciais e regras de aprovação.

Para deploys em produção, configure Environment Protection Rules: exija aprovação manual de um reviewer antes que o deploy execute. Isso adiciona um checkpoint humano sem abrir mão da automação — o processo é automatizado, mas a decisão de deployar é humana.

Pipelines avançados

Reusable workflows permitem definir um pipeline padrão para a organização e referenciá-lo em múltiplos repositórios. Quando o pipeline padrão é atualizado, todos os repos que o usam recebem a melhoria automaticamente. Composite actions empacotam múltiplos passos em uma action reutilizável — ideal para setup customizado que vários workflows compartilham.

Self-hosted runners permitem rodar workflows em suas próprias máquinas — necessário quando o pipeline precisa de hardware específico (GPUs para testes de ML), acesso a redes internas, ou volumes de execução que tornam os runners hosted caros demais. Configure auto-scaling com Kubernetes ou Docker para escalar runners sob demanda sem desperdiçar recursos.

Tem um projeto em mente?

Somos especialistas em transformar ideias em produtos digitais. Apps, sites, automações e IA — vamos construir juntos.

Resposta rápida Orçamento sem compromisso +100 projetos entregues
Compartilhar: