ci(quick-261009-p0m): Sicherheitspruefung als reiner Bericht in der Pipeline

- Skript .gitea/scripts/security-scan.sh: gitleaks, pnpm audit, osv-scanner, Semgrep, Trivy (Quellstand und Abbilder), angepinnt und per SHA256 geprueft, Exit immer 0
- Job security nach publish (nur main und Tags v*, continue-on-error, Zeitlimit 30 Minuten, kein Secret)
- Ausnahmelisten .gitleaks.toml und .semgrepignore fuer geprueft harmlose Treffer
- docs/ci-cd-setup.md beschreibt den Job

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-10-09 19:20:58 +02:00
parent d15a470c5a
commit 3d00be8292
7 changed files with 782 additions and 3 deletions
+35
View File
@@ -17,6 +17,9 @@
# quick-260917-kgc: Die beiden tauri-build-Schritte signieren die Pakete mit dem
# Updater-Schluessel (Secrets TAURI_SIGNING_PRIVATE_KEY/_PASSWORD, nur an diesen
# zwei Schritten); desktop-collect.sh traegt die .sig-Inhalte ins Manifest.
# quick-261009-p0m: Job `security` (Sicherheitspruefung) laeuft nach `publish`, nur auf
# main und Tags v*, ist reiner Bericht (continue-on-error, nie in einem `needs`, kein
# Secret) und ruft .gitea/scripts/security-scan.sh auf.
name: Tessera CI/CD
on:
@@ -258,3 +261,35 @@ jobs:
env:
GITEA_TOKEN: ${{ secrets.REGISTRY_TOKEN }}
run: sh .gitea/scripts/publish-release.sh
security:
name: Sicherheitspruefung (nur Bericht)
runs-on: ubuntu-latest
needs: publish
# Ausdruecklich noetig: Ein uebersprungener `needs`-Job blockiert in Gitea nicht,
# ohne diese Bedingung liefe der Job auch nach einem Push auf `live` (ohne Abbilder).
if: gitea.ref == 'refs/heads/main' || startsWith(gitea.ref, 'refs/tags/v')
# Reiner Bericht: Ergebnis darf nie etwas blockieren oder den Lauf rot faerben.
continue-on-error: true
# Ein haengender Scan darf den (einzigen) Runner nicht dauerhaft belegen.
timeout-minutes: 30
steps:
# Volle Historie: gitleaks liest alle Commits.
- uses: actions/checkout@v4
with:
fetch-depth: 0
# Kein Secret in diesem Job; das Skript bricht nie ab (siehe docs/ci-cd-setup.md).
- name: Sicherheitspruefungen (nur Bericht)
run: sh .gitea/scripts/security-scan.sh all || true
# actions/upload-artifact@v4 lehnt Gitea ab; v3 ist der laufende Stand.
# Best effort: Die Zeilen SECURITY-SUMMARY im Protokoll genuegen immer.
- name: Berichte als Artefakt ablegen
if: always()
continue-on-error: true
uses: actions/upload-artifact@v3
with:
name: sicherheitsberichte
path: security-reports/
retention-days: 30