🚦CI/CD

Guia Completo de Buildkite — Integration Pipelines

Página de estudo de Buildkite Integration Pipelines: vídeos do canal oficial, talks de Uber/Twilio/Aviator, Test Analytics, agent-stack-k8s, Terraform e referências.

Progresso
0%

Visão Geral

Buildkite é uma plataforma de CI/CD híbrida: o control plane é SaaS, mas os agents rodam na sua infraestrutura (on-prem, AWS, GCP, Azure, K8s). É usado em escala por Uber, DoorDash, Pinterest e Shopify.

Integration Pipelines são pipelines dedicados a rodar testes de integração — onde múltiplos serviços/módulos sobem juntos (DB real, Redis, mocks contratados) para validar contratos. Diferem de unit pipelines por tempo de execução, requisitos de infraestrutura e isolamento.

Anatomia de um pipeline.yml com etapa de integração

# .buildkite/pipeline.yml
steps:
  - label: ":docker: Build"
    key: "build"
    command: "docker compose build app"
    agents:
      queue: "default"
    plugins:
      - docker-compose#v5.5.0:
          build: app

  - wait

  - label: ":test_tube: Unit tests"
    key: "unit"
    command: "pnpm vitest run"
    parallelism: 4
    depends_on: "build"
    agents:
      queue: "default"

  - label: ":mag: Integration tests"
    key: "integration"
    command: "pnpm test:integration"
    depends_on: "build"
    agents:
      queue: "integration"   # queue dedicada com mais recursos
    timeout_in_minutes: 30
    retry:
      automatic:
        - exit_status: -1
          limit: 2

  - wait

  - block: "Deploy to prod?"
    branches: "main"

  - label: ":rocket: Deploy"
    command: ".buildkite/deploy.sh"
    branches: "main"
    agents:
      queue: "deploy"
Queue dedicada (queue: integration): roteia jobs pesados para agents com mais CPU/RAM e secrets específicos (chaves de DB de staging, etc.). Mantenha unit/integration/deploy em queues separadas — facilita autoscaling.

Dynamic pipelines (bootstrap → generate)

#!/usr/bin/env bash
# .buildkite/generate-pipeline.sh
# Bootstrap → generate pattern: 1 step inicial monta o resto do pipeline.

set -euo pipefail

# Detecta serviços alterados no diff
CHANGED=$(git diff --name-only origin/main...HEAD | cut -d/ -f1 | sort -u)

cat <<'YAML'
steps:
YAML

for svc in $CHANGED; do
  if [[ -d "services/$svc" ]]; then
    cat <<YAML
  - label: ":hammer: Test $svc"
    command: "cd services/$svc && make ci"
    agents:
      queue: "integration"
    key: "test-$svc"
YAML
  fi
done

cat <<'YAML'
  - wait

  - label: ":ship: Deploy changed services"
    command: ".buildkite/deploy-changed.sh"
    branches: "main"
YAML
Cross-pipeline trigger: em arquiteturas multi-repo, evite pipelines monolíticos. Use trigger step para encadear pipelines (ex.: pipeline de app dispara pipeline de integração end-to-end).
# Pipeline A dispara Pipeline B com env e meta-data
steps:
  - label: ":package: Build artifact"
    command: ./build.sh
    key: "build"

  - trigger: "integration-tests"   # slug do pipeline B
    label: ":arrow_right: Run integration suite"
    depends_on: "build"
    build:
      message: "Triggered from ${BUILDKITE_PIPELINE_SLUG} #${BUILDKITE_BUILD_NUMBER}"
      commit: "${BUILDKITE_COMMIT}"
      branch: "${BUILDKITE_BRANCH}"
      env:
        ARTIFACT_URL: "s3://artifacts/${BUILDKITE_BUILD_NUMBER}.tar"
      meta_data:
        source_build: "${BUILDKITE_BUILD_ID}"
    async: false                   # bloqueia até B terminar

Agent stack no Kubernetes

