Pular para o conteúdo
Tecnologia

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

  1. Workflow Build: .github/workflows/docker.yml: on push, jobs build. Checkout code, setup Docker Buildx, login to registry, build/push image.
  2. Cache Layers: uses: docker/build-push-action@v5, cache-from: type=gha, cache-to: type=gha,mode=max. Reutiliza layers entre builds. 10min → 2min.
  3. Multi-Platform: Buildx platforms: linux/amd64,linux/arm64. Uma imagem, múltiplas arquiteturas. Push como manifest list.
  4. Scan Vulnerabilities: uses: aquasecurity/trivy-action@master. Severity: CRITICAL,HIGH. Exit code 1 se encontrar. Bloqueia merge.
  5. 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