CI/CD Pipelines

Integração e Entrega Contínua

Automatize o ciclo de build, test e deploy. Entenda como o CI/CD transforma o fluxo de desenvolvimento e elimina deploys manuais e fragíeis.

Meme da Aula
Meme CI/CD — It works on my local container
O que é CI/CD?
DevOps & o Loop Infinito

CI/CD é a espinha dorsal do DevOps moderno. Continuous Integration garante que cada push seja validado automaticamente. Continuous Delivery/Deployment leva o código validado até produção com mínima intervenção humana.

🔄 CI — Continuous Integration

Cada commit dispara um pipeline automático: lint, build e testes unitários. A equipe detecta problemas em minutos, não dias.

Princípio: integre cedo, integre sempre. Evite o "merge hell" de branches que ficam separadas por semanas.

🚀 CD — Continuous Delivery / Deployment

Delivery: o artefato está sempre pronto para ser promovido a produção — o botão existe, mas é humano quem aperta.

Deployment: o deploy acontece sozinho após cada pipeline verde. Zero intervenção manual.


Etapas do Pipeline
Do Código ao Deploy

Um pipeline CI/CD típico segue estas fases em sequência. Cada etapa precisa passar para a próxima começar.

Diagrama de etapas CI/CD Pipeline: Code Validation, Build, Tests, Deploy
FASE 01
Code Validation
Lint, format check, SAST estático. Falha rápida antes de desperdiçar recursos de build.
FASE 02
Build
Compila o código, instala dependências, gera o artefato (JAR, binário, imagem Docker).
FASE 03
Tests
Testes unitários, integração, cobertura. Pipeline falha se coverage cair abaixo do threshold.
FASE 04
Deploy
Publica artefato, aplica manifests Kubernetes, atualiza Cloud Run ou sobe containers via SSH.

Conceitos Chave
Glossário CI/CD
Pipeline
Sequência automatizada de etapas que transforma um commit em software em produção.
Artifact
Saída da etapa de build: JAR, imagem Docker, binário compilado ou pacote npm.
Runner / Agent
Máquina (virtual ou física) que executa os jobs do pipeline. Pode ser gerenciado (cloud) ou self-hosted.
Trigger
Evento que dispara o pipeline: push, pull request, schedule (cron), ou disparo manual via API.
Secret / Env Var
Credenciais e tokens armazenados com segurança na plataforma CI/CD, injetados como variáveis de ambiente.
Cache
Guarda dependências entre execuções (node_modules, Maven ~/.m2) para acelerar builds.

Benefícios Práticos
Feedback Imediato
Bugs detectados em minutos após o commit, não na sexta à tarde na hora do deploy.
🛡️
Menos Risco
Deploys frequentes e pequenos são mais fáceis de reverter do que releases mensais gigantes.
📈
Qualidade
Testes e linting obrigatórios impedem que código ruim chegue a produção por descuido.
🤖
Automação Total
Time foca em escrever código; a máquina cuida de build, test e deploy repetitivo.
GitHub Actions

Workflows como Código

GitHub Actions é a plataforma CI/CD nativa do GitHub. Defina pipelines em YAML dentro do seu repositório e automatize qualquer coisa, do build ao deploy.

O que é GitHub Actions?
Componentes do Sistema

GitHub Actions é uma plataforma de CI/CD integrada ao GitHub que permite automatizar fluxos de trabalho diretamente no repositório. Tudo é definido em arquivos YAML na pasta .github/workflows/.

Componentes GitHub Actions: Event dispara Runner, que executa Jobs compostos de Steps
Event
Gatilho que inicia o workflow: push, pull_request, schedule, workflow_dispatch (manual) ou qualquer evento de API do GitHub.
📄
Workflow
Arquivo YAML em .github/workflows/. Define quais jobs rodam, em que condições e em qual ordem. Um repositório pode ter vários workflows.
💻
Runner
VM que executa os jobs. GitHub oferece runners gerenciados (ubuntu, windows, macos). Você pode usar self-hosted runners na sua própria infra.
📦
Job
Conjunto de steps que rodam no mesmo runner. Jobs rodam em paralelo por padrão. Use needs: para criar dependências entre eles.
🔧
Step
Unidade mínima de trabalho. Um step é um comando shell ou uma Action reutilizável. Steps dentro de um job rodam sequencialmente.
🧩
Action
Bloco reutilizável publicado no GitHub Marketplace. actions/checkout, actions/setup-node, docker/build-push-action são exemplos populares.

Exemplo de Workflow
Pipeline Node.js Completo

Este workflow roda nos eventos de push e pull_request na branch main. Instala dependências, roda lint e testes.

# .github/workflows/ci.yml name: CI Pipeline on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build-and-test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: npm ci - name: Run lint run: npm run lint - name: Run tests run: npm test

Hands-on na Aula
Pipeline Rodando ao Vivo

Durante a aula, vimos um pipeline real sendo executado no GitHub Actions com output em tempo real de cada step.

