GitHub Action
Scan container images in your CI/CD pipeline. Generate SBOMs, detect vulnerabilities, audit cryptographic assets, and scan for malware — directly in GitHub Actions.
Quick Start
Inputs
| Input | Required | Default | Description |
|---|---|---|---|
| image | yes | Container image to scan | |
| scan-types | no | sbom | Comma-separated: sbom, cbom, sarif, malware |
| scanners | no | Trivy scanners: vuln, secret, license, config, all | |
| severity | no | Severity filter: LOW, MEDIUM, HIGH, CRITICAL | |
| fail-on-findings | no | false | Fail the step if any findings survive the scan filters |
| format | no | cyclonedx | SBOM format: cyclonedx, spdx, spdx-json |
| output-dir | no | reel-results | Directory for scan outputs |
| reel-version | no | latest | Reel CLI version to use |
Outputs
| Output | Description |
|---|---|
| sbom-file | Path to the SBOM output file |
| sarif-file | Path to the SARIF output file |
| malware-file | Path to the malware scan output file |
| vuln-count | Number of vulnerabilities found after filtering |
| malware-count | Number of infected files found |
Fail on Findings
Use fail-on-findings to break the build when vulnerabilities or malware are detected. The scan filters control what counts as a finding — the action fails if anything survives the filters.
Scans always complete and produce artifacts, even when findings are detected. The evaluation step runs after all scans finish, so reports are always available for review.
SARIF Upload
Generate SARIF output and upload to GitHub Code Scanning for vulnerability alerts in pull requests:
Full Pipeline Example
The if: always() on the upload step ensures artifacts are saved even when the scan gate fails.
Caching
Reel downloads Trivy and ClamAV on first use to ~/.cache/reel/. Add a cache step to avoid re-downloading on every run:
Troubleshooting
Image not found
The image must be available to the runner — either built locally in a previous step, or pullable from a registry. For private registries, add a docker login step first.
Slow first run
First run downloads Trivy (~50MB) and ClamAV (~200MB) plus virus databases. Add the caching step above to speed up subsequent runs.
Scan passes but expected failure
Check that scanners: vuln is set — without it, severity has no effect because no vulnerability scanning is performed.