Saltar para o conteúdo
← Inforjota
Cursos Inforjota English

Lição 2 de 6 · 15 min · Verificado em 10 de Outubro de 2026

CI/CD com agentes: GitHub Actions e revisão de PRs

No fim desta lição vais conseguir:

  • Explicar o que é a integração contínua e para que serve num projecto pequeno
  • Criar um workflow mínimo do GitHub Actions que corre o pytest a cada mudança
  • Ligar a revisão de pull requests do Claude ou do Codex com a chave guardada como segredo
  • Proteger o ramo principal para que o agente comente e só uma pessoa aprove

A junta de freguesia tem um pequeno programa para as marcações do salão polivalente. Numa sexta-feira, o Pedro, que ajuda nas horas vagas, mudou uma linha para corrigir uma data e enviou para o GitHub. No sábado ninguém conseguia marcar nada. Os testes existiam e teriam apanhado o erro. Só que ninguém os correu.

O conceito: uma máquina que corre os testes por ti

Integração contínua (CI, em inglês) quer dizer isto: sempre que alguém envia uma mudança, uma máquina à parte descarrega o projecto, instala o que precisa e corre os testes. No pull request aparece um visto verde ou uma cruz vermelha. Ninguém se esquece, porque ninguém tem de se lembrar.

A entrega contínua (o CD) é o passo seguinte: publicar sozinho quando os testes passam. Fica para quando confiares nos testes.

Os agentes entram no mesmo mecanismo. Em vez de só correr testes, a máquina chama um agente que lê o pull request e deixa comentários. A regra desta lição é simples: o agente comenta, a pessoa decide.

Como se faz hoje: o primeiro workflow

Isto é como está a 6 de Outubro de 2026; se o ecrã for diferente, procura o botão com o mesmo nome. Guia: docs.github.com/en/actions/tutorials/build-and-test-code/python.

No projecto da lição 2/07, cria o ficheiro .github/workflows/testes.yml:

name: Testes
on: [push, pull_request]
jobs:
  testes:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-python@v5
        with:
          python-version: '3.x'
      - name: Instalar
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
      - name: Test with pytest
        run: pytest

Lê-o de cima para baixo: corre em cada push e em cada pull request, numa máquina Linux do GitHub, e desiste ao fim de 10 minutos. Os passos descarregam o código, instalam o Python e as dependências e correm o pytest. O requirements.txt tem de incluir o pytest.

Dica

Pede ao agente que escreva o workflow, mas compara-o com o guia oficial antes do commit. Os números das versões (@v6, @v5) mudam com o tempo e o agente pode lembrar-se de números antigos.

A chave fica num segredo

No repositório, abre Settings. Na secção «Security» da barra lateral, escolhe Secrets and variables e depois Actions. Carrega em New repository secret, dá-lhe o nome ANTHROPIC_API_KEY (ou OPENAI_API_KEY), cola o valor e confirma com Add secret.

Cuidado

A chave nunca vai para o ficheiro .yml, nem num repositório privado. O workflow só a refere pelo nome, como ${{ secrets.ANTHROPIC_API_KEY }}. Cria uma chave só para este repositório, para veres o consumo dela à parte e a revogares sem tocar no resto (lição 1/06).

Revisão de PRs com o Claude

A integração oficial chama-se Claude Code GitHub Actions e usa a acção anthropics/claude-code-action@v1. Guia: code.claude.com/docs/en/github-actions.

O caminho rápido: abre o claude dentro do repositório e corre /install-github-app. Instala a aplicação do GitHub, guarda o segredo e prepara o workflow num pull request. Precisas de ser administrador do repositório, e só funciona com repositórios no github.com.

O caminho manual: instala a aplicação Claude do GitHub, cria o segredo e copia o ficheiro de exemplo claude.yml, ligado no guia, para .github/workflows/. A partir daí, escreves @claude num comentário do PR e ele responde. O guia tem também um workflow que revê sozinho cada PR aberto.

O equivalente no Codex

A acção oficial é openai/codex-action@v1, com a chave em openai-api-key: ${{ secrets.OPENAI_API_KEY }} e o pedido num ficheiro, por exemplo .github/codex/prompts/review.md. O exemplo oficial separa as tarefas: o Codex só lê o código, e outro passo, com permissão para escrever comentários, publica a resposta. Guia: learn.chatgpt.com/docs/github-action.

As regras da casa

  • Nunca dês ao agente permissão de merge num projecto real. Ele propõe e comenta; uma pessoa aprova.
  • Protege o ramo principal. Em Settings, na secção «Code, planning, and automation», escolhe Branches e depois Add classic branch protection rule. Liga Require a pull request before merging e Require status checks to pass before merging, e escolhe o teu teste no campo de pesquisa que aparece. Se houver mais pessoas no projecto, liga também Require approvals. Por omissão, quem administra o repositório pode passar por cima da regra; o guia mostra como a aplicar também aos administradores.
  • O texto de um PR é dado, não instrução. Um PR pode trazer frases escritas para enganar o agente (lição 2/04). As duas acções só aceitam pedidos de quem tem acesso de escrita ao repositório, e o guia do Codex recomenda limpar o texto antes de o dar ao modelo.

Quanto custa cada corrida

Cada corrida gasta minutos do GitHub Actions e tokens do modelo. Três controlos ajudam: correr a revisão só quando um PR é aberto ou actualizado, não em cada push; o timeout-minutes; e, no Claude, --max-turns na linha claude_args. O travão do mês continua a ser o limite de gasto na consola do fornecedor. Os valores mudam: consulta a página Estado actual.

Dica

Começa só com os testes. Junta a revisão do agente quando o visto verde já for rotina; assim sabes se uma cruz vermelha vem do código ou do agente.

Exercício

Como sei que ficou bem o primeiro envio mostra um visto verde no PR, o segundo uma cruz vermelha, e o botão de merge fica bloqueado enquanto o teste falhar.

Se não deu

  • Nada aparece no separador Actions: confirma o caminho .github/workflows/ e a extensão .yml.
  • pytest: command not found: falta o pytest no requirements.txt.
  • O agente não responde ao @claude: confirma o nome do segredo, que a aplicação está instalada no repositório e que quem comentou tem acesso de escrita.
  • A pesquisa de status checks não encontra o teu teste: envia uma mudança para o workflow correr e procura outra vez pelo nome do job (testes).

Vídeos

Criando um Workflow AUTOMATIZADO de CI com o Github Actions
Fernanda Kipper · 14 min · PT-BR · legendas · Ver no YouTube
Constrói um fluxo de integração contínua no GitHub Actions: instalar dependências, fazer o build e correr os testes a cada alteração. É de 2023; a parte do agente está no vídeo da OpenAI.
Automatic code reviews with OpenAI Codex
OpenAI · 8 min · EN · legendas · Ver no YouTube
Vídeo oficial da OpenAI: configurar o Codex para rever pull requests automaticamente no GitHub e na linha de comandos, e personalizar a revisão com o AGENTS.md.

Testa o que aprendeste

1. Queres que o agente reveja os pull requests do projecto da junta. Que permissões lhe dás?
2. Um colega sugere pôr a chave da API directamente no ficheiro .yml do workflow, «porque o repositório é privado». O que respondes?
3. A revisão automática corre em cada push e o gasto do mês subiu mais do que esperavas. Qual é a melhor reacção?

Correcções a esta lição (1)
  • : Segunda revisão externa: na protecção do ramo, activa-se também «Do not allow bypassing the above settings».