CI/CD · 2026-07-11

CI/CD agentes IA GitHub Actions — Pipeline completo com code review, changelog e testes automáticos

Tutorial completo de CI/CD agentes IA GitHub Actions. Aprenda a configurar GitHub Actions Claude Code para code review automático, CI/CD Codex para geração de changelog e testes inteligentes no pipeline.

Integrar agentes de inteligência artificial no pipeline de CI/CD deixou de ser experimento para se tornar uma vantagem competitiva real. Quando você implementa CI/CD agentes IA GitHub Actions, cada pull request passa por revisão automatizada, changelogs são gerados sem intervenção manual e os testes se adaptam dinamicamente ao código alterado. Neste tutorial, você vai configurar passo a passo um pipeline que usa GitHub Actions com Claude Code para code review automático e Codex para geração de changelog e testes inteligentes — tudo rodando diretamente no seu repositório GitHub.

Sumário

O cenário: por que colocar agentes de IA no pipeline de CI/CD

Um pipeline de CI/CD tradicional executa etapas fixas: linter, testes, build, deploy. O problema é que esse modelo trata todo commit da mesma forma — não importa se a mudança é um ajuste de typo no README ou uma refatoração profunda na camada de autenticação. O pipeline pipeline agente IA inverte essa lógica: o próprio pipeline avalia o que mudou e decide quais etapas executar, com que profundidade e com que critérios.

Os ganhos práticos aparecem em três frentes:

  1. Code review que não depende de disponibilidade humana. Revisores têm tempo limitado. Um agente de IA analisa cada PR em segundos, aponta problemas de segurança, performance e boas práticas, e só então escalona para revisão humana quando necessário.
  1. Changelog gerado a partir do diff real. Nada de release notes escritas "de cabeça" minutos antes do deploy. O agente examina cada commit, extrai o propósito da mudança e monta um changelog estruturado por categoria (features, fixes, breaking changes).
  1. Testes adaptativos ao escopo da mudança. Em vez de rodar a suite inteira (minutos ou horas de execução), o agente identifica quais módulos foram afetados e prioriza os testes relevantes, cortando o tempo de feedback sem sacrificar cobertura.

Para times que já usam GitHub Actions como plataforma de CI/CD, adicionar agentes de IA é uma evolução natural — você não troca de ferramenta, apenas enriquece os workflows existentes com inteligência contextual.

Imagem sugerida: Diagrama comparando um pipeline CI/CD tradicional (etapas fixas, setas retas) vs. um pipeline com agente IA (etapas adaptativas, setas ramificadas com nós de decisão) — mostrando a diferença de inteligência no fluxo.

Setup do GitHub Actions para agentes de IA

Antes de escrever qualquer workflow, você precisa preparar o ambiente para que os agentes de IA tenham acesso ao repositório e às APIs necessárias. O setup é simples e envolve três etapas.

1. Chaves de API como secrets do GitHub

Tanto o Claude Code (Anthropic) quanto o Codex (OpenAI) exigem chaves de API autenticadas. No seu repositório GitHub, vá em Settings > Secrets and variables > Actions e adicione:

  • ANTHROPIC_API_KEY — chave de API da Anthropic para Claude Code
  • OPENAI_API_KEY — chave de API da OpenAI para Codex

Nunca coloque essas chaves diretamente no arquivo YAML do workflow. O GitHub Actions injeta secrets como variáveis de ambiente seguras, visíveis apenas durante a execução do job.

2. Estrutura de diretórios para scripts dos agentes

Crie na raiz do seu repositório uma pasta .github/agents/ para organizar os scripts que cada agente vai executar:

.github/ workflows/ cicd-agentes.yml agents/ code-review-prompt.txt changelog-prompt.txt test-analysis-prompt.txt

Manter os prompts em arquivos separados facilita a manutenção: você atualiza o comportamento do agente sem precisar alterar o workflow YAML.

3. Verificação do ambiente no runner

No início do workflow, inclua uma etapa de verificação para confirmar que o runner tem acesso às ferramentas necessárias:

- name: Verificar ambiente run: | echo "Node version: $(node --version)" echo "Git version: $(git --version)" echo "Anthropic API configurada: ${{ secrets.ANTHROPIC_API_KEY != '' }}" echo "OpenAI API configurada: ${{ secrets.OPENAI_API_KEY != '' }}"

Com o ambiente preparado, você já pode construir os workflows específicos para cada etapa do pipeline.

Imagem sugerida: Print da tela de configuração de secrets no GitHub, destacando os campos ANTHROPIC_API_KEY e OPENAI_API_KEY preenchidos, com a indicação de segurança (ícone de cadeado).

Code review automático com GitHub Actions Claude Code

O primeiro agente que vamos integrar é o Claude Code para revisão automatizada de pull requests. Toda vez que um PR é aberto ou atualizado, o workflow dispara, o Claude Code analisa o diff e posta um comentário diretamente na thread do PR.

Workflow de code review

Crie o arquivo .github/workflows/code-review.yml:

name: Code Review com Claude Code on: pull_request: types: [opened, synchronize] branches: [main, develop] jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Configurar Node.js uses: actions/setup-node@v4 with: node-version: "20" - name: Instalar Claude Code CLI run: npm install -g @anthropic-ai/claude-code - name: Obter diff do PR id: diff run: | git fetch origin ${{ github.base_ref }} git diff origin/${{ github.base_ref }}...HEAD > pr-diff.txt echo "diff_size=$(wc -c < pr-diff.txt)" >> $GITHUB_OUTPUT - name: Revisar código com Claude Code id: review env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} run: | claude "$(cat .github/agents/code-review-prompt.txt)" \ --file pr-diff.txt \ --output review-output.md - name: Postar comentário no PR uses: actions/github-script@v7 with: script: | const fs = require('fs'); const review = fs.readFileSync('review-output.md', 'utf8'); github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: `## 🔍 Code Review Automático\n\n${review}` });

Prompt de code review

Em .github/agents/code-review-prompt.txt, defina as instruções que o Claude Code deve seguir:

Analise o diff de código abaixo e produza um review estruturado em markdown. Para cada arquivo modificado, avalie: 1. Problemas de segurança (injeção, vazamento de dados, autenticação) 2. Problemas de performance (loops ineficientes, queries N+1, alocações desnecessárias) 3. Boas práticas (nomenclatura, coesão, acoplamento, tratamento de erros) 4. Possíveis bugs (condições de corrida, null pointer, off-by-one) 5. Sugestões de melhoria com trechos de código quando aplicável Formato de saída: ## Arquivo: caminho/do/arquivo.ts ### Segurança - [descrição e linha] ### Performance - [descrição e linha] ### Boas práticas - [descrição e linha] ### Possíveis bugs - [descrição e linha] Ao final, inclua um resumo com a contagem de problemas encontrados por categoria e uma avaliação geral (aprovado/reprovado/com ressalvas).

Resultado na prática

Quando um desenvolvedor abre um PR, o workflow é acionado automaticamente. Em 30 a 60 segundos, um comentário aparece na thread do PR com a análise completa. O autor do PR pode corrigir os pontos apontados e o workflow é reexecutado no próximo push (evento synchronize). Isso transforma o GitHub Actions Claude Code em um revisor incansável que está sempre disponível.

Imagem sugerida: Print de um pull request no GitHub mostrando o comentário gerado pelo Claude Code com a seção "Code Review Automático", lista de problemas encontrados e avaliação geral.

Geração automatizada de changelog com CI/CD Codex

Manter um changelog atualizado é uma daquelas tarefas que todo time sabe que deveria fazer, mas ninguém tem disciplina para manter. Com o Codex integrado ao pipeline, o changelog é gerado automaticamente a partir dos commits mergedos, categorizado e publicado como artefato do release.

Workflow de changelog

Crie .github/workflows/changelog.yml:

