Claude Code für GitLab CI/CD befindet sich derzeit in der Beta-Phase. Funktionen und Funktionalität können sich weiterentwickeln, während wir die Erfahrung verfeinern.Diese Integration wird von GitLab gepflegt. Für Support siehe das folgende GitLab-Problem.
Diese Integration basiert auf der Claude Code CLI und SDK und ermöglicht die programmgesteuerte Nutzung von Claude in Ihren CI/CD-Jobs und benutzerdefinierten Automatisierungs-Workflows.

Warum Claude Code mit GitLab verwenden?

  • Sofortige MR-Erstellung: Beschreiben Sie, was Sie benötigen, und Claude schlägt einen vollständigen MR mit Änderungen und Erklärung vor
  • Automatisierte Implementierung: Verwandeln Sie Probleme mit einem einzigen Befehl oder einer Erwähnung in funktionierenden Code
  • Projektbewusst: Claude folgt Ihren CLAUDE.md-Richtlinien und vorhandenen Code-Mustern
  • Einfaches Setup: Fügen Sie einen Job zu .gitlab-ci.yml und eine maskierte CI/CD-Variable hinzu
  • Enterprise-ready: Wählen Sie Claude API, AWS Bedrock oder Google Vertex AI, um Anforderungen an Datenresidenz und Beschaffung zu erfüllen
  • Standardmäßig sicher: Läuft in Ihren GitLab-Runnern mit Ihrem Branch-Schutz und Genehmigungen

Wie es funktioniert

Claude Code verwendet GitLab CI/CD, um KI-Aufgaben in isolierten Jobs auszuführen und Ergebnisse über MRs zurückzuschreiben:
  1. Ereignisgesteuerte Orchestrierung: GitLab lauscht auf Ihre gewählten Trigger (zum Beispiel ein Kommentar, der @claude in einem Problem, MR oder Review-Thread erwähnt). Der Job sammelt Kontext aus dem Thread und Repository, erstellt Prompts aus dieser Eingabe und führt Claude Code aus.
  2. Provider-Abstraktion: Verwenden Sie den Provider, der zu Ihrer Umgebung passt:
    • Claude API (SaaS)
    • AWS Bedrock (IAM-basierter Zugriff, regionsübergreifende Optionen)
    • Google Vertex AI (GCP-nativ, Workload Identity Federation)
  3. Sandboxed-Ausführung: Jede Interaktion läuft in einem Container mit strikten Netzwerk- und Dateisystem-Regeln. Claude Code erzwingt Workspace-bezogene Berechtigungen, um Schreibvorgänge einzuschränken. Jede Änderung fließt durch einen MR, damit Reviewer den Diff sehen und Genehmigungen weiterhin gelten.
Wählen Sie regionale Endpunkte, um die Latenz zu reduzieren und Anforderungen an die Datensouveränität zu erfüllen, während Sie vorhandene Cloud-Vereinbarungen nutzen.

Was kann Claude tun?

Claude Code ermöglicht leistungsstarke CI/CD-Workflows, die verändern, wie Sie mit Code arbeiten:
  • Erstellen und aktualisieren Sie MRs aus Problembeschreibungen oder Kommentaren
  • Analysieren Sie Performance-Regressionstests und schlagen Sie Optimierungen vor
  • Implementieren Sie Funktionen direkt in einem Branch und öffnen Sie dann einen MR
  • Beheben Sie Fehler und Regressionstests, die durch Tests oder Kommentare identifiziert wurden
  • Antworten Sie auf Folgekommentare, um auf angeforderte Änderungen zu iterieren

Setup

Schnelles Setup

Der schnellste Weg zum Einstieg ist, einen minimalen Job zu Ihrer .gitlab-ci.yml hinzuzufügen und Ihren API-Schlüssel als maskierte Variable festzulegen.
  1. Fügen Sie eine maskierte CI/CD-Variable hinzu
    • Gehen Sie zu EinstellungenCI/CDVariablen
    • Fügen Sie ANTHROPIC_API_KEY hinzu (maskiert, bei Bedarf geschützt)
  2. Fügen Sie einen Claude-Job zu .gitlab-ci.yml hinzu
stages:
  - ai

