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étricaCondiçã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.