# Instalar agent-stack-k8s via Helm
helm upgrade --install agent-stack-k8s \
  oci://ghcr.io/buildkite/helm/agent-stack-k8s \
  --namespace buildkite \
  --create-namespace \
  --values values.yml

# values.yml minimo
config:
  org: minha-org
  cluster-uuid: <cluster-uuid>
agentToken: bkua_xxx           # ou agentTokenSecretName apontando para um Secret
agentStackSecret: bkagent_xxx
podSpec:
  serviceAccountName: buildkite-agent
  containers:
    - name: agent
      resources:
        requests: { cpu: "500m", memory: "1Gi" }
        limits:   { cpu: "2",    memory: "4Gi" }

Vídeos · Fundamentos & Onboarding

Material oficial e introdutório. Comece por aqui se nunca usou Buildkite. Todos os vídeos são em inglês (EN) — não há material em português significativo (gap real do nicho).

UnblockConf21 — Buildkite 101 Webinar

Buildkite · EN · 2021-12Visão geral do modelo híbrido (control plane SaaS + agents self-hosted), segurança, escala e como criar o primeiro pipeline.

Exploring the Pipeline Examples Gallery

Buildkite · EN · 2025-08Tour pela Pipeline Examples Gallery: como combinar templates prontos para Ruby, Node, Go, mobile e ML.

Creating New Pipelines with Examples

Buildkite · EN · 2025-08Passo-a-passo de criação de pipeline a partir de um exemplo do catálogo oficial.

Bootstrapping a New Pipeline with the Buildkite MCP Server

Buildkite · EN · 2025-10Usa o servidor MCP da Buildkite + LLM para gerar pipeline.yml e steps a partir do contexto do repo.

Visualize your CI/CD pipeline on a canvas with Buildkite

Buildkite · EN · 2025-07Canvas view: representação visual de steps, paralelismo e dependências do pipeline.

Strategies for migrating your CI/CD pipelines to Buildkite

Buildkite · EN · 2025-06Estratégias para migrar de Jenkins/GitHub Actions/CircleCI para Buildkite — quick wins e gotchas.

Buildkite CI/CD Platform — Developer Productivity (Keith Pitt)

CTO Connection · EN · 2023-12Talk do fundador Keith Pitt: filosofia da Buildkite, hybrid model e por que developer experience importa.

Storytelling in DevOps and What We’ve Been Up To

Buildkite · EN · 2024Keynote Keith Pitt — direção do produto, integrações e roadmap do platform.

Vídeos · Agents, Infra & Integrações

Como rodar agents em escala — Kubernetes, AWS, parallelismo, manutenção e infraestrutura como código com Terraform.

Maintaining the Buildkite Agent

Buildkite · EN · 2025-09Care & feeding do agent self-hosted: atualizações, hooks, lifecycle, telemetria e troubleshooting.

Buildkite parallel agents and how to use them for CI parallelisation

Buildkite · EN · 2019-01parallelism e parallel_job_count nos steps: split de test suite entre agents para reduzir wall-clock.

Buildkite March 2023 release: Native Kubernetes support

Buildkite · EN · 2023-03Lançamento do agent-stack-k8s: controller K8s + Helm chart + Job-per-build com isolation real.

Scaling CI horizontally with Buildkite, Kubernetes, and multiple pipelines

KubeFM · EN · 2025-09Ben Poland mostra como horizontalizar CI com K8s + múltiplos pipelines, queues e cluster autoscaling.

Managing CI/CD Resources with Terraform — Buildkite, GitHub e AWS

HashiCorp · EN · 2023-01Provisioning de Buildkite pipelines + GitHub webhooks + AWS infra como código com Terraform.

AWS BuildKite GitHub Webinar

AWS Events · EN · 2020-10Pipeline ponta-a-ponta: GitHub → Buildkite → Docker → AWS, com testes de API contínuos.

Zero to Kubernetes GitOps with Buildkite (Twilio)

Buildkite · EN · 2022Robbie DelPrete (Twilio) sobre integrar GitOps em K8s com triggers e plugins Buildkite.