claude:
  stage: ai
  image: node:24-alpine3.21
  # Passen Sie die Regeln an, wie Sie den Job auslösen möchten:
  # - manuelle Ausführungen
  # - Merge-Request-Ereignisse
  # - Web/API-Trigger, wenn ein Kommentar '@claude' enthält
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"'
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  variables:
    GIT_STRATEGY: fetch
  before_script:
    - apk update
    - apk add --no-cache git curl bash
    - npm install -g @anthropic-ai/claude-code
  script:
    # Optional: Starten Sie einen GitLab MCP-Server, wenn Ihr Setup einen bereitstellt
    - /bin/gitlab-mcp-server || true
    # Verwenden Sie AI_FLOW_*-Variablen beim Aufrufen über Web/API-Trigger mit Kontext-Payloads
    - echo "$AI_FLOW_INPUT for $AI_FLOW_CONTEXT on $AI_FLOW_EVENT"
    - >
      claude
      -p "${AI_FLOW_INPUT:-'Review this MR and implement the requested changes'}"
      --permission-mode acceptEdits
      --allowedTools "Bash(*) Read(*) Edit(*) Write(*) mcp__gitlab"
      --debug
Nach dem Hinzufügen des Jobs und Ihrer ANTHROPIC_API_KEY-Variable testen Sie, indem Sie den Job manuell von CI/CDPipelines ausführen, oder lösen Sie ihn von einem MR aus, um Claude Updates in einem Branch vorzuschlagen und bei Bedarf einen MR zu öffnen.
Um stattdessen auf AWS Bedrock oder Google Vertex AI auszuführen, siehe den Abschnitt Verwendung mit AWS Bedrock & Google Vertex AI unten für Authentifizierung und Umgebungssetup.

Manuelles Setup (empfohlen für Produktion)

Wenn Sie ein kontrolliertes Setup bevorzugen oder Enterprise-Provider benötigen:
  1. Konfigurieren Sie Provider-Zugriff:
    • Claude API: Erstellen und speichern Sie ANTHROPIC_API_KEY als maskierte CI/CD-Variable
    • AWS Bedrock: Konfigurieren Sie GitLabAWS OIDC und erstellen Sie eine IAM-Rolle für Bedrock
    • Google Vertex AI: Konfigurieren Sie Workload Identity Federation für GitLabGCP
  2. Fügen Sie Projektanmeldedaten für GitLab API-Operationen hinzu:
    • Verwenden Sie standardmäßig CI_JOB_TOKEN, oder erstellen Sie ein Project Access Token mit api-Bereich
    • Speichern Sie als GITLAB_ACCESS_TOKEN (maskiert), wenn Sie ein PAT verwenden
  3. Fügen Sie den Claude-Job zu .gitlab-ci.yml hinzu (siehe Beispiele unten)
  4. (Optional) Aktivieren Sie Mention-gesteuerte Trigger:
    • Fügen Sie einen Projekt-Webhook für “Kommentare (Notizen)” zu Ihrem Event-Listener hinzu (falls Sie einen verwenden)
    • Lassen Sie den Listener die Pipeline-Trigger-API mit Variablen wie AI_FLOW_INPUT und AI_FLOW_CONTEXT aufrufen, wenn ein Kommentar @claude enthält

Beispiel-Anwendungsfälle

Verwandeln Sie Probleme in MRs

In einem Problemkommentar:
@claude implement this feature based on the issue description
Claude analysiert das Problem und die Codebasis, schreibt Änderungen in einem Branch und öffnet einen MR zur Überprüfung.

Erhalten Sie Implementierungshilfe

In einer MR-Diskussion:
@claude suggest a concrete approach to cache the results of this API call
Claude schlägt Änderungen vor, fügt Code mit angemessenem Caching hinzu und aktualisiert den MR.

Beheben Sie Fehler schnell

In einem Problem- oder MR-Kommentar:
@claude fix the TypeError in the user dashboard component
Claude lokalisiert den Fehler, implementiert eine Korrektur und aktualisiert den Branch oder öffnet einen neuen MR.

Verwendung mit AWS Bedrock & Google Vertex AI

Für Enterprise-Umgebungen können Sie Claude Code vollständig auf Ihrer Cloud-Infrastruktur mit der gleichen Entwicklererfahrung ausführen.

Voraussetzungen

Bevor Sie Claude Code mit AWS Bedrock einrichten, benötigen Sie:
  1. Ein AWS-Konto mit Amazon Bedrock-Zugriff auf die gewünschten Claude-Modelle
  2. GitLab als OIDC-Identitätsanbieter in AWS IAM konfiguriert
  3. Eine IAM-Rolle mit Bedrock-Berechtigungen und einer Vertrauensrichtlinie, die auf Ihr GitLab-Projekt/Refs beschränkt ist
  4. GitLab CI/CD-Variablen für die Rollenübernahme:
    • AWS_ROLE_TO_ASSUME (Rollen-ARN)
    • AWS_REGION (Bedrock-Region)

