name: Trivy Security Scan
"on":
push:
branches: [main]
pull_request:
branches: [main]
schedule:
# Run every Monday at 7:00 UTC
- cron: '0 7 * * 1'
# Declare minimal permissions for all jobs
permissions: read-all
jobs:
trivy:
name: Trivy Vulnerability Scan
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
steps:
- name: Checkout Repository
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v5
- name: Run Trivy vulnerability scanner in fs mode
uses: aquasecurity/trivy-action@b6643a29fecd7f34b3597bc6acb0a98b03d33ff8 # 0.33.1
with:
scan-type: 'fs'
scan-ref: '.'
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'CRITICAL,HIGH,MEDIUM'
# Scan Python dependencies
scanners: 'vuln,secret,misconfig'
- name: Upload Trivy results to GitHub Security tab
uses: github/codeql-action/upload-sarif@fe4161a26a8629af62121b670040955b330f9af2 # v4
if: always()
with:
sarif_file: 'trivy-results.sarif'
category: 'trivy'