CI/CD deixou de ser exclusividade de grandes times de engenharia. Com o GitHub Actions, qualquer equipe — mesmo com um único desenvolvedor — pode automatizar testes, builds e deploys sem precisar manter infraestrutura própria de pipeline.
O que é CI/CD e por que importa para PMEs
CI (Integração Contínua) garante que cada alteração no código seja automaticamente testada antes de chegar à produção. CD (Entrega Contínua) automatiza o processo de colocar essa alteração no servidor. Para uma PME, isso significa menos bugs em produção e deploy sem intervenção manual.
Conceitos básicos do GitHub Actions
- Workflow: arquivo YAML que define a automação (fica em
.github/workflows/) - Trigger: evento que dispara o workflow (push, pull request, agendamento)
- Job: conjunto de steps que rodam em um runner
- Step: comando ou action individual dentro de um job
- Runner: máquina virtual onde o job executa (GitHub oferece gratuitamente)
Workflow 1 — Testes automáticos em cada push
# .github/workflows/test.yml
name: Testes
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- run: npm ci
- run: npm test
Workflow 2 — Build e push de imagem Docker
# .github/workflows/build.yml
name: Build e Push Docker
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: docker/build-push-action@v5
with:
push: true
tags: meuusuario/minha-app:${{ github.sha }}
💡 Segredos no GitHub Actions: Nunca coloque senhas diretamente no YAML. Use Settings → Secrets and variables → Actions no repositório para armazenar credenciais.
Workflow 3 — Deploy automático via SSH
# .github/workflows/deploy.yml
name: Deploy Produção
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.PROD_HOST }}
username: ${{ secrets.PROD_USER }}
key: ${{ secrets.PROD_SSH_KEY }}
script: |
cd /opt/minha-app
docker compose pull
docker compose up -d --remove-orphans
docker image prune -f
Dicas para equipes pequenas
- Comece pequeno: um workflow de testes já agrega muito valor
- Use o cache do Actions: acelera builds em 50–80% para projetos com dependências pesadas
- Monitore os minutos gratuitos: GitHub oferece 2.000 min/mês no plano gratuito
- Notifique em caso de falha: adicione um step de notificação para falhas críticas
Referências
- GitHub. GitHub Actions Documentation. Disponível em: docs.github.com/actions
- GitHub. Encrypted Secrets. Disponível em: docs.github.com