Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: compare cves to main #2448

Merged
merged 15 commits into from
Apr 24, 2024
33 changes: 33 additions & 0 deletions .github/workflows/compare-cves.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Compare CVEs to main

permissions:
contents: read

on:
pull_request:
paths:
- "go.mod"
- "go.sum"
- "cargo.toml"
- "cargo.lock"

jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
ref: ${{ github.head_ref || github.ref_name }}

- name: fetch main
run: git fetch origin main --depth 1

- name: Setup golang
uses: ./.github/actions/golang

- name: Install tools
uses: ./.github/actions/install-tools

- name: Check for CVEs in Dependencies
run: "hack/check-vulnerabilities.sh"
6 changes: 0 additions & 6 deletions .github/workflows/scan-cves.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,6 @@ permissions:
on:
schedule:
- cron: "0 10 * * *"
pull_request:
paths:
- "go.mod"
- "go.sum"
- "cargo.toml"
- "cargo.lock"

jobs:
validate:
Expand Down
30 changes: 30 additions & 0 deletions hack/check-vulnerabilities.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/env bash

set -euo pipefail

MAIN_BRANCH="main"
TARGET_BRANCH=$(git rev-parse --abbrev-ref HEAD)
echo "target branch is $TARGET_BRANCH"

mkdir -p build

git checkout $MAIN_BRANCH
go run main.go tools sbom scan . -o json --exclude './site' --exclude './examples' > build/main-syft.json

git checkout $TARGET_BRANCH
cat build/main-syft.json | grype -o template -t hack/compare.tmpl > build/main.json
go run main.go tools sbom scan . -o json --exclude './site' --exclude './examples' | grype -o template -t hack/compare.tmpl > build/target.json


result=$(jq --slurp '.[0] - .[1]' build/target.json build/main.json | jq '[.[] | select(.severity != "Low" and .severity != "Medium")]')

echo "CVEs on $MAIN_BRANCH are $(cat build/main.json | jq )"
echo "CVEs on $TARGET_BRANCH are $(cat build/target.json | jq)"

if [[ "$result" == "[]" ]]; then
echo "no new vulnerabilities on $TARGET_BRANCH"
exit 0
else
echo "new CVEs have been added with IDs $result"
exit 1
fi
7 changes: 7 additions & 0 deletions hack/compare.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[
{{- $length := len .Matches -}}
{{- range $index, $match := .Matches -}}
{ "id": "{{$match.Vulnerability.ID}}", "severity": "{{$match.Vulnerability.Severity}}" }
{{ if lt (add $index 1) $length }},{{ end }}
{{- end -}}
]
Loading