Setup-Anweisungen

Konfigurieren Sie AWS, um GitLab CI-Jobs zu ermöglichen, eine IAM-Rolle über OIDC anzunehmen (keine statischen Schlüssel).Erforderliches Setup:
  1. Aktivieren Sie Amazon Bedrock und fordern Sie Zugriff auf Ihre Ziel-Claude-Modelle an
  2. Erstellen Sie einen IAM OIDC-Provider für GitLab, falls nicht bereits vorhanden
  3. Erstellen Sie eine IAM-Rolle, der der GitLab OIDC-Provider vertraut, beschränkt auf Ihr Projekt und geschützte Refs
  4. Fügen Sie Least-Privilege-Berechtigungen für Bedrock-Invoke-APIs an
Erforderliche Werte zum Speichern in CI/CD-Variablen:
  • AWS_ROLE_TO_ASSUME
  • AWS_REGION
Fügen Sie Variablen in Einstellungen → CI/CD → Variablen hinzu:
# Für AWS Bedrock:
- AWS_ROLE_TO_ASSUME
- AWS_REGION
Verwenden Sie das AWS Bedrock-Job-Beispiel oben, um das GitLab-Job-Token gegen temporäre AWS-Anmeldedaten zur Laufzeit auszutauschen.

Konfigurationsbeispiele

Nachfolgend finden Sie einsatzbereite Snippets, die Sie an Ihre Pipeline anpassen können.

Basis .gitlab-ci.yml (Claude API)

stages:
  - ai

claude:
  stage: ai
  image: node:24-alpine3.21
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"'
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  variables:
    GIT_STRATEGY: fetch
  before_script:
    - apk update
    - apk add --no-cache git curl bash
    - npm install -g @anthropic-ai/claude-code
  script:
    - /bin/gitlab-mcp-server || true
    - >
      claude
      -p "${AI_FLOW_INPUT:-'Summarize recent changes and suggest improvements'}"
      --permission-mode acceptEdits
      --allowedTools "Bash(*) Read(*) Edit(*) Write(*) mcp__gitlab"
      --debug
  # Claude Code wird ANTHROPIC_API_KEY aus CI/CD-Variablen verwenden

AWS Bedrock-Job-Beispiel (OIDC)

Voraussetzungen:
  • Amazon Bedrock aktiviert mit Zugriff auf Ihr gewähltes Claude-Modell(e)
  • GitLab OIDC in AWS konfiguriert mit einer Rolle, die Ihr GitLab-Projekt und Refs vertraut
  • IAM-Rolle mit Bedrock-Berechtigungen (Least Privilege empfohlen)
Erforderliche CI/CD-Variablen:
  • AWS_ROLE_TO_ASSUME: ARN der IAM-Rolle für Bedrock-Zugriff
  • AWS_REGION: Bedrock-Region (zum Beispiel us-west-2)
claude-bedrock:
  stage: ai
  image: node:24-alpine3.21
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"'
  before_script:
    - apk add --no-cache bash curl jq git python3 py3-pip
    - pip install --no-cache-dir awscli
    - npm install -g @anthropic-ai/claude-code
    # Tauschen Sie GitLab OIDC-Token gegen AWS-Anmeldedaten aus
    - export AWS_WEB_IDENTITY_TOKEN_FILE="${CI_JOB_JWT_FILE:-/tmp/oidc_token}"
    - if [ -n "${CI_JOB_JWT_V2}" ]; then printf "%s" "$CI_JOB_JWT_V2" > "$AWS_WEB_IDENTITY_TOKEN_FILE"; fi
    - >
      aws sts assume-role-with-web-identity
      --role-arn "$AWS_ROLE_TO_ASSUME"
      --role-session-name "gitlab-claude-$(date +%s)"
      --web-identity-token "file://$AWS_WEB_IDENTITY_TOKEN_FILE"
      --duration-seconds 3600 > /tmp/aws_creds.json
    - export AWS_ACCESS_KEY_ID="$(jq -r .Credentials.AccessKeyId /tmp/aws_creds.json)"
    - export AWS_SECRET_ACCESS_KEY="$(jq -r .Credentials.SecretAccessKey /tmp/aws_creds.json)"
    - export AWS_SESSION_TOKEN="$(jq -r .Credentials.SessionToken /tmp/aws_creds.json)"
  script:
    - /bin/gitlab-mcp-server || true
    - >
      claude
      -p "${AI_FLOW_INPUT:-'Implement the requested changes and open an MR'}"
      --permission-mode acceptEdits
      --allowedTools "Bash(*) Read(*) Edit(*) Write(*) mcp__gitlab"
      --debug
  variables:
    AWS_REGION: "us-west-2"
