# CI/CD Pipeline – Übersicht

⚠️ Revision 2

## Ziel

Diese Pipeline dient als automatischer Merge-Gate für das CE-Repository.  
Sie stellt sicher, dass Änderungen vor dem Merge:

- syntaktisch korrekt sind
- konsistent formatiert sind
- grundlegende Qualitätsanforderungen erfüllen
- funktional getestet wurden

Zusätzlich reduziert sie Merge-Konflikte durch frühzeitige, kontinuierliche Integration.

## Scope

Diese Version gilt für:

- CE-Repository
- Merge Requests auf: 
    - `main`
    - `release-*`

Die Pipeline läuft als Merged Results Pipeline.  
Sie testet den Code so, wie er nach dem Merge aussehen würde.

## Pipeline-Struktur

Die Pipeline besteht aus zwei Stages:

### 1. Validate

Schnelle Prüfungen:

- Syntax-Check (`perl -c`)
- Whitespace-Check (Tabs, Trailing Spaces)
- Linting (`perlcritic`)

Besonderheit:

- Diese Jobs laufen **nur für geänderte Perl-Dateien** (`.pl`, `.pm`)
- Wenn keine relevanten Dateien geändert wurden, werden die Jobs bewusst übersprungen

Ziel: frühes, automatisiertes Feedback bei grundlegenden Problemen

### 2. Testing

Automatisierte Tests über `t/test.pl` mit PostgreSQL-Service.

Ziel: funktionale Korrektheit automatisch sicherstellen

## Technische Details

- Gemeinsames Docker-Image für alle Jobs
- Lint-Abhängigkeiten (z. B. `perlcritic`) sind im Image enthalten
- Keine Paketinstallation mehr zur Laufzeit der Jobs
- Klare und einheitliche Job-Ausgaben mit: 
    - `START`
    - `FILES`
    - `RESULT`
    - `SUMMARY`

## Merge-Regeln

Ein Merge Request darf nur gemerged werden, wenn:

- keine Merge-Konflikte vorliegen
- die Pipeline erfolgreich ist
- ein Code-Review erfolgt ist
- Testing-Freigabe vorliegt

## Workflow

1. Branch erstellen (`feature/*`, `improvement``/*`, `correction/*`)
2. Merge Request öffnen (frühzeitig)
3. Pipeline läuft automatisch
4. Fehler beheben bis Pipeline grün ist
5. Code Review + QA
6. Merge

## Nicht Bestandteil (Revision 2)

Diese Themen sind aktuell nicht enthalten:

- Review Apps
- Deployments
- Build- oder Packaging-Stages
- Push-Pipelines
- EE-Integration

## Zielwerte

- Pipeline-Laufzeit: ideal &lt; 10 Minuten
- Fokus: schnell, stabil, verständlich

## Ausblick

Mögliche Erweiterungen in späteren Revisionen:

- Release-Pipelines
- Review Apps
- Staging-Deployments
- Integration mit EE-Repository