Add detailed security status reporting
pauljd/davidson-ci: Davidson CI / quality (push) Successful in 14s

This commit is contained in:
2026-09-08 17:28:06 +01:00
parent 834f1ddc58
commit 3e0b651607
+66 -10
View File
@@ -1,10 +1,23 @@
#!/bin/bash #!/bin/bash
set -euo pipefail set -u
echo "============================" echo "============================"
echo " Davidson CI - Security" echo " Davidson CI - Security"
echo "============================" echo "============================"
FAIL=0
set_env() {
echo "$1=$2" >> "${GITHUB_ENV:-/dev/null}"
}
# Default states
set_env "DAVIDSON_COMPOSER_AUDIT" "SKIP"
set_env "DAVIDSON_NPM_AUDIT" "SKIP"
set_env "DAVIDSON_SEMGREP" "SKIP"
set_env "DAVIDSON_TRIVY_VULN" "SKIP"
set_env "DAVIDSON_TRIVY_SECRET" "SKIP"
# ------------------------- # -------------------------
# Composer audit # Composer audit
# ------------------------- # -------------------------
@@ -13,9 +26,14 @@ echo
echo "→ Composer security audit" echo "→ Composer security audit"
if [ -f composer.lock ]; then if [ -f composer.lock ]; then
composer audit if composer audit; then
set_env "DAVIDSON_COMPOSER_AUDIT" "PASS"
else else
echo "No composer.lock - skipping Composer audit" set_env "DAVIDSON_COMPOSER_AUDIT" "FAIL"
FAIL=1
fi
else
echo "No composer.lock - skipping"
fi fi
# ------------------------- # -------------------------
@@ -26,9 +44,14 @@ echo
echo "→ npm security audit" echo "→ npm security audit"
if [ -f package-lock.json ]; then if [ -f package-lock.json ]; then
npm audit --audit-level=high if npm audit --audit-level=high; then
set_env "DAVIDSON_NPM_AUDIT" "PASS"
else else
echo "No package-lock.json - skipping npm audit" set_env "DAVIDSON_NPM_AUDIT" "FAIL"
FAIL=1
fi
else
echo "No package-lock.json - skipping"
fi fi
# ------------------------- # -------------------------
@@ -38,39 +61,72 @@ fi
echo echo
echo "→ Semgrep" echo "→ Semgrep"
semgrep scan \ if semgrep scan \
--config=p/security-audit \ --config=p/security-audit \
--error \ --error \
--exclude=node_modules \ --exclude=node_modules \
--exclude=vendor \ --exclude=vendor \
. .
then
set_env "DAVIDSON_SEMGREP" "PASS"
else
set_env "DAVIDSON_SEMGREP" "FAIL"
FAIL=1
fi
# ------------------------- # -------------------------
# Trivy vulnerability scan # Trivy vulnerabilities
# ------------------------- # -------------------------
echo echo
echo "→ Trivy vulnerabilities" echo "→ Trivy vulnerabilities"
trivy fs \ if trivy fs \
--scanners vuln \ --scanners vuln \
--severity HIGH,CRITICAL \ --severity HIGH,CRITICAL \
--exit-code 1 \ --exit-code 1 \
--no-progress \ --no-progress \
. .
then
set_env "DAVIDSON_TRIVY_VULN" "PASS"
else
set_env "DAVIDSON_TRIVY_VULN" "FAIL"
FAIL=1
fi
# ------------------------- # -------------------------
# Trivy secret scan # Trivy secrets
# ------------------------- # -------------------------
echo echo
echo "→ Trivy secrets" echo "→ Trivy secrets"
trivy fs \ if trivy fs \
--scanners secret \ --scanners secret \
--exit-code 1 \ --exit-code 1 \
--no-progress \ --no-progress \
. .
then
set_env "DAVIDSON_TRIVY_SECRET" "PASS"
else
set_env "DAVIDSON_TRIVY_SECRET" "FAIL"
FAIL=1
fi
# -------------------------
# Overall result
# -------------------------
if [ "$FAIL" -eq 0 ]; then
set_env "DAVIDSON_SECURITY_STATUS" "PASS"
echo echo
echo "Security module completed successfully" echo "Security module completed successfully"
exit 0
else
set_env "DAVIDSON_SECURITY_STATUS" "FAIL"
echo
echo "Security module found issues"
exit 1
fi