name: "Syft — SBOM" description: >- Genera el SBOM (CycloneDX + SPDX) de la imagen que ya pasó el gate de CRITICAL de Trivy — describe exactamente qué paquetes (y en qué versión) quedaron adentro. CycloneDX es el formato más usado por herramientas de consulta/alertas de CVEs nuevas. inputs: image_ref: description: "Referencia completa imagen:tag a describir." required: true artifact_suffix: description: "Sufijo para el nombre del artifact publicado (ej. la versión)." required: true syft_version: description: "Versión de Syft a instalar." required: false default: "1.51.0" runs: using: composite steps: - name: Instalar Syft shell: bash run: | set -euo pipefail curl -sSfL \ "https://github.com/anchore/syft/releases/download/v${{ inputs.syft_version }}/syft_${{ inputs.syft_version }}_linux_amd64.tar.gz" \ -o /tmp/syft.tar.gz tar -xzf /tmp/syft.tar.gz -C /tmp syft chmod +x /tmp/syft /tmp/syft version - name: Generar SBOM (Syft) shell: bash run: | set -euo pipefail /tmp/syft "${{ inputs.image_ref }}" \ -o cyclonedx-json=sbom.cdx.json \ -o spdx-json=sbom.spdx.json - name: Publicar SBOM if: always() uses: actions/upload-artifact@v3 with: name: sbom-${{ inputs.artifact_suffix }} path: | sbom.cdx.json sbom.spdx.json if-no-files-found: ignore