Vídeos · Casos de Escala (Uber, Twilio, Aviator)

Como empresas grandes usam Buildkite em monorepos, monorepos com 10k builds/dia e merge queues. Boa leitura pra justificar adoção em time/empresa.

Building Fast, Reliable, and Scalable CI at Uber with Buildkite

Buildkite · EN · 2022-12Uber: 1k+ commits/dia, monorepo 500k arquivos / 50M LOC. Arquitetura, queues e otimizações.

Scaling Quality: a Journey to 10,000 Builds a Day

Buildkite · EN · 2025-10Estudo de caso: chegar a 10k builds/dia mantendo confiabilidade e tempo de feedback.

Merge Strategies for (Large) Monorepos — Spriha Tucker (Aviator)

Buildkite · EN · 2024Estratégias de merge queue em monorepos grandes — sequencial, paralelo, batching — aplicadas a Buildkite.

First-Class Support for GitHub Merge Queues

Buildkite · EN · 2025-10Integração nativa com merge queues do GitHub — checks, retries e gating.

Vídeos · Test Analytics & Flaky Tests

Buildkite Test Analytics é o produto irmão dos pipelines — ingesta resultados de teste, rastreia flakies e mede saúde da suite ao longo do tempo. Crucial para integration pipelines, onde flakes são endêmicos.

Introducing Buildkite Test Analytics

Buildkite · EN · 2022-06Lançamento do Test Analytics: ingestão de resultados de teste, dashboards e flaky detection.

Buildkite March 2023 release: Flaky Test Tracker

Buildkite · EN · 2023-03Flaky test tracker: identificação automática, quarentena e métricas de saúde da suite.

Finding Flaky Tests with Test Analytics (Gordon Chan)

Buildkite · EN · 2022-12Deep dive: como Test Analytics rastreia regressões e prioriza fixes.

UnblockConf21 — Buildkite Test Analytics Deep Dive

Buildkite · EN · 2021-12Arquitetura interna do Test Analytics e integração no pipeline.

UnblockConf21 — Test Analytics: Flaky Tests, FML

Buildkite · EN · 2021-12Talk descontraído sobre a dor real de flaky tests e o roadmap do produto.

Buildkite’s early adventure with ClickHouse in Test Analytics

ClickHouse · EN · 2025-02Engenharia: como Buildkite usa ClickHouse para queries analíticas em billions de rows.

Introducing Buildkite Test Analytics — Private Beta

Buildkite · EN · 2021Versão de teaser do produto na private beta — útil pra ver evolução até hoje.

Vídeos · Integrações Pontuais

Plugins, registries e conteúdo não-inglês (o único material próximo de PT que encontrei foi em espanhol).

Using Buildkite to push packages to Cloudsmith

Cloudsmith · EN · 2020-07Integration concreta: pipeline que builda artefatos e publica em registry Cloudsmith.

Buildkite — Herramienta DevOps Fundamentos CI/CD

Comunidad DevOps · ES · 2018-08(Espanhol) Introdução conceitual — fundamentos de CI/CD aplicados a Buildkite.

Buildkite — Creación de agentes

Comunidad DevOps · ES · 2018(Espanhol) Setup prático de Buildkite agents — único conteúdo próximo de PT que achei.

Documentação Oficial

Fontes canônicas — preferir sempre estas ao invés de blogs antigos.

Repositórios GitHub

Blog Posts & Artigos

Comparações & Decisão

Antes de adotar, vale comparar com alternativas. Estas leituras ajudam a justificar (ou refutar) a escolha do Buildkite.

Heurística rápida: Buildkite ganha quando você precisa rodar build em infra própria (compliance, custo, GPU, redes restritas) e quer um control plane sem operar o servidor — caso típico de fintechs, healthtechs e empresas com monorepos grandes. Para repositórios pequenos hospedados no GitHub, GitHub Actions é mais barato e direto.
Kubernetes← Todos os treinamentos