GitLab: Erweitertes Beispiel¶
Produktionsreife Konfiguration mit allen Best Practices.
Schritt 1: PAT erstellen¶
User Settings → Access Tokens → Add new token
| Feld | Wert |
|---|---|
| Name | ai-code-reviewer |
| Scopes | api |
| Ablaufdatum | Nach Bedarf |
Schritt 2: Variablen hinzufügen¶
Settings → CI/CD → Variables
| Name | Wert | Optionen |
|---|---|---|
AI_REVIEWER_GOOGLE_API_KEY |
Gemini API-Schlüssel | Masked |
AI_REVIEWER_GITLAB_TOKEN |
PAT aus Schritt 1 | Masked |
Schritt 3: Job hinzufügen¶
.gitlab-ci.yml:
stages:
- test
- review
# ... andere Jobs ...
ai-review:
stage: review
image: ghcr.io/konstziv/ai-code-reviewer:1
script:
- ai-review
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
# MR nicht blockieren, wenn Review fehlschlägt
allow_failure: true
# Timeout-Schutz
timeout: 10m
# Kann bei neuem Commit abgebrochen werden
interruptible: true
# Nicht auf andere Stages warten
needs: []
variables:
AI_REVIEWER_LANGUAGE: uk
AI_REVIEWER_LANGUAGE_MODE: adaptive
Was enthalten ist¶
| Funktion | Status | Beschreibung |
|---|---|---|
| Inline-Discussions | Mit PAT-Token | |
| Nicht-blockierend | allow_failure: true |
|
| Timeout | 10 Minuten | |
| Unterbrechbar | Bei neuem Commit abgebrochen | |
| Parallele Ausführung | needs: [] |
|
| Benutzerdefinierte Sprache | LANGUAGE: uk |
Variationen¶
Self-hosted GitLab¶
Mit benutzerdefinierter Docker Registry¶
ai-review:
# Wenn ghcr.io nicht erreichbar ist
image: registry.mycompany.com/devops/ai-code-reviewer:latest
Mit DEBUG-Logs¶
Nur für bestimmte Branches¶
ai-review:
# ...
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: always
- if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"
when: always
Fehlerbehebung¶
Review postet keine Kommentare¶
- Job-Logs überprüfen
- Überprüfen, ob
AI_REVIEWER_GITLAB_TOKEN(CI/CD-Variable) den Scopeapihat - Überprüfen, ob die Pipeline für MR läuft
"401 Unauthorized"¶
Token ist ungültig oder abgelaufen. Neuen PAT erstellen.
"403 Forbidden"¶
Token hat keinen Zugriff auf das Projekt. Berechtigungen überprüfen.
Vollständiges .gitlab-ci.yml Beispiel¶
stages:
- lint
- test
- review
- deploy
lint:
stage: lint
image: python:3.13
script:
- pip install ruff
- ruff check .
test:
stage: test
image: python:3.13
script:
- pip install pytest
- pytest
ai-review:
stage: review
image: ghcr.io/konstziv/ai-code-reviewer:1
script:
- ai-review
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
allow_failure: true
timeout: 10m
interruptible: true
needs: []
variables:
AI_REVIEWER_LANGUAGE: uk
deploy:
stage: deploy
script:
- echo "Deploying..."
rules:
- if: $CI_COMMIT_BRANCH == "main"