Modell-IDs für Bedrock enthalten regionsspezifische Präfixe und Versionssuffixe (zum Beispiel us.anthropic.claude-sonnet-4-5-20250929-v1:0). Übergeben Sie das gewünschte Modell über Ihre Job-Konfiguration oder den Prompt, wenn Ihr Workflow dies unterstützt.

Google Vertex AI-Job-Beispiel (Workload Identity Federation)

Voraussetzungen:
  • Vertex AI API in Ihrem GCP-Projekt aktiviert
  • Workload Identity Federation konfiguriert, um GitLab OIDC zu vertrauen
  • Ein Service-Konto mit Vertex AI-Berechtigungen
Erforderliche CI/CD-Variablen:
  • GCP_WORKLOAD_IDENTITY_PROVIDER: Vollständiger Provider-Ressourcenname
  • GCP_SERVICE_ACCOUNT: Service-Konto-E-Mail
  • CLOUD_ML_REGION: Vertex-Region (zum Beispiel us-east5)
claude-vertex:
  stage: ai
  image: gcr.io/google.com/cloudsdktool/google-cloud-cli:slim
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"'
  before_script:
    - apt-get update && apt-get install -y git nodejs npm && apt-get clean
    - npm install -g @anthropic-ai/claude-code
    # Authentifizieren Sie sich bei Google Cloud über WIF (keine heruntergeladenen Schlüssel)
    - >
      gcloud auth login --cred-file=<(cat <<EOF
      {
        "type": "external_account",
        "audience": "${GCP_WORKLOAD_IDENTITY_PROVIDER}",
        "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
        "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/${GCP_SERVICE_ACCOUNT}:generateAccessToken",
        "token_url": "https://sts.googleapis.com/v1/token"
      }
      EOF
      )
    - gcloud config set project "$(gcloud projects list --format='value(projectId)' --filter="name:${CI_PROJECT_NAMESPACE}" | head -n1)" || true
  script:
    - /bin/gitlab-mcp-server || true
    - >
      CLOUD_ML_REGION="${CLOUD_ML_REGION:-us-east5}"
      claude
      -p "${AI_FLOW_INPUT:-'Review and update code as requested'}"
      --permission-mode acceptEdits
      --allowedTools "Bash(*) Read(*) Edit(*) Write(*) mcp__gitlab"
      --debug
  variables:
    CLOUD_ML_REGION: "us-east5"
Mit Workload Identity Federation müssen Sie keine Service-Konto-Schlüssel speichern. Verwenden Sie Repository-spezifische Vertrauensbedingungen und Least-Privilege-Service-Konten.

Best Practices

CLAUDE.md-Konfiguration

Erstellen Sie eine CLAUDE.md-Datei im Repository-Root, um Coding-Standards, Review-Kriterien und projektspezifische Regeln zu definieren. Claude liest diese Datei während der Ausführung und folgt Ihren Konventionen bei der Vorschlag von Änderungen.

Sicherheitsüberlegungen

Committen Sie niemals API-Schlüssel oder Cloud-Anmeldedaten in Ihr Repository! Verwenden Sie immer GitLab CI/CD-Variablen:
  • Fügen Sie ANTHROPIC_API_KEY als maskierte Variable hinzu (und schützen Sie sie bei Bedarf)
  • Verwenden Sie Provider-spezifisches OIDC, wo möglich (keine langlebigen Schlüssel)
  • Begrenzen Sie Job-Berechtigungen und Netzwerk-Egress
  • Überprüfen Sie Claudes MRs wie jeden anderen Contributor

Optimierung der Leistung

  • Halten Sie CLAUDE.md fokussiert und prägnant
  • Geben Sie klare Problem-/MR-Beschreibungen an, um Iterationen zu reduzieren
  • Konfigurieren Sie angemessene Job-Timeouts, um runaway Runs zu vermeiden
  • Cachen Sie npm und Paketinstallationen in Runnern, wo möglich

CI-Kosten

Bei der Verwendung von Claude Code mit GitLab CI/CD sollten Sie sich der damit verbundenen Kosten bewusst sein:
  • GitLab Runner-Zeit:
    • Claude läuft auf Ihren GitLab-Runnern und verbraucht Compute-Minuten
    • Siehe Ihre GitLab-Plan-Runner-Abrechnung für Details
  • API-Kosten:
    • Jede Claude-Interaktion verbraucht Token basierend auf Prompt- und Antwortgröße
    • Die Token-Nutzung variiert je nach Aufgabenkomplexität und Codebasis-Größe
    • Siehe Anthropic-Preise für Details
  • Tipps zur Kostenoptimierung:
    • Verwenden Sie spezifische @claude-Befehle, um unnötige Turns zu reduzieren
    • Legen Sie angemessene max_turns- und Job-Timeout-Werte fest
    • Begrenzen Sie die Parallelität, um parallele Runs zu kontrollieren

Sicherheit und Governance

  • Jeder Job läuft in einem isolierten Container mit eingeschränktem Netzwerkzugriff
  • Claudes Änderungen fließen durch MRs, damit Reviewer jeden Diff sehen
  • Branch-Schutz- und Genehmigungsregeln gelten für KI-generierte Code
  • Claude Code verwendet Workspace-bezogene Berechtigungen, um Schreibvorgänge einzuschränken
  • Kosten bleiben unter Ihrer Kontrolle, da Sie Ihre eigenen Provider-Anmeldedaten mitbringen

Fehlerbehebung

Claude antwortet nicht auf @claude-Befehle

  • Überprüfen Sie, ob Ihre Pipeline ausgelöst wird (manuell, MR-Ereignis oder über einen Note-Event-Listener/Webhook)
  • Stellen Sie sicher, dass CI/CD-Variablen (ANTHROPIC_API_KEY oder Cloud-Provider-Einstellungen) vorhanden und unmaskiert sind
  • Überprüfen Sie, dass der Kommentar @claude enthält (nicht /claude) und dass Ihr Mention-Trigger konfiguriert ist

Job kann keine Kommentare schreiben oder MRs öffnen

  • Stellen Sie sicher, dass CI_JOB_TOKEN ausreichende Berechtigungen für das Projekt hat, oder verwenden Sie ein Project Access Token mit api-Bereich
  • Überprüfen Sie, dass das mcp__gitlab-Tool in --allowedTools aktiviert ist
  • Bestätigen Sie, dass der Job im Kontext des MR läuft oder über AI_FLOW_*-Variablen genug Kontext hat

Authentifizierungsfehler

  • Für Claude API: Bestätigen Sie, dass ANTHROPIC_API_KEY gültig und nicht abgelaufen ist
  • Für Bedrock/Vertex: Überprüfen Sie OIDC/WIF-Konfiguration, Rollenimitierung und Geheimnisnamen; bestätigen Sie Region und Modellverfügbarkeit

Erweiterte Konfiguration

Häufig verwendete Parameter und Variablen

Claude Code unterstützt diese häufig verwendeten Eingaben:
  • prompt / prompt_file: Geben Sie Anweisungen inline (-p) oder über eine Datei an
  • max_turns: Begrenzen Sie die Anzahl der Hin- und Her-Iterationen
  • timeout_minutes: Begrenzen Sie die Gesamtausführungszeit
  • ANTHROPIC_API_KEY: Erforderlich für die Claude API (nicht für Bedrock/Vertex verwendet)
  • Provider-spezifische Umgebung: AWS_REGION, Projekt-/Regionsvariablen für Vertex
Genaue Flags und Parameter können je nach Version von @anthropic-ai/claude-code variieren. Führen Sie claude --help in Ihrem Job aus, um unterstützte Optionen zu sehen.

Anpassung von Claudes Verhalten

Sie können Claude auf zwei Hauptwegen lenken:
  1. CLAUDE.md: Definieren Sie Coding-Standards, Sicherheitsanforderungen und Projektkonventionen. Claude liest dies während der Ausführung und folgt Ihren Regeln.
  2. Benutzerdefinierte Prompts: Übergeben Sie aufgabenspezifische Anweisungen über prompt/prompt_file im Job. Verwenden Sie unterschiedliche Prompts für verschiedene Jobs (zum Beispiel Review, Implementierung, Refactoring).