Skip to content

Commit c8e4194

Browse files
Ajit Pratap SinghAjit Pratap Singh
authored andcommitted
fix: handle empty SARIF results without failing security workflows
1 parent baf4fbc commit c8e4194

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

.github/workflows/security.yml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@ jobs:
5656
fi
5757
5858
# Check if file has any error-level results using jq
59-
# Exit code 0 means results found, 1 means no results (which is good), >1 means jq error
60-
if jq -e '.runs[]?.results[]? | select(.level == "error")' gosec-results.sarif > /dev/null 2>&1; then
59+
# We use jq to filter, then check if output is non-empty with grep -q .
60+
# This handles the case where jq returns empty output (no vulnerabilities)
61+
if jq -r '.runs[]?.results[]? | select(.level == "error")' gosec-results.sarif 2>/dev/null | grep -q .; then
6162
echo "❌ High or critical security vulnerabilities found!"
6263
jq -r '.runs[]?.results[]? | select(.level == "error") | " - \(.ruleId): \(.message.text)"' gosec-results.sarif || true
6364
exit 1
@@ -97,8 +98,11 @@ jobs:
9798
exit 1
9899
fi
99100
100-
if jq -e '.runs[]?.results[]? | select(.level == "error" or .level == "warning")' trivy-repo-results.sarif > /dev/null 2>&1; then
101+
# Check if file has any error or warning level results
102+
# We use jq to filter, then check if output is non-empty with grep -q .
103+
if jq -r '.runs[]?.results[]? | select(.level == "error" or .level == "warning")' trivy-repo-results.sarif 2>/dev/null | grep -q .; then
101104
echo "❌ High or critical vulnerabilities found in repository scan!"
105+
jq -r '.runs[]?.results[]? | select(.level == "error" or .level == "warning") | " - \(.ruleId): \(.message.text)"' trivy-repo-results.sarif || true
102106
exit 1
103107
else
104108
echo "✅ No high or critical vulnerabilities found"
@@ -136,8 +140,11 @@ jobs:
136140
exit 1
137141
fi
138142
139-
if jq -e '.runs[]?.results[]? | select(.level == "error" or .level == "warning")' trivy-config-results.sarif > /dev/null 2>&1; then
143+
# Check if file has any error or warning level results
144+
# We use jq to filter, then check if output is non-empty with grep -q .
145+
if jq -r '.runs[]?.results[]? | select(.level == "error" or .level == "warning")' trivy-config-results.sarif 2>/dev/null | grep -q .; then
140146
echo "❌ High or critical configuration issues found!"
147+
jq -r '.runs[]?.results[]? | select(.level == "error" or .level == "warning") | " - \(.ruleId): \(.message.text)"' trivy-config-results.sarif || true
141148
exit 1
142149
else
143150
echo "✅ No high or critical configuration issues found"

0 commit comments

Comments
 (0)