name: Trivy Security Scan on: push: branches: - master pull_request: branches: - master schedule: # Run daily at 00:00 UTC - cron: "0 0 * * *" workflow_dispatch: # Allow manual trigger permissions: contents: read security-events: write # Required for uploading SARIF results jobs: trivy-scan: name: Trivy Security Scan runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v6 with: fetch-depth: 0 - name: Run Trivy vulnerability scanner (source code) uses: aquasecurity/trivy-action@0.34.2 with: scan-type: "fs" scan-ref: "." scanners: "vuln,secret,misconfig" format: "sarif" output: "trivy-results.sarif" severity: "CRITICAL,HIGH,MEDIUM" ignore-unfixed: true - name: Upload Trivy results to GitHub Security tab uses: github/codeql-action/upload-sarif@v4 if: always() with: sarif_file: "trivy-results.sarif" - name: Run Trivy scanner (table output for logs) uses: aquasecurity/trivy-action@0.34.2 if: always() with: scan-type: "fs" scan-ref: "." scanners: "vuln,secret,misconfig" format: "table" severity: "CRITICAL,HIGH,MEDIUM" ignore-unfixed: true exit-code: "1"