CI y el gate
Lleva codafort al CI: SARIF en el code scanning, un gate con exit code a partir de tus condiciones y el veredicto de vet sobre el delta del PR.
SARIF 2.1.0 alimenta el code scanning de GitHub y cualquier herramienta que lea ese formato. Ningún paso necesita red más allá de descargar el binario.
GitHub Actions: la acción lista
jobs:
security:
runs-on: ubuntu-latest
permissions:
security-events: write # subida del SARIF
contents: read
steps:
- uses: actions/checkout@v4
with: { fetch-depth: 0 } # --git necesita el historial; vet necesita la base
- uses: codafort/gate-action@v1
with:
source: '.'
vet: 'true' # veredicto sobre el delta del PR (default)
vet-enforce: 'false' # report-only: nunca rompe el build (Free)
La acción corre engine analyze --format sarif, publica en el code scanning, archiva el veredicto coda-gate/1 como evidencia y corre vet sobre el delta. Por defecto solo informa y no rompe el build. Con vet-enforce: 'true', un veredicto bloqueante de vet reprueba el job.
Sin la acción: el binario directo (GitLab, Jenkins, cualquier CI)
codafort engine analyze --source . --format sarif --output codafort.sarif --progress never
codafort gate --report codafort.json # exit 0 pasa · 1 reprueba
Para GitHub sin la acción: github/codeql-action/upload-sarif@v3 con sarif_file: codafort.sarif.
El gate
codafort gate lee un envelope y devuelve un exit code a partir de las condiciones de .codafort-gate.yaml. Sin archivo, usa el gate embebido:
| Métrica | Condición por defecto |
|---|---|
vulnerabilities | > 0 reprueba |
blocker | > 0 reprueba |
taint_findings | > 0 reprueba |
risk_findings_high | > 0 reprueba |
Un .codafort-gate.yaml propio reemplaza las condiciones (métricas por severidad, kind, tag). engine analyze --fail-on-quality-gate evalúa el mismo archivo en el mismo paso. Los dos comandos buscan la configuración en el mismo orden: --config explícito > .codafort-gate.yaml en el directorio > embebido.
El gate de la declaración contrafirmada (el artefacto coda-attestation/1) no lee este archivo: attest evalúa condiciones fijas del estándar (asvs-l*-sast), versionadas en reduction_version. Ver Declaración contrafirmada.
PR mode: solo el código nuevo
codafort engine analyze --source . --git --diff origin/main --format sarif --output codafort.sarif
--git --diff <base> marca is_new en cada finding. Combina un gate laxo para el legado con uno estricto para lo nuevo; el dashboard tiene el toggle "PR mode".
Pre-commit
codafort scan . && codafort vet
O, en el agente, la tool scan_diff antes de cada commit (ver En tu agente de IA).
Enforcement a escala
Llamado directo en el pipeline, codafort gate reprueba el build en cualquier plan. La acción pública solo informa el gate y reprueba por vet con vet-enforce. El plan Platform agrega la consolidación de varios repositorios (engine merge) y la política de la organización. La declaración contrafirmada empieza en el plan Verified y firma el mismo dato que mides en el CI gratis.