GitLab¶
Detaillierter Leitfaden fĂŒr die Integration mit GitLab CI.
Tokens¶
Personal Access Token (PAT)¶
Empfohlen fĂŒr alle GitLab-PlĂ€ne (einschlieĂlich Free).
CI_JOB_TOKEN funktioniert nicht
GitLabs automatischer CI_JOB_TOKEN kann keine Kommentare zu Merge Requests posten
(die Notes API erfordert den api-Scope, den CI_JOB_TOKEN nicht hat).
Sie mĂŒssen einen Personal Access Token oder Project Access Token verwenden.
So erstellen Sie einen PAT:
- Gehen Sie zu User Settings â Access Tokens â Add new token
- URL:
https://gitlab.com/-/user_settings/personal_access_tokens
- URL:
- FĂŒllen Sie die Felder aus:
- Token name:
ai-code-reviewer - Expiration date: nach Bedarf festlegen (z.B. 1 Jahr)
- Scopes: aktivieren Sie
api
- Token name:
- Klicken Sie auf Create personal access token
- Kopieren Sie den Token sofort â GitLab zeigt ihn nur einmal!
Verwendung in CI:
- Gehen Sie zu Settings â CI/CD â Variables â Add variable
-
Variable hinzufĂŒgen:
- Key:
AI_REVIEWER_GITLAB_TOKEN - Value: fĂŒgen Sie Ihren Token ein
- Flags: aktivieren Sie Masked,
deaktivieren Sie Protected
Die Variable wird automatisch an alle Jobs vererbt â kein YAML
variables:Mapping nötig. - Key:
«Protected» deaktivieren!
StandardmĂ€Ăig markiert GitLab neue Variablen als Protected. Protected-Variablen sind nur in geschĂŒtzten Branches verfĂŒgbar (z.B. main).
MR-Pipelines laufen auf ungeschĂŒtzten Source-Branches â die Variable ist dann leer und Sie erhalten 401 Unauthorized.
Deaktivieren Sie immer «Protected» fĂŒr AI_REVIEWER_GITLAB_TOKEN und AI_REVIEWER_GOOGLE_API_KEY.
Token speichern
GitLab zeigt den Token nur einmal an. Speichern Sie ihn sofort an einem sicheren Ort.
Project Access Token ( Premium/Ultimate)¶
Nur verfĂŒgbar mit GitLab Premium und Ultimate PlĂ€nen. Eine gute Wahl, wenn Sie einen projektbezogenen Token anstelle eines persönlichen bevorzugen.
Vorteile gegenĂŒber PAT:
- Auf ein einzelnes Projekt beschrÀnkt (kein Zugriff auf andere Projekte)
- Kann von Projekt-Maintainern widerrufen werden (keine AbhÀngigkeit von einem bestimmten Benutzer)
- Besser fĂŒr Teams â nicht an ein persönliches Konto gebunden
So erstellen Sie einen Project Access Token:
- Gehen Sie zu Project â Settings â Access Tokens
- URL:
https://gitlab.com/<owner>/<repo>/-/settings/access_tokens
- URL:
- FĂŒllen Sie die Felder aus:
- Token name:
ai-code-reviewer - Role:
Developer(Minimum erforderlich) - Scopes: aktivieren Sie
api
- Token name:
- Klicken Sie auf Create project access token
- Kopieren Sie den Token sofort
Verwendung in CI:
Gleich wie PAT â als AI_REVIEWER_GITLAB_TOKEN in CI/CD Variables hinzufĂŒgen:
- Key:
AI_REVIEWER_GITLAB_TOKEN - Value: fĂŒgen Sie Ihren Project Access Token ein
Welchen Token wÀhlen?
| Personal Access Token | Project Access Token | |
|---|---|---|
| Plan | Alle (einschlieĂlich Free) | Nur Premium/Ultimate |
| Einrichtung | Manuell | Manuell |
| Geltungsbereich | Alle Projekte des Benutzers | Einzelnes Projekt |
| Inline-Kommentare | ||
| Am besten fĂŒr | Free-Plan + volle Funktionen | Teams mit Premium/Ultimate |
CI/CD-Variablen¶
Variablen hinzufĂŒgen¶
Settings â CI/CD â Variables â Add variable
| Variable | Wert | Optionen |
|---|---|---|
AI_REVIEWER_GOOGLE_API_KEY |
Gemini API-SchlĂŒssel | |
AI_REVIEWER_GITLAB_TOKEN |
Personal / Project Access Token |
Masked
Aktivieren Sie immer Masked fĂŒr Secrets â sie werden nicht in Logs angezeigt.
Trigger¶
Empfohlener Trigger¶
Dies fĂŒhrt den Job nur fĂŒr Merge-Request-Pipelines aus.
Alternativer Trigger (only/except)¶
rules vs only
rules â neuere Syntax, von GitLab empfohlen.
Job-Beispiele¶
Minimal¶
ai-review:
image: ghcr.io/konstziv/ai-code-reviewer:1
script:
- ai-review
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
CI/CD-Variablen AI_REVIEWER_GOOGLE_API_KEY und AI_REVIEWER_GITLAB_TOKEN werden automatisch vererbt.
VollstĂ€ndig (empfohlen)¶
ai-review:
image: ghcr.io/konstziv/ai-code-reviewer:1
stage: test
script:
- ai-review
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
allow_failure: true
timeout: 10m
variables:
AI_REVIEWER_LANGUAGE: uk
AI_REVIEWER_LANGUAGE_MODE: adaptive
interruptible: true
Was es bewirkt:
allow_failure: trueâ MR wird nicht blockiert, wenn Review fehlschlĂ€gttimeout: 10mâ maximal 10 Minuteninterruptible: trueâ kann bei neuem Commit abgebrochen werden
Mit benutzerdefinierter Stage¶
stages:
- test
- review
- deploy
ai-review:
stage: review
image: ghcr.io/konstziv/ai-code-reviewer:1
script:
- ai-review
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
needs: [] # Nicht auf vorherige Stages warten
Self-hosted GitLab¶
Konfiguration¶
Docker Registry¶
Wenn Ihr GitLab keinen Zugriff auf ghcr.io hat, erstellen Sie einen Mirror:
# Auf einer Maschine mit Zugriff
docker pull ghcr.io/konstziv/ai-code-reviewer:1
docker tag ghcr.io/konstziv/ai-code-reviewer:1 \
gitlab.mycompany.com:5050/devops/ai-code-reviewer:latest
docker push gitlab.mycompany.com:5050/devops/ai-code-reviewer:latest
GitLab CI-Variablen¶
AI Code Reviewer verwendet automatisch:
| Variable | Beschreibung |
|---|---|
CI_PROJECT_PATH |
owner/repo |
CI_MERGE_REQUEST_IID |
MR-Nummer |
CI_SERVER_URL |
GitLab-URL |
Sie mĂŒssen --repo und --pr nicht ĂŒbergeben â sie werden automatisch aus CI ĂŒbernommen.
Variable-gesteuerte Konfiguration¶
Verwenden Sie CI/CD Variables, um zwischen LLM-Anbietern und Modellen zu wechseln, ohne .gitlab-ci.yml zu Ă€ndern. Dies ist nĂŒtzlich, um die Review-QualitĂ€t verschiedener Modelle am selben MR zu vergleichen.
Einrichtung¶
CI/CD Variables (Settings â CI/CD â Variables):
| Variable | Beschreibung | Optionen |
|---|---|---|
AI_REVIEWER_GOOGLE_API_KEY |
Gemini API-SchlĂŒssel | |
AI_REVIEWER_MISTRAL_API_KEY |
Mistral API-SchlĂŒssel | |
AI_REVIEWER_GITLAB_TOKEN |
GitLab-Token | |
AI_REVIEWER_LLM_PROVIDER |
PrimÀrer Anbieter (google, mistral) |
|
AI_REVIEWER_LLM_FALLBACK_PROVIDER |
Fallback-Anbieter | |
AI_REVIEWER_MISTRAL_MODEL |
Mistral-Modell | |
AI_REVIEWER_MISTRAL_API_URL |
Benutzerdefinierte API-URL (fĂŒr Codestral Free Tier) |
Job-Konfiguration¶
ai-review:
image: ghcr.io/konstziv/ai-code-reviewer:1
stage: review
script:
- ai-review
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
allow_failure: true
interruptible: true
Kein variables:-Abschnitt nötig â alle AI_REVIEWER_* CI/CD-Variablen werden automatisch vererbt.
Presets umschalten¶
Ăndern Sie die CI/CD Variables in der GitLab-OberflĂ€che und klicken Sie auf Retry fĂŒr die Pipeline desselben MR:
| Preset | AI_REVIEWER_LLM_PROVIDER |
AI_REVIEWER_MISTRAL_MODEL |
AI_REVIEWER_MISTRAL_API_URL |
AI_REVIEWER_LLM_FALLBACK_PROVIDER |
|---|---|---|---|---|
| Gemini (Standard) | google |
(leer) | (leer) | (leer) |
| Mistral Large | mistral |
mistral-large-latest |
(leer) | google |
| Codestral Free | mistral |
codestral-latest |
https://codestral.mistral.ai |
google |
| Devstral | mistral |
devstral-latest |
(leer) | google |
Codestral Free Tier SchlĂŒssel
FĂŒr das Preset âCodestral Free" muss AI_REVIEWER_MISTRAL_API_KEY einen SchlĂŒssel von codestral.mistral.ai enthalten, nicht von console.mistral.ai.
Kein Hardcoding im YAML nötig
Anders als bei GitHub Actions (wo Inputs explizit zugeordnet werden mĂŒssen) ĂŒbergibt GitLab CI automatisch alle CI/CD-Variablen als Umgebungsvariablen. Setzen Sie sie einfach in der OberflĂ€che â die Anwendung erkennt sie ĂŒber das PrĂ€fix AI_REVIEWER_*.
Review-Ergebnis¶
Notes (Kommentare)¶
AI Review postet Kommentare zum MR als Notes.
Discussions (Inline)¶
FĂŒr Inline-Kommentare benötigen Sie einen Personal Access Token oder Project Access Token mit api-Scope.
Inline-Kommentare erscheinen direkt neben Code-Zeilen in der Diff-Ansicht.
Zusammenfassung¶
Am Ende des Reviews wird eine Zusammenfassungs-Note gepostet mit:
- Gesamtstatistik
- Metriken
- Gute Praktiken
Fehlerbehebung¶
Review postet keine Kommentare¶
ĂberprĂŒfen:
AI_REVIEWER_GOOGLE_API_KEY-Variable ist gesetztAI_REVIEWER_GITLAB_TOKENhat ausreichende Berechtigungen (Scope:api)- Pipeline lĂ€uft fĂŒr MR (nicht fĂŒr einen Branch)
"401 Unauthorized"¶
Ursache: UngĂŒltiger Token.
Lösung:
- ĂberprĂŒfen Sie, ob der Token nicht abgelaufen ist
- ĂberprĂŒfen Sie den Scope (benötigt
api)
"403 Forbidden"¶
Ursache: Unzureichende Berechtigungen.
Lösung:
- ĂberprĂŒfen Sie, ob der Token den
api-Scope hat - ĂberprĂŒfen Sie, ob der Token Zugriff auf das Projekt hat
"404 Not Found"¶
Ursache: MR nicht gefunden.
Lösung:
- ĂberprĂŒfen Sie, ob die Pipeline fĂŒr MR lĂ€uft
- ĂberprĂŒfen Sie
CI_MERGE_REQUEST_IID
Rate Limit (429)¶
Ursache: API-Limit ĂŒberschritten.
Lösung:
- AI Code Reviewer wiederholt automatisch mit Backoff
- Bei anhaltendem Problem â warten oder Limits erhöhen
Best Practices¶
1. PAT fĂŒr volle FunktionalitĂ€t verwenden¶
2. allow_failure hinzufĂŒgen¶
MR wird nicht blockiert, wenn Review fehlschlÀgt.
3. Timeout setzen¶
4. Job unterbrechbar machen¶
Altes Review wird bei neuem Commit abgebrochen.
5. Nicht auf andere Stages warten¶
Review startet sofort, ohne auf Build/Test zu warten.