|
All checks were successful
CI (self-validation) / validate (push) Successful in 3s
Forgejo/act_runner only supports `inputs`/`outputs` under `workflow_call`,
NOT `secrets`. The secrets-block (added in
|
||
|---|---|---|
| .forgejo/workflows | ||
| examples | ||
| README.md | ||
ci-workflows
Zentrale, wiederverwendbare Forgejo-Actions-Workflows fuer die vr6syncro-Flotte.
⚠️ Dieses Repo ist absichtlich
public. Forgejo (>= v15) unterstuetzt reusable workflows nur aus public Repos — auch auf der eigenen Instanz. Der Inhalt enthaelt keine Secrets, nur${{ secrets.* }}-Referenzen, die beim Aufruf viasecrets: inheritaus dem aufrufenden (privaten) Repo geerbt werden.
Workflows
.forgejo/workflows/security.yml — Security Scan (reusable)
Trivy-FS (HIGH/CRITICAL) + pip-audit + Node-audit → Forgejo-Issue-Upsert (stabiler Titel, Duplikat-Closer, Auto-Close bei sauberem Scan) + Telegram + Matrix.
Notify nur bei Finding-STATE-Change (kein Chat-Spam)
Der Issue-Marker enthaelt einen Fingerprint des Fund-Zustands:
<!-- security-scan:v2 fp=<sha256> -->. Der Fingerprint ist der sha256 ueber die
sortiert-eindeutigen Fund-Zeilen (CVE-id:package aus Trivy plus je ein
Section-Flag fuer node/pip/osv/misconfig/sast). Pro Lauf:
- Das Issue wird immer in-place ge-PATCHt (Body bleibt aktuell, inkl. neuem
fp). - Telegram + Matrix feuern nur, wenn das Issue neu ist oder der gespeicherte
fpvom neuen abweicht (Funde geaendert / eskaliert) →CHANGED=1. Ein unveraenderter Fund-Satz aktualisiert das Issue still und pingt den Chat nicht erneut. pull_request-Laeufe sind report-only: kein Issue-Upsert, kein Chat, kein Close — Funde erscheinen nur im Run-Log. (Scan-Gategithub.event_name != 'pull_request'.)- Auto-Close benachrichtigt einmalig: wenn der Resolve-Schritt >= 1 Issue schliesst, geht eine „✅ Security findings resolved"-Nachricht raus; bei nichts Offenem bleibt es still.
push + pull_request decken jede echte Code-Aenderung ab; der Schedule im Caller
ist daher von taeglich auf woechentlich (Mo) reduziert (reines Safety-Net).
Die Scan-/Upsert-Logik ist abgeleitet von der canonical security.yml v2.1.0
(orgamaster); der on:/env:-Block wurde durch workflow_call-Inputs ersetzt und
die Notify-Seite um das fp-Gating + PR-Report-only ergaenzt.
Inputs (alle optional, Defaults = Kanon):
| 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) |
Secrets / Vars (via secrets: inherit, org/user-level vererbt):
GITHUB_TOKEN (auto), TELEGRAM_BOT_TOKEN/_CHAT_ID, MATRIX_BOT_TOKEN/_ROOM_ID,
Variable MATRIX_HOMESERVER. Fehlt ein Kanal → er wird still uebersprungen.
Verwendung (thin caller)
In jedem Repo .forgejo/workflows/security.yml durch den Caller aus
examples/security-caller.yml ersetzen.
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"
Versionierung / Pinning
@main= immer aktuellste Logik (gewollt fuer einen Security-Scanner).- Fuer reproduzierbare Builds stattdessen einen Tag pinnen, z.B.
@v2. - Voraussetzung: Forgejo >= 15 + Runner > 12.5 (reusable workflow expansion). Flotte ist auf Forgejo 15.0.2 + Runner 12.10.2 (Stand 2026-05-31). ✅