CI / Core-Modul (Build/Vet/Test) (push) Failing after 3s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Successful in 2s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Failing after 1m2s
CI / Web (dms-browser) (push) Failing after 50s
CI / Web (pdf-viewer) (push) Failing after 42s
CI / Web (shl) (push) Failing after 17s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Failing after 3s
.gitea/workflows/ci.yml deckt Core-Modul, DMS-Modul und die drei Frontend-Pakete (shl, dms-browser, pdf-viewer) ab: Build/Vet/Test mit Testabdeckung, golangci-lint, govulncheck (Go) und npm audit (JS/TS) als Supply-Chain-Scan, reproduzierbarer Artefakt-Build (zweifacher Build + cmp). Läuft auf dem bestehenden act_runner (192.168.1.131, aus QA-07). Neues Merge-Gate dms/scripts/check-security-test-coverage.sh erzwingt Tests für sicherheitsrelevante Pakete (crypto, storage, downloadapi, versioningapi, audittrail) als eigener CI-Job vor dem eigentlichen Testlauf (needs:), mit Selbstbeweis (_selftest.sh), der die Ablehnung bei fehlenden Tests tatsächlich provoziert statt sie nur zu behaupten. Offen und im Prüfprotokoll dokumentiert: NEXARCH_DMS_TEST_DB_PASSWORD als Gitea-Actions-Secret und die Branch-Protection-Regel für main konnten in dieser Sitzung nicht gesetzt werden (Auto-Mode-Classifier blockiert schreibende Zugriffe auf Secret-Store und sicherheitsrelevante Server-/Repo-Einstellungen) - beides erfordert eine einmalige manuelle Aktion einer berechtigten Person. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
28 lines
1.0 KiB
Bash
Executable File
28 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Beweistest fuer das Merge-Gate selbst (FDN-07 Pruefung 5): entfernt testweise
|
|
# alle Tests eines sicherheitsrelevanten Pakets in eine Kopie des Repos und
|
|
# bestaetigt, dass die Gate den Merge dann ablehnt (Exit-Code != 0) -
|
|
# sowie dass sie im Normalfall durchlaesst (Exit-Code 0).
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
WORKDIR=$(mktemp -d)
|
|
trap 'rm -rf "$WORKDIR"' EXIT
|
|
|
|
cp -r "$REPO_ROOT" "$WORKDIR/dms"
|
|
|
|
echo "== Fall 1: unveraendertes Repo -> Gate muss bestehen =="
|
|
if ! bash "$WORKDIR/dms/scripts/check-security-test-coverage.sh"; then
|
|
echo "FEHLER: Gate schlug im Normalfall fehl (falsch-positiv)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "== Fall 2: Tests von internal/crypto entfernt -> Gate muss ablehnen =="
|
|
rm -f "$WORKDIR"/dms/internal/crypto/*_test.go
|
|
if bash "$WORKDIR/dms/scripts/check-security-test-coverage.sh"; then
|
|
echo "FEHLER: Gate liess Merge ohne Sicherheitstests durch (falsch-negativ)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Beweistest bestanden: Gate lehnt fehlende Sicherheitstests technisch ab."
|