name: Changelog Automático com Codex on: push: branches: [main] jobs: changelog: runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Obter commits desde última tag id: commits run: | LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") if [ -z "$LAST_TAG" ]; then RANGE="HEAD~10..HEAD" else RANGE="$LAST_TAG..HEAD" fi git log --oneline --pretty=format:"- %s (%h)" $RANGE > commits-log.txt echo "range=$RANGE" >> $GITHUB_OUTPUT - name: Gerar changelog com CI/CD Codex env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: | codex "$(cat .github/agents/changelog-prompt.txt)" \ --file commits-log.txt \ --output CHANGELOG.md - name: Commitar changelog run: | git config user.name "Changelog Bot" git config user.email "bot@orquestra.space" git add CHANGELOG.md git commit -m "docs: atualiza changelog automático [skip ci]" git push

Prompt de changelog

Em .github/agents/changelog-prompt.txt:

Analise a lista de commits abaixo e gere um changelog estruturado. Categorize cada commit em: - 🚀 Novas funcionalidades (feat) - 🐛 Correções de bugs (fix) - ⚡ Performance (perf) - 📚 Documentação (docs) - ♻️ Refatoração (refactor) - ✅ Testes (test) - 🔧 Manutenção (chore) Agrupe por categoria em ordem de importância. Para cada item, mantenha o hash do commit entre parênteses. Inclua a data de geração no topo do arquivo. Formato de saída: # Changelog Gerado em: YYYY-MM-DD ## 🚀 Novas Funcionalidades - [mensagem] ([hash]) ## 🐛 Correções de Bugs - [mensagem] ([hash]) ...

Quando o changelog é gerado

O workflow dispara em todo push para a branch main — ou seja, toda vez que um PR é mergedado. O changelog é atualizado incrementalmente, comparando os commits desde a última tag. Se o repositório usa versionamento semântico com tags (v1.0.0, v1.1.0), o escopo de cada release fica perfeitamente delimitado.

Imagem sugerida: Print de um arquivo CHANGELOG.md gerado pelo Codex, mostrando seções categorizadas com emojis, commits agrupados e data de geração no topo.

Testes inteligentes com agentes no pipeline

Testes são o ponto mais crítico do CI/CD. Rodar a suite inteira a cada commit é caro e lento. Não rodar testes suficientes é arriscado. Agentes de IA resolvem esse dilema analisando o diff e determinando exatamente quais testes executar.

Workflow de testes inteligentes

Crie .github/workflows/testes-inteligentes.yml:

name: Testes Inteligentes com Codex on: pull_request: types: [opened, synchronize] branches: [main] jobs: analyze-and-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Configurar Node.js uses: actions/setup-node@v4 with: node-version: "20" - name: Instalar dependências run: npm ci - name: Analisar impacto das mudanças id: impact env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: | git fetch origin ${{ github.base_ref }} git diff --name-only origin/${{ github.base_ref }}...HEAD > changed-files.txt codex "$(cat .github/agents/test-analysis-prompt.txt)" \ --file changed-files.txt \ --output test-plan.json - name: Executar testes selecionados run: | TEST_FILES=$(node -e "const p = require('./test-plan.json'); console.log(p.testFiles.join(' '))") if [ -n "$TEST_FILES" ]; then npx jest $TEST_FILES --coverage --reporters=default --reporters=jest-junit else echo "Nenhum teste necessário para esta mudança." fi - name: Postar resultado nos checks uses: actions/github-script@v7 with: script: | const fs = require('fs'); const plan = JSON.parse(fs.readFileSync('test-plan.json', 'utf8')); const conclusion = process.env.RESULTADO === 'sucesso' ? 'success' : 'failure'; github.rest.checks.create({ owner: context.repo.owner, repo: context.repo.repo, name: 'Testes Inteligentes', head_sha: context.sha, status: 'completed', conclusion: conclusion, output: { title: 'Análise de Testes', summary: `${plan.reasoning}\n\nArquivos alterados: ${plan.changedFiles}\nTestes executados: ${plan.executedTests}` } });

Prompt de análise de testes

Em .github/agents/test-analysis-prompt.txt:

Analise a lista de arquivos modificados neste pull request. Para cada arquivo, determine: 1. O módulo/subsistema ao qual pertence 2. Qual arquivo de teste cobre a funcionalidade alterada 3. Se a mudança é cosmética (README, comentários, config) ou funcional Retorne um JSON com a seguinte estrutura: { "reasoning": "Explicação breve da análise", "changedFiles": 5, "testFiles": ["tests/unit/auth.test.ts", "tests/integration/api.test.ts"], "executedTests": 42, "skipReason": null } Se todas as mudanças forem cosméticas, retorne testFiles vazio e uma justificativa em skipReason.