GitHub Actions pipeline rodando ao vivo no GitHub — logs de cada step
Boas Práticas
Pin actions por SHA
Use actions/checkout@abc1234 ao invés de @v4 para evitar supply chain attacks.
Secrets no Vault
Nunca hardcode credenciais no YAML. Use secrets.MEU_TOKEN e configure no GitHub.
Cache de dependências
Use actions/cache ou o cache embutido no setup-node para acelerar builds em até 70%.
Fail fast
Coloque etapas rápidas (lint, typecheck) antes das lentas (build, testes de integração) para feedback imediato.
Permissões mínimas
Configure permissions: no workflow para restringir o que o GITHUB_TOKEN pode fazer.
Matrix Strategy
Teste em múltiplas versões de Node/Python/Go em paralelo com strategy.matrix.
Ferramentas CI/CD

Ecossistema de Pipelines

Além do GitHub Actions, o mercado tem diversas ferramentas de CI/CD. Conhecer o ecossistema ajuda a escolher a ferramenta certa para cada contexto.

Principais ferramentas CI/CD: GitLab CI, Jenkins, GitHub Actions, CircleCI, Travis CI, Harness, ArgoCD, Tekton
Comparação de Ferramentas
Quando usar cada uma

Cada ferramenta tem seu nicho. A escolha depende de onde seu código está hospedado, da autonomia que você quer e do modelo de custos.

GitHub Actions
Gratuito (planos)
Nativo no GitHub. YAML simples. Marketplace enorme. Ótimo para projetos open source e times que já usam GitHub.
GitLab CI/CD
Gratuito + Pago
Integrado ao GitLab. Pipeline como código (.gitlab-ci.yml). Forte em DevSecOps e ambientes on-premises.
Jenkins
Self-hosted
Open source, extremamente flexível. Ecossistema de plugins. Exige manutenção da infra. Ainda muito usado em empresas grandes.
CircleCI
Pago
Performance alta. Orbs (componentes reutilizáveis). Popular em startups. Integra com GitHub e Bitbucket.
Harness
Pago
Plataforma completa: CI, CD, Feature Flags, Chaos Engineering. Interface visual intuitiva. Forte em enterprise.
ArgoCD
Open Source
CD declarativo para Kubernetes (GitOps). Sincroniza o cluster com o estado do repositório Git automaticamente.

Conceito Importante
GitOps — Git como Fonte de Verdade

GitOps é a prática de usar o repositório Git como fonte única de verdade para a infra e o estado do sistema. Ferramentas como ArgoCD e Flux implementam esse modelo para Kubernetes.

🔄 Pull-based CD (GitOps)

Um agente dentro do cluster (ArgoCD, Flux) monitora o repositório e sincroniza o estado automaticamente. Não precisa de acesso externo ao cluster.

📤 Push-based CD (Tradicional)

O pipeline CI/CD empurra as mudanças ativamente para o cluster via kubectl, Helm ou chamadas de API. Requer credenciais de acesso no pipeline.


Tecnologias Relacionadas
Docker Kubernetes Helm Terraform SonarQube Trivy Snyk Gitleaks OWASP ZAP Checkov AWS CodePipeline Cloud Build (GCP) Azure DevOps Tekton Flux
Laboratórios

Mãos na Massa

6 labs progressivos: do primeiro workflow GitHub Actions até um pipeline completo com Docker, GCP, SonarCloud e Snyk.

Lab 001
GitHub Actions: Introdução
Primeiro workflow — estrutura básica e fork de repositório
20–30 min
Entender a estrutura de um workflow do GitHub Actions, fazer fork de um repositório Node.js com pipeline pronta e observar o pipeline rodar automaticamente após um push.
github-actions workflow node.js iniciante
📋 Ver Lab →
Lab 002
GitHub Actions: Build, Test e Deploy no GitHub Pages
Pipeline completo com deploy de site estático
30–40 min
Criar um pipeline GitHub Actions completo com as etapas de instalar dependências, build, testes automatizados e deploy de site estático no GitHub Pages — sem nenhum serviço externo.
github-actions github-pages deploy intermediario
📋 Ver Lab →
Lab 003
Jenkins com Docker
Self-hosted CI com Multibranch Pipeline
40–50 min
Subir um servidor Jenkins via Docker, configurar credenciais de GitHub e Docker Hub, e criar uma Multibranch Pipeline que builda e faz push de uma imagem Docker automaticamente a cada push no repositório.
jenkins docker multibranch-pipeline intermediario
📋 Ver Lab →
Lab 004
Harness CI/CD
Plataforma enterprise com interface visual
45–60 min
Criar uma conta gratuita no Harness, configurar conectores de GitHub e Docker Hub, importar uma pipeline pronta do repositório e disparar execuções via push e pull request.
harness cicd enterprise intermediario
📋 Ver Lab →
Lab 005
Segurança em Pipelines
SAST, detecção de segredos e scan de containers
45–60 min
Explorar 5 ferramentas de segurança integráveis em pipelines CI/CD: Checkov (IaC), Gitleaks e TruffleHog (detecção de segredos), Snyk (vulnerabilidades em dependências) e Trivy (vulnerabilidades em imagens de container).
devsecops checkov snyk trivy gitleaks
📋 Ver Lab →
Lab 006
Pipeline Completo: GH Actions + Docker + GCP + SonarCloud + Snyk
Desafio final ponta a ponta
Desafio
Montar um pipeline GitHub Actions completo de ponta a ponta: build, testes, push de imagem Docker, análise de qualidade com SonarCloud, scan de segurança com Snyk e deploy na Google Cloud Run usando Workload Identity Federation (sem chave de serviço em plain text).
github-actions docker cloud-run sonarcloud snyk wif avancado
📋 Ver Lab →