Dieses Repository enthält wiederverwendbare GitLab CI/CD-Templates für Trivy-Sicherheitsscans.
trivy-scanning.template.yaml
- ✅ Empfohlenes Haupttemplate für Trivy-Scans (Image + Filesystem + alle Scanner-Typen)config-checks.template.yaml
-⚠️ DEPRECATED - Nutze stattdessentrivy-scanning.template.yaml
license-checks.template.yaml
-⚠️ DEPRECATED - Nutze stattdessentrivy-scanning.template.yaml
security-checks.template.yaml
-⚠️ DEPRECATED - Nutze stattdessentrivy-scanning.template.yaml
WICHTIG: Die individuellen Template-Dateien (config-checks
, license-checks
, security-checks
) sind jetzt VERALTET.
Bitte migriere zum neuen unified trivy-scanning.template.yaml
, welches bietet:
- Bessere Plugin-Architektur
- Flexiblere Konfigurationsoptionen
- Einheitlicher Scanning-Ansatz
- Zukunftssicheres Design
Die veralteten Templates zeigen Migrationsanleitungen bei der Verwendung an.
Um eine trivyignore Datei im YAML-Format nutzen zu können, muss die Variable TRIVY_IGNOREFILE
gesetzt sein
und den korrekten Pfad relativ zum Repository-Root enthalten, da trivy YAML-Ignorefiles nicht automatisch lädt.
Pfade im YAML-Ignorefile werden von trivy relativ zum Verzeichnis aus der DIRECTORY
Variable interpretiert,
eventuell müssen die Pfade angepasst werden.
Vergleiche dazu die Pfade in der Fehlertabelle mit denen im Ignore-File.
Binde die Templates in deine .gitlab-ci.yml
ein:
include:
- remote: 'https://github.com/ambient-innovation/gitlab-trivy-codequality-template/releases/download/v25.08.05.0/trivy-scanning.template.yaml'
stages:
- test
# Verwende das Template
trivy-scan:
extends: .trivy_scanning
variables:
IMAGE: "my-app:latest"
DIRECTORY: "./"
PLUGIN_SEVERITY: "HIGH,CRITICAL"
Das Haupttemplate trivy-scanning.template.yaml
unterstützt folgende Variablen:
IMAGE
: Docker-Image das gescannt werden soll (optional)DIRECTORY
: Verzeichnis für Filesystem-Scan (Standard: "./")FILENAME
: Name der CodeQuality-Ausgabedatei (Standard: "gl-codeclimate-$CI_JOB_NAME_SLUG.json")
TRIVY_CONFIG_MERGE
: Aktiviert/deaktiviert das Merging von Konfigurationsdateien (Standard: "true")TRIVY_TEMPLATE_CONFIG_URL
: URL zur Template-Konfigurationsdatei (Standard: GitHub Repository)LOCAL_TRIVY_CONFIG
: Pfad zur lokalen Trivy-Konfiguration (Standard: "trivy.yaml")MERGED_TRIVY_CONFIG
: Pfad zur zusammengeführten Konfigurationsdatei
Das Template lädt automatisch eine trivy.default.yaml
vom Repository herunter und kombiniert sie mit einer lokalen trivy.yaml
falls vorhanden. Die lokale Konfiguration überschreibt dabei die Template-Einstellungen.
PLUGIN_SEVERITY
: Severity-Level (z.B. "HIGH,CRITICAL")PLUGIN_SEVERITY_LICENSE
: Severity für Lizenz-IssuesPLUGIN_SEVERITY_VULN
: Severity für VulnerabilitiesPLUGIN_SEVERITY_MISCONFIG
: Severity für MisconfigurationsPLUGIN_SEVERITY_SECRET
: Severity für SecretsPLUGIN_PKG_TYPES
: Package-Typen die gescannt werden sollenPLUGIN_DEBUG
: Debug-Modus aktivierenPLUGIN_TABLE
: Tahellen-Ausgabe der Ergebnisse anzeigen
# 1. Lade die trivy.default.yaml herunter (einmalig):
# curl -o trivy.yaml https://github.com/ambient-innovation/gitlab-trivy-codequality-template/releases/download/v25.08.05.0/trivy.default.yaml
# 2. Passe trivy.yaml nach deinen Bedürfnissen an
# 3. Verwende das Template:
trivy-full-scan:
extends: .trivy_scanning
variables:
IMAGE: "my-app:latest"
DIRECTORY: "./"
# Die lokale trivy.yaml wird automatisch mit der Template-Konfiguration gemerged
trivy-simple-scan:
extends: .trivy_scanning
variables:
IMAGE: "my-app:latest"
DIRECTORY: "./"
PLUGIN_SEVERITY: "HIGH,CRITICAL"
trivy-no-merge:
extends: .trivy_scanning
variables:
IMAGE: "my-app:latest"
TRIVY_CONFIG_MERGE: "false" # Deaktiviert das Config-Merging
PLUGIN_SEVERITY: "HIGH,CRITICAL"
trivy-image-scan:
extends: .trivy_scanning
variables:
IMAGE: "registry.example.com/my-app:$CI_COMMIT_SHA"
PLUGIN_SEVERITY: "HIGH,CRITICAL"
trivy-fs-scan:
extends: .trivy_scanning
variables:
DIRECTORY: "./src"
PLUGIN_SEVERITY: "MEDIUM,HIGH,CRITICAL"
trivy-config-scan:
extends: .trivy_scanning
variables:
DIRECTORY: "./"
PLUGIN_SEVERITY_MISCONFIG: "MEDIUM,HIGH,CRITICAL,UNKNOWN"
PLUGIN_PKG_TYPES_MISCONFIG: "all"
trivy-license-scan:
extends: .trivy_scanning
variables:
IMAGE: "my-app:latest"
PLUGIN_SEVERITY_LICENSE: "HIGH,CRITICAL,UNKNOWN"
PLUGIN_PKG_TYPES_LICENSE: "library,os"
trivy-security-scan:
extends: .trivy_scanning
variables:
IMAGE: "my-app:latest"
DIRECTORY: "./"
PLUGIN_SEVERITY_VULN: "HIGH,CRITICAL"
PLUGIN_SEVERITY_MISCONFIG: "HIGH,CRITICAL"
PLUGIN_PKG_TYPES_VULN: "os,library"
Dieses Projekt verwendet Calendar Versioning (CalVer) im Format YY.MM.DD.MICRO
:
- YY: Jahr (z.B. 24 für 2024)
- MM: Monat (01-12)
- DD: Tag (01-31)
- MICRO: Tagesversion (0, 1, 2, ...)
Wichtig: Jedes Release stellt sicher, dass alle Template-Dateien konsistent sind:
- Das
trivy-scanning.template.yaml
eines Releases referenziert immer dietrivy.default.yaml
aus demselben Release - Keine Abhängigkeiten zu
main
Branch Dateien in Released Templates - Garantierte Kompatibilität zwischen Template und Konfigurationsdateien
# ✅ Empfohlen: Spezifische Version verwenden
include:
- remote: 'https://github.com/ambient-innovation/gitlab-trivy-codequality-template/releases/download/v25.08.05.0/trivy-scanning.template.yaml'
Releases werden automatisch erstellt wenn:
- Änderungen an Template-Dateien gepusht werden
- Manuell über GitHub Actions ausgelöst wird
Die neueste Version findest du unter Releases.
Dieses Projekt verwendet ein automatisiertes Release Notes System:
- 📝 CHANGELOG.md - Alle Änderungen werden im
[Unreleased]
Abschnitt dokumentiert - 🤖 Automatische Extraktion - Release Notes werden automatisch aus dem Changelog generiert
- 🔄 Auto-Update - Nach einem Release wird das Changelog für die nächste Version vorbereitet
Siehe CONTRIBUTING.md für Details zum Workflow.
- Repository klonen
- Änderungen an Templates vornehmen
- Wichtig: Änderungen in
CHANGELOG.md
dokumentieren - Commit und Push löst automatisch neues Release aus
Ein Release kann manuell über GitHub Actions ausgelöst werden:
- Gehe zu "Actions" → "Create Release with CalVer"
- Klicke auf "Run workflow"
- Wähle den Branch und setze "Force create release" falls nötig
- GitLab CI/CD
- Trivy Scanner (wird automatisch installiert)
jq
für JSON-Verarbeitung (wird automatisch installiert)
- Fork das Repository
- Erstelle einen Feature-Branch
- Committe deine Änderungen
- Erstelle einen Pull Request
Dieses Projekt steht unter der Apache License 2.0 - siehe LICENSE für Details.