02. CI/CD: OpenCode em pipelines¶
🎯 Objetivo¶
Integrar o OpenCode a pipelines de CI/CD para revisar PRs, gerar resumos e rodar tarefas automatizadas com segurança.
🤖 Exemplo real: revisão de PR no GitHub Actions¶
Da documentação oficial — revise o repositório automaticamente a cada pull request:
.github/workflows/opencode-review.yml
name: OpenCode review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm install --global @opencode/cli
- run: opencode run --standalone --model anthropic/claude-sonnet-4-5 "Review this repository for correctness and summarize any issues."
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
Pontos-chave:
- --standalone: em CI use um servidor privado — o secret vai para o processo do servidor
- Secrets: nunca coloque a chave em texto no workflow
- --model: fixe o modelo para resultados previsíveis e custo controlado
- --agent: use um agente read-only (abaixo)
🛡️ Segurança da automação¶
Em ambientes headless ninguém aprova. Restrinja o agente:
opencode.jsonc
{
"agents": {
"ci-reviewer": {
"mode": "subagent",
"permissions": [
{ "action": "shell", "resource": "*", "effect": "deny" },
{ "action": "edit", "resource": "*", "effect": "deny" }
]
}
}
}
opencode run --standalone --agent ci-reviewer "Revise as mudanças do PR"
Para regras que nunca podem ser reabilitadas por um repositório, use policies:
{
"policies": [{ "action": "tool.use", "resource": "shell:*", "effect": "deny" }]
}
🔁 Padrões úteis de pipeline¶
- Comentário no PR: capture
--format jsone poste via API do GitHub - Portão de qualidade: falhe o job se o resumo contiver achados "severity: high"
- Sessões isoladas: cada job roda com
--standalonepara não vazar estado - Custo: registre
opencode stats --costcomo artefato para monitorar gasto
🧰 Comandos úteis¶
opencode session list --format json # lista sessões do job
opencode api GET /api/session # fala direto com a API do servidor
opencode service status # diagnóstico do serviço de fundo
opencode stats --cost # custo e tokens
❓ Desafio prático¶
- Crie um agente
ci-reviewerread-only - Adicione o workflow acima ao seu repositório de teste (com um secret real)
- Abra um PR com um bug intencional e leia o comentário do revisor
- Faça o job falhar quando houver achado de alta severidade
📚 Fonte oficial¶
Próximo passo: Aula 03 — Workflows e boas práticas · Voltar ao módulo