Benefício real

Em um projeto com 2.000 testes que leva 12 minutos para rodar por completo, a análise inteligente reduz a execução para os 40-80 testes relevantes — menos de 1 minuto. O feedback chega ao desenvolvedor em segundos, não em minutos. E nos raros casos em que a análise erra o alvo, o pipeline completo pode ser agendado em paralelo como fallback.

Imagem sugerida: Dashboard do GitHub Actions mostrando três execuções lado a lado: pipeline tradicional (12 min), pipeline com testes inteligentes (50s), e status check com summary da análise.

Exemplo completo: pipeline multi-estágio com agentes

Abaixo está um workflow unificado que integra code review, changelog e testes inteligentes em um único pipeline multi-estágio. Este é o arquivo principal que você manteria em .github/workflows/cicd-agentes.yml.

name: CI/CD com Agentes de IA on: pull_request: branches: [main] push: branches: [main] jobs: # Estágio 1: Análise de impacto analyze: runs-on: ubuntu-latest outputs: has_code_changes: ${{ steps.check.outputs.has_code_changes }} steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Classificar mudanças id: check run: | CHANGED=$(git diff --name-only origin/main...HEAD | grep -c -E '\.(ts|js|py|go|rs|java)$' || true) echo "has_code_changes=$([ $CHANGED -gt 0 ] && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT # Estágio 2: Code review (apenas PRs com mudanças de código) code-review: needs: analyze if: github.event_name == 'pull_request' && needs.analyze.outputs.has_code_changes == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Instalar Claude Code run: npm install -g @anthropic-ai/claude-code - name: Revisar código env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} run: | git diff origin/main...HEAD > pr-diff.txt claude "$(cat .github/agents/code-review-prompt.txt)" \ --file pr-diff.txt --output review-output.md - name: Comentar no PR uses: actions/github-script@v7 with: script: | const fs = require('fs'); const review = fs.readFileSync('review-output.md', 'utf8'); github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: `## 🔍 Code Review Automático\n\n${review}` }); # Estágio 3: Testes inteligentes (apenas PRs com mudanças de código) tests: needs: [analyze, code-review] if: always() && needs.analyze.outputs.has_code_changes == 'true' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Configurar Node.js uses: actions/setup-node@v4 with: node-version: "20" - name: Instalar dependências run: npm ci - name: Analisar e executar testes env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: | git diff --name-only origin/main...HEAD > changed-files.txt codex "$(cat .github/agents/test-analysis-prompt.txt)" \ --file changed-files.txt --output test-plan.json TEST_FILES=$(node -e "const p = require('./test-plan.json'); console.log(p.testFiles.join(' '))") if [ -n "$TEST_FILES" ]; then npx jest $TEST_FILES --coverage fi # Estágio 4: Build e deploy build: needs: [tests] if: always() && !cancelled() runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build run: npm run build # Estágio 5: Changelog (apenas push na main) changelog: needs: [build] if: github.event_name == 'push' && github.ref == 'refs/heads/main' runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Gerar changelog env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: | LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "HEAD~5") git log --oneline --pretty=format:"- %s (%h)" $LAST_TAG..HEAD > commits-log.txt codex "$(cat .github/agents/changelog-prompt.txt)" \ --file commits-log.txt --output CHANGELOG.md git config user.name "Changelog Bot" git config user.email "bot@orquestra.space" git add CHANGELOG.md git commit -m "docs: atualiza changelog [skip ci]" git push

Como o pipeline funciona

  1. Análise de impacto: O primeiro job verifica se há mudanças de código reais. Se o PR for só markdown ou configuração, os jobs seguintes são pulados — economia de tempo e tokens de API.
  1. Code review: O Claude Code analisa o diff completo e posta um comentário na thread do PR. O desenvolvedor recebe feedback imediato sem depender de disponibilidade de colegas.
  1. Testes inteligentes: O Codex determina quais arquivos de teste são relevantes e executa apenas eles. O resultado aparece como check no GitHub.
  1. Build: O build tradicional roda apenas se os estágios anteriores passarem. Nada de build quebrado com review pendente.
  1. Changelog: No merge para main, o changelog é atualizado automaticamente e commitado no repositório.

Esse fluxo representa o estado da arte de um pipeline agente IA: cada etapa é inteligente, adaptativa e gera valor real sem depender de intervenção manual.

Imagem sugerida: Diagrama visual do pipeline multi-estágio com 5 blocos conectados (Analyze -> Code Review -> Tests -> Build -> Changelog), cada um com o ícone do agente responsável (Claude Code ou Codex) e setas condicionais indicando quando cada etapa é pulada.

FAQ — Perguntas frequentes

Preciso de uma chave de API separada para cada agente no GitHub Actions?

Sim. Claude Code (Anthropic) e Codex (OpenAI) usam APIs diferentes e exigem chaves separadas. Configure ANTHROPIC_API_KEY e OPENAI_API_KEY como secrets do repositório no GitHub. Cada agente consome apenas a chave correspondente ao serviço que está utilizando.

O custo de usar agentes de IA no CI/CD é viável para times pequenos?

Sim. Para um time de 3 a 5 desenvolvedores com 10 a 20 PRs por semana, o custo combinado de Claude Code e Codex no pipeline gira entre US$ 5 e US$ 15 por mês. O custo é baixo comparado ao tempo de review humano economizado. Você pode controlar os gastos ajustando a frequência dos workflows e limitando a análise apenas a PRs com mudanças de código.

O agente de IA pode bloquear um PR se encontrar problemas graves?

Sim, é possível configurar o workflow para falhar (exit code diferente de zero) quando o agente encontrar problemas classificados como críticos. No entanto, a abordagem recomendada é usar o review como comentário informativo e manter a decisão final com o revisor humano. O agente sugere, o humano decide.

CI/CD Codex funciona com qualquer linguagem de programação?

Sim. Codex analisa código independentemente da linguagem, desde que haja contexto suficiente no diff. Para linguagens com ecossistema de testes padronizado (Jest, pytest, go test, RSpec), os prompts de análise de testes podem ser adaptados para gerar os comandos corretos de execução.

Como evitar que o changelog automático gere ruído com commits triviais?

Configure o workflow para ignorar commits com tags específicas como [skip changelog] na mensagem, ou filtre commits que afetam apenas arquivos de configuração (.github/, .vscode/, README.md). O prompt do Codex também pode instruir o agente a ignorar commits exclusivamente de manutenção.

O GitHub Actions Claude Code funciona em runners auto-hospedados?

Sim. O Claude Code CLI é uma ferramenta Node.js que roda em qualquer sistema com Node 18+. Em runners auto-hospedados, você precisa garantir que o npm global tenha permissão de escrita e que as variáveis de ambiente das chaves de API estejam disponíveis. O comportamento do workflow é idêntico ao dos runners hospedados pelo GitHub.

Coloque agentes no seu CI/CD hoje

Você viu neste tutorial como implementar CI/CD agentes IA GitHub Actions em três frentes práticas: code review automático com Claude Code, geração de changelog com Codex e testes inteligentes que se adaptam ao escopo da mudança. Cada workflow é um arquivo YAML que você copia para o seu repositório, ajusta os prompts e começa a usar em minutos.

O ganho é mensurável: PRs revisados em segundos em vez de horas, changelogs sempre atualizados sem esforço manual, e feedback de testes que chega antes de o desenvolvedor mudar de contexto.

Agora, pense no próximo passo: e se você pudesse orquestrar Claude Code e Codex lado a lado no mesmo ambiente, sem alternar entre terminais, com um canvas que mostra cada agente em ação simultaneamente? É exatamente isso que o Orquestra faz.

👉 Baixe o Orquestra para Windows 11 e comece seu teste gratuito de 7 dias — sem cartão de crédito.

👉 Conheça os planos para times que querem levar a orquestração de agentes ao próximo nível.

Pronto para orquestrar seus agentes?

Baixe o Orquestra para Windows 11 e comece a coordenar seus agentes de IA em um canvas infinito. Grátis por 7 dias.