diff --git a/.gitea/workflows/run-trivy-scan.yaml b/.gitea/workflows/run-trivy-scan.yaml index 4d9c1fa..4c8c634 100644 --- a/.gitea/workflows/run-trivy-scan.yaml +++ b/.gitea/workflows/run-trivy-scan.yaml @@ -23,6 +23,11 @@ on: required: false type: string default: "" + scan-fs: + description: "Run Trivy file system scan on the repository root." + required: false + type: boolean + default: false outputs: merged-sarif-artifact: description: "Artifact name containing the merged SARIF file (download this artifact; file inside is merged-sarif.json)." @@ -110,9 +115,28 @@ jobs: name: image-sarif path: image-sarif.json + fs-scan: + if: inputs.scan-fs + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: https://gitea.t000-n.de/t.behrendt/trivy-actions/setup-trivy@83a7cef9f19e3a5a30311839f99f83690a490cf8 # 1.4.5 + - uses: https://gitea.t000-n.de/t.behrendt/trivy-actions/setup-db@83a7cef9f19e3a5a30311839f99f83690a490cf8 # 1.4.5 + - run: | + server="${{ inputs.trivy-server-url }}" + args=(fs --cache-dir "$TRIVY_CACHE_DIR" --exit-code 0 --format sarif --output fs-sarif.json --scanners vuln .) + [ -n "$server" ] && args+=(--server "$server") + trivy "${args[@]}" + env: + TRIVY_CACHE_DIR: ${{ runner.temp }}/trivy + - uses: https://github.com/ChristopherHX/gitea-upload-artifact@v4 + with: + name: fs-sarif + path: fs-sarif.json + merge: runs-on: ubuntu-latest - needs: [config-scan, image-scan] + needs: [config-scan, image-scan, fs-scan] if: always() && (needs.config-scan.result == 'success' || needs.config-scan.result == 'skipped') && (needs.image-scan.result == 'success' || needs.image-scan.result == 'skipped') && (inputs.scan-config || inputs.scan-images) outputs: merged-sarif-artifact: ${{ steps.outputs.outputs.merged-sarif-artifact }} @@ -145,6 +169,9 @@ jobs: if [ "${{ inputs.scan-images }}" = "true" ] && [ -f image-sarif-artifact/image-sarif.json ]; then [ -n "$files" ] && files="$files"$'\n'" - image-sarif-artifact/image-sarif.json" || files="- image-sarif-artifact/image-sarif.json" fi + if [ "${{ inputs.scan-fs }}" = "true" ] && [ -f fs-sarif-artifact/fs-sarif.json ]; then + [ -n "$files" ] && files="$files"$'\n'" - fs-sarif-artifact/fs-sarif.json" || files="- fs-sarif-artifact/fs-sarif.json" + fi echo "files<> "$GITHUB_OUTPUT" echo "$files" >> "$GITHUB_OUTPUT" echo "EOF" >> "$GITHUB_OUTPUT"