CI e gate
Leve a codafort ao CI: SARIF no code scanning, um gate com exit code a partir das suas condições e o veredito do vet sobre o delta do PR.
O SARIF 2.1.0 alimenta o code scanning do GitHub e qualquer ferramenta que leia esse formato. Nenhum passo precisa de rede além de baixar o binário.
GitHub Actions: a ação pronta
jobs:
security:
runs-on: ubuntu-latest
permissions:
security-events: write # upload do SARIF
contents: read
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 } # --git precisa do histórico; o vet precisa da base
- uses: codafort/gate-action@v1
with:
source: '.'
vet: 'true' # veredito sobre o delta do PR (default)
vet-enforce: 'false' # report-only: nunca quebra o build (Free)
A ação roda engine analyze --format sarif, publica no code scanning, arquiva o veredito coda-gate/1 como evidência e roda o vet sobre o delta. Por padrão ela só reporta e não quebra o build. Com vet-enforce: 'true', um veredito bloqueante do vet reprova o job.
Sem a ação: o binário direto (GitLab, Jenkins, qualquer CI)
codafort engine analyze --source . --format sarif --output codafort.sarif --progress never
codafort gate --report codafort.json # exit 0 passa · 1 reprova
Para GitHub sem a ação: github/codeql-action/upload-sarif@v3 com sarif_file: codafort.sarif.
O gate
codafort gate lê um envelope e devolve exit code a partir das condições de .codafort-gate.yaml. Sem arquivo, usa o gate embutido:
| Métrica | Condição default |
|---|---|
vulnerabilities | > 0 reprova |
blocker | > 0 reprova |
taint_findings | > 0 reprova |
risk_findings_high | > 0 reprova |
Um .codafort-gate.yaml próprio troca as condições (métricas por severidade, kind, tag). O engine analyze --fail-on-quality-gate avalia o mesmo arquivo no mesmo passo. Os dois comandos procuram a configuração na mesma ordem: --config explícito > .codafort-gate.yaml no diretório > embutido.
O gate da declaração contra-assinada (o artefato coda-attestation/1) não lê este arquivo: attest avalia condições fixas do padrão (asvs-l*-sast), versionadas em reduction_version. Ver Declaração contra-assinada.
PR mode: só o código novo
codafort engine analyze --source . --git --diff origin/main --format sarif --output codafort.sarif
--git --diff <base> marca is_new em cada finding. Combine um gate frouxo para o legado com um estrito para o novo; o dashboard tem o toggle "PR mode".
Pre-commit
codafort scan . && codafort vet
Ou, no agente, a tool scan_diff antes de cada commit (ver No agente de IA).
Enforcement em escala
Chamado direto no pipeline, codafort gate reprova o build em qualquer plano. A ação pública só reporta o gate e reprova pelo vet com vet-enforce. O plano Platform acrescenta a consolidação de vários repositórios (engine merge) e a política da organização. A declaração contra-assinada começa no plano Verified e assina o mesmo dado que você mede no CI grátis.