Zum Inhalt

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

ai-review:
  # ...
  variables:
    AI_REVIEWER_GITLAB_URL: https://gitlab.mycompany.com

Mit benutzerdefinierter Docker Registry

ai-review:
  # Wenn ghcr.io nicht erreichbar ist
  image: registry.mycompany.com/devops/ai-code-reviewer:latest

Mit DEBUG-Logs

ai-review:
  # ...
  variables:
    AI_REVIEWER_LOG_LEVEL: DEBUG

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

  1. Job-Logs überprüfen
  2. Überprüfen, ob AI_REVIEWER_GITLAB_TOKEN (CI/CD-Variable) den Scope api hat
  3. Ü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"

Nächster Schritt

👉 Konfiguration →