diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml new file mode 100644 index 0000000..1d85727 --- /dev/null +++ b/.github/workflows/trivy.yml @@ -0,0 +1,47 @@ +name: Trivy + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + schedule: + - cron: '44 1 * * 3' + +permissions: + contents: read + +jobs: + analyze: + permissions: + contents: read + security-events: write + name: Analyze + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set environment variables + run: | + echo IMAGE_NAME=ghcr.io/$REGISTRY/$(echo ${GITHUB_REPOSITORY,,}) >> $GITHUB_ENV + + - name: Build image from Dockerfile + run: | + docker build --build-arg VERSION=$GITHUB_RUN_NUMBER --build-arg REVISION=${{ github.sha }} -t ${{ env.IMAGE_NAME }}:${{ github.sha }} . + + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@7b7aa264d83dc58691451798b4d117d53d21edfe + env: + ACTIONS_RUNTIME_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Addresses https://github.com/aquasecurity/trivy-action/issues/389 + with: + image-ref: '${{ env.IMAGE_NAME }}:${{ github.sha }}' + format: 'template' + template: '@/contrib/sarif.tpl' + output: 'trivy-results.sarif' + severity: 'CRITICAL,HIGH' + + - name: Upload Trivy scan results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: 'trivy-results.sarif'