GitHub Actions automatiza build, test e deploy de containers Docker. Pipeline completo: build → test → scan → push → deploy.
Conceitos Principais
GitHub Actions
Workflows YAML em .github/workflows/. Triggered por push, PR, schedule. Jobs rodam em runners (Linux/Mac/Windows).
Docker Buildx
Builder moderno. Multi-platform (amd64, arm64). Cache layers. BuildKit features. GitHub Actions cache integration.
Registry Push
Docker Hub, GHCR, ECR, GCR. Login via secrets. Tag com commit SHA e latest. Semantic versioning.
Vulnerability Scan
Trivy, Snyk em pipeline. Bloqueia deploy se critical CVEs. Scan antes de push para registry.
Passo a Passo
- Workflow Build: .github/workflows/docker.yml: on push, jobs build. Checkout code, setup Docker Buildx, login to registry, build/push image.
- Cache Layers: uses: docker/build-push-action@v5, cache-from: type=gha, cache-to: type=gha,mode=max. Reutiliza layers entre builds. 10min → 2min.
- Multi-Platform: Buildx platforms: linux/amd64,linux/arm64. Uma imagem, múltiplas arquiteturas. Push como manifest list.
- Scan Vulnerabilities: uses: aquasecurity/trivy-action@master. Severity: CRITICAL,HIGH. Exit code 1 se encontrar. Bloqueia merge.
- Deploy Automático: Job deploy depends_on build. SSH para servidor, docker pull nova imagem, docker-compose up -d. Blue-green ou rolling update.
Boas Praticas
Recomendacoes
• Tag com commit SHA para rastreabilidade
• Cache GitHub Actions para layers
• Scan de segurança obrigatório
• Deploy staging antes de prod
• Rollback automático em falha
Erros Comuns
Evite estes erros
• Secrets no código (use GitHub secrets)
• latest tag sem versão específica
• Não testar antes de push
• Build toda vez do zero (sem cache)
Checklist
- Workflow docker.yml criado
- Buildx configurado
- Cache layers funcionando
- Registry login com secrets
- Scan de vulnerabilidades ativo
- Tests rodando antes de push
- Deploy automático em staging