xpeditis2.0/scripts/ci/security-audit.sh
David 99e01f97fc
Some checks failed
Dev CI / Security gate (push) Successful in 31s
Dev CI / Backend — Lint (push) Successful in 1m8s
Dev CI / Frontend — Lint & Type-check (push) Successful in 1m14s
Dev CI / Backend — Unit Tests (push) Successful in 1m10s
Dev CI / Frontend — Unit Tests (push) Successful in 46s
Dev CI / Notify Failure (push) Has been skipped
CD Preprod / Security gate (push) Successful in 29s
CD Preprod / Backend — Lint (push) Successful in 1m7s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 1m13s
CD Preprod / Backend — Unit Tests (push) Successful in 1m6s
CD Preprod / Frontend — Unit Tests (push) Successful in 44s
CD Preprod / Backend — Integration Tests (push) Failing after 37s
CD Preprod / Build Log Exporter (push) Has been skipped
CD Preprod / Image security (${{ matrix.service }}, ${{ matrix.arch }}) (amd64, backend) (push) Has been skipped
CD Preprod / Build Backend (push) Has been skipped
CD Preprod / Build Frontend (push) Has been skipped
CD Preprod / Image security (${{ matrix.service }}, ${{ matrix.arch }}) (amd64, frontend) (push) Has been skipped
CD Preprod / Image security (${{ matrix.service }}, ${{ matrix.arch }}) (amd64, log-exporter) (push) Has been skipped
CD Preprod / Image security (${{ matrix.service }}, ${{ matrix.arch }}) (arm64, backend) (push) Has been skipped
CD Preprod / Image security (${{ matrix.service }}, ${{ matrix.arch }}) (arm64, frontend) (push) Has been skipped
CD Preprod / Image security (${{ matrix.service }}, ${{ matrix.arch }}) (arm64, log-exporter) (push) Has been skipped
CD Preprod / Deploy to Preprod (push) Has been skipped
CD Preprod / Notify Success (push) Has been skipped
CD Preprod / Notify Failure (push) Has been skipped
fix
2026-09-24 21:32:47 +02:00

35 lines
1.4 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
reports="${RUNNER_TEMP:?}/security-reports"
mkdir -p "$reports"
failed=0
for project in root backend frontend log-exporter; do
directory=.
[[ "$project" == root ]] || directory="apps/$project"
if ! (cd "$directory" && timeout 10m npm audit --package-lock-only --audit-level=high --json) > "$reports/npm-audit-$project.json"; then
echo "Dependency audit failed: $project (see report)"
failed=1
fi
done
source_dir=$(mktemp -d "$RUNNER_TEMP/security-source.XXXXXX")
git archive HEAD | tar -x -C "$source_dir"
echo "Scoped monitoring exceptions: .trivyignore.yaml (see expiration dates in that file)"
if ! trivy fs --scanners secret,misconfig --severity HIGH,CRITICAL --exit-code 1 \
--ignorefile "$source_dir/.trivyignore.yaml" --timeout 10m --format json --output "$RUNNER_TEMP/source-security-raw.json" "$source_dir"; then
failed=1
fi
python3 - <<'PYTHON'
import json, os
from pathlib import Path
raw = Path(os.environ['RUNNER_TEMP']) / 'source-security-raw.json'
if not raw.exists():
raise SystemExit('Source scanner produced no report')
report = json.loads(raw.read_text())
for result in report.get('Results', []):
for secret in result.get('Secrets', []):
secret.pop('Match', None)
secret.pop('Code', None)
(raw.parent / 'security-reports' / 'source-security.json').write_text(json.dumps(report))
PYTHON
exit "$failed"