1
Setup
vr6syncro edited this page 2026-07-06 20:52:37 +02:00
Setup
Einbindung als thin caller
In jedem Repo .forgejo/workflows/security.yml durch die Vorlage aus
examples/security-caller.yml ersetzen. Pro Repo werden nur die with:-Werte angepasst.
name: Security Scan
on:
schedule:
- cron: "23 4 * * 1" # woechentliches Safety-Net (Mo 04:23)
push:
branches: [main, master]
pull_request:
workflow_dispatch:
permissions:
contents: read
issues: write
jobs:
security:
uses: vr6syncro/ci-workflows/.forgejo/workflows/security.yml@main
secrets: inherit
with:
severity: "HIGH,CRITICAL"
auto_close: true
notify_min_sev: "HIGH"
notify_targets: "matrix,telegram"
Fuer das Hardened-Profil stattdessen security-hardened.yml referenzieren und bei Bedarf
sast: true setzen.
Inputs
security.yml / security-hardened.yml
| Input | Default | Zweck |
|---|---|---|
severity |
HIGH,CRITICAL |
Trivy-Severities |
auto_close |
true |
false = Issues nie auto-schliessen (NestRelay-Variante) |
notify_min_sev |
HIGH |
HIGH | CRITICAL — Notify-Schwelle |
notify_targets |
matrix,telegram |
Komma-Liste: matrix, telegram (oder einer / leer) |
sast |
false |
nur Hardened: Bandit/ShellCheck/cppcheck aktivieren |
promotion-gate.yml
| Input | Default | Zweck |
|---|---|---|
min_license_bytes |
100 |
Mindestgroesse fuer LICENSE |
min_doc_bytes |
200 |
Mindestgroesse fuer README/SECURITY/CONTRIBUTING |
Secrets / Vars
Via secrets: inherit (org/user-level vererbt):
GITHUB_TOKEN(automatisch bereitgestellt)TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_IDMATRIX_BOT_TOKEN,MATRIX_ROOM_ID- Variable
MATRIX_HOMESERVER
Fehlt ein Kanal, wird er still uebersprungen. Secret-Werte gehoeren nie ins Repo.
Voraussetzungen
- Forgejo >= 15 + Runner > 12.5 (reusable workflow expansion). Flotte: Forgejo 15.0.2 + Runner 12.10.2 (Stand 2026-05-31).
- Trivy wird zur Laufzeit beschafft (apt-signed-Repo mit Retries, dann gepinntes, checksum-verifiziertes Release-Binary als Fallback). OSV-Scanner/Hadolint kommen als Binaries von GitHub Releases (nur Download, keine Action).
Self-CI
.forgejo/workflows/ci.yml laeuft bei jedem push/pull_request gegen main und
validiert vor jedem @main-Rollout: YAML-Parse aller Workflows, yamllint (relaxed),
die Report-jq-Regressionen (non-CVE-Vuln, committetes Secret, Clean-Scan = 0) sowie das
workflow_call-Parse-Gate (kein verbotener secrets:-Block).
Versionierung / Pinning
@main= immer aktuellste Logik (gewollt fuer einen Security-Scanner).- Fuer reproduzierbare Builds einen Tag pinnen, z.B.
@v2.