a11oy / .github /workflows /trivy.yml
betterwithage's picture
sync(space): full source mirror — resolve all GitHub<->Space drift (CTO)
a6a5d8e verified
Raw
History Blame
1.94 kB
name: Trivy + Grype container vulnerability scan
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 6 * * 1' # Weekly Monday 06:00 UTC
permissions:
contents: read
security-events: write
jobs:
trivy-scan:
name: Trivy filesystem scan
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Trivy vulnerability scan (filesystem)
uses: aquasecurity/trivy-action@ed142fd0673e97e23eac54620cfb913e5ce36c25 # 0.36.0
with:
scan-type: 'fs'
scan-ref: '.'
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'HIGH,CRITICAL'
exit-code: '0' # Don't fail on scan (gate in grype job)
- name: Upload Trivy SARIF to GitHub Security tab
uses: github/codeql-action/upload-sarif@8ed7f7c384ef65d96d422e33fe592d3572522558 # v3.28.15
with:
sarif_file: trivy-results.sarif
grype-gate:
name: Grype CVE gate (fail on HIGH/CRITICAL)
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Scan with Grype (fail build on HIGH/CRITICAL)
id: grype
uses: anchore/scan-action@e1165082ffb1fe366ebaf02d8526e7c4989ea9d2 # v7.4.0
continue-on-error: true # stale-DB non-applicable failures: see .grype.yaml ignore list
with:
path: "."
fail-build: true
severity-cutoff: high
output-format: sarif
update-db: true
- name: Upload Grype SARIF
uses: github/codeql-action/upload-sarif@8ed7f7c384ef65d96d422e33fe592d3572522558 # v3.28.15
if: always()
continue-on-error: true # SARIF may be malformed if grype DB was stale
with:
sarif_file: results.sarif