Skip to content

trivy

trivy #55

Workflow file for this run

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: trivy
on:
push:
branches: [ "master" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ "master" ]
schedule:
- cron: '24 17 * * 1'
permissions:
contents: read
jobs:
build:
permissions:
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
name: Build
runs-on: "ubuntu-20.04"
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Build an image from Dockerfile
run: |
docker build -t docker.io/my-organization/my-app:${{ github.sha }} .
- name: Run Trivy vulnerability scanner
uses: aquasecurity/[email protected]
with:
image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}'
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'CRITICAL,HIGH'
- run: sudo chmod 666 trivy-results.sarif
- uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const sarif = fs.readFileSync('trivy-results.sarif', 'utf8');
const results = JSON.parse(sarif);
results.runs.forEach(run => {
run.results.forEach(result => {
result.locations.forEach(location => {
location.physicalLocation.artifactLocation.uri = 'Dockerfile';
});
});
});
fs.writeFileSync('trivy-results.sarif', JSON.stringify(results, null, 2));
- uses: actions/upload-artifact@v4
with:
name: 'results.sarif'
path: 'trivy-results.sarif'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: 'trivy-results.sarif'