Claude Code per GitLab CI/CD è attualmente in beta. Le funzionalità e la funzionalità possono evolversi mentre perfezzioniamo l’esperienza.Questa integrazione è mantenuta da GitLab. Per il supporto, consulta il seguente problema GitLab.
Questa integrazione è costruita sulla base di Claude Code CLI e SDK, abilitando l’uso programmatico di Claude nei tuoi lavori CI/CD e nei flussi di lavoro di automazione personalizzati.

Perché usare Claude Code con GitLab?

  • Creazione istantanea di MR: Descrivi quello di cui hai bisogno e Claude propone un MR completo con modifiche e spiegazioni
  • Implementazione automatizzata: Trasforma i problemi in codice funzionante con un singolo comando o menzione
  • Consapevolezza del progetto: Claude segue le tue linee guida CLAUDE.md e i modelli di codice esistenti
  • Configurazione semplice: Aggiungi un lavoro a .gitlab-ci.yml e una variabile CI/CD mascherata
  • Pronto per l’azienda: Scegli Claude API, AWS Bedrock o Google Vertex AI per soddisfare le esigenze di residenza dei dati e approvvigionamento
  • Sicuro per impostazione predefinita: Viene eseguito nei tuoi runner GitLab con la protezione dei rami e le approvazioni

Come funziona

Claude Code utilizza GitLab CI/CD per eseguire attività AI in lavori isolati e eseguire il commit dei risultati tramite MR:
  1. Orchestrazione guidata da eventi: GitLab ascolta i trigger scelti (ad esempio, un commento che menziona @claude in un problema, MR o thread di revisione). Il lavoro raccoglie il contesto dal thread e dal repository, costruisce prompt da quell’input ed esegue Claude Code.
  2. Astrazione del provider: Utilizza il provider che si adatta al tuo ambiente:
    • Claude API (SaaS)
    • AWS Bedrock (accesso basato su IAM, opzioni multi-regione)
    • Google Vertex AI (nativo GCP, Workload Identity Federation)
  3. Esecuzione in sandbox: Ogni interazione viene eseguita in un contenitore con regole rigorose di rete e filesystem. Claude Code applica autorizzazioni con ambito workspace per limitare le scritture. Ogni modifica scorre attraverso un MR in modo che i revisori vedano il diff e le approvazioni si applichino ancora.
Scegli endpoint regionali per ridurre la latenza e soddisfare i requisiti di sovranità dei dati mentre utilizzi gli accordi cloud esistenti.

Cosa può fare Claude?

Claude Code abilita potenti flussi di lavoro CI/CD che trasformano il modo in cui lavori con il codice:
  • Creare e aggiornare MR da descrizioni di problemi o commenti
  • Analizzare regressioni di prestazioni e proporre ottimizzazioni
  • Implementare funzionalità direttamente in un ramo, quindi aprire un MR
  • Correggere bug e regressioni identificati da test o commenti
  • Rispondere ai commenti di follow-up per iterare sulle modifiche richieste

Configurazione

Configurazione rapida

Il modo più veloce per iniziare è aggiungere un lavoro minimo al tuo .gitlab-ci.yml e impostare la tua chiave API come variabile mascherata.
  1. Aggiungi una variabile CI/CD mascherata
    • Vai a ImpostazioniCI/CDVariabili
    • Aggiungi ANTHROPIC_API_KEY (mascherata, protetta secondo necessità)
  2. Aggiungi un lavoro Claude a .gitlab-ci.yml
stages:
  - ai

claude:
  stage: ai
  image: node:24-alpine3.21
  # Regola le regole per adattarsi a come desideri attivare il lavoro:
  # - esecuzioni manuali
  # - eventi di merge request
  # - trigger web/API quando un commento contiene '@claude'
  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:
    # Facoltativo: avvia un server GitLab MCP se la tua configurazione lo fornisce
    - /bin/gitlab-mcp-server || true
    # Utilizza variabili AI_FLOW_* quando richiami tramite trigger web/API con payload di contesto
    - 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
Dopo aver aggiunto il lavoro e la tua variabile ANTHROPIC_API_KEY, esegui il test eseguendo il lavoro manualmente da CI/CDPipeline, o attivalo da un MR per consentire a Claude di proporre aggiornamenti in un ramo e aprire un MR se necessario.
Per eseguire su AWS Bedrock o Google Vertex AI invece dell’API Claude, consulta la sezione Utilizzo con AWS Bedrock e Google Vertex AI di seguito per la configurazione dell’autenticazione e dell’ambiente.

Configurazione manuale (consigliata per la produzione)

Se preferisci una configurazione più controllata o hai bisogno di provider aziendali:
  1. Configura l’accesso al provider:
    • Claude API: Crea e archivia ANTHROPIC_API_KEY come variabile CI/CD mascherata
    • AWS Bedrock: Configura GitLabAWS OIDC e crea un ruolo IAM per Bedrock
    • Google Vertex AI: Configura Workload Identity Federation per GitLabGCP
  2. Aggiungi credenziali di progetto per le operazioni dell’API GitLab:
    • Utilizza CI_JOB_TOKEN per impostazione predefinita, o crea un Project Access Token con ambito api
    • Archivia come GITLAB_ACCESS_TOKEN (mascherato) se utilizzi un PAT
  3. Aggiungi il lavoro Claude a .gitlab-ci.yml (vedi esempi di seguito)
  4. (Facoltativo) Abilita trigger guidati da menzioni:
    • Aggiungi un webhook di progetto per “Commenti (note)” al tuo listener di eventi (se ne utilizzi uno)
    • Fai in modo che il listener chiami l’API di attivazione della pipeline con variabili come AI_FLOW_INPUT e AI_FLOW_CONTEXT quando un commento contiene @claude

Esempi di casi d’uso

Trasforma i problemi in MR

In un commento di problema:
@claude implement this feature based on the issue description
Claude analizza il problema e la base di codice, scrive le modifiche in un ramo e apre un MR per la revisione.

Ottieni aiuto nell’implementazione

In una discussione MR:
@claude suggest a concrete approach to cache the results of this API call
Claude propone modifiche, aggiunge codice con caching appropriato e aggiorna il MR.

Correggi i bug rapidamente

In un commento di problema o MR:
@claude fix the TypeError in the user dashboard component
Claude individua il bug, implementa una correzione e aggiorna il ramo o apre un nuovo MR.

Utilizzo con AWS Bedrock e Google Vertex AI

Per ambienti aziendali, puoi eseguire Claude Code interamente sulla tua infrastruttura cloud con la stessa esperienza per gli sviluppatori.

Prerequisiti

Prima di configurare Claude Code con AWS Bedrock, hai bisogno di:
  1. Un account AWS con accesso ad Amazon Bedrock ai modelli Claude desiderati
  2. GitLab configurato come provider di identità OIDC in AWS IAM
  3. Un ruolo IAM con autorizzazioni Bedrock e una politica di trust limitata al tuo progetto/rami GitLab
  4. Variabili CI/CD GitLab per l’assunzione del ruolo:
    • AWS_ROLE_TO_ASSUME (ARN del ruolo)
    • AWS_REGION (regione Bedrock)

Istruzioni di configurazione

Configura AWS per consentire ai lavori GitLab CI di assumere un ruolo IAM tramite OIDC (nessuna chiave statica).Configurazione richiesta:
  1. Abilita Amazon Bedrock e richiedi l’accesso ai tuoi modelli Claude target
  2. Crea un provider OIDC IAM per GitLab se non già presente
  3. Crea un ruolo IAM attendibile dal provider OIDC GitLab, limitato al tuo progetto e rami protetti
  4. Allega autorizzazioni con privilegi minimi per le API di invocazione Bedrock
Valori richiesti da archiviare nelle variabili CI/CD:
  • AWS_ROLE_TO_ASSUME
  • AWS_REGION
Aggiungi variabili in Impostazioni → CI/CD → Variabili:
# Per AWS Bedrock:
- AWS_ROLE_TO_ASSUME
- AWS_REGION
Utilizza l’esempio di lavoro AWS Bedrock sopra per scambiare il token di lavoro GitLab con credenziali AWS temporanee in fase di esecuzione.

Esempi di configurazione

Di seguito sono riportati frammenti pronti all’uso che puoi adattare alla tua pipeline.

.gitlab-ci.yml di base (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 utilizzerà ANTHROPIC_API_KEY dalle variabili CI/CD

Esempio di lavoro AWS Bedrock (OIDC)

Prerequisiti:
  • Amazon Bedrock abilitato con accesso al tuo modello Claude scelto
  • OIDC GitLab configurato in AWS con un ruolo che attendibile al tuo progetto e rami GitLab
  • Ruolo IAM con autorizzazioni Bedrock (privilegi minimi consigliati)
Variabili CI/CD richieste:
  • AWS_ROLE_TO_ASSUME: ARN del ruolo IAM per l’accesso a Bedrock
  • AWS_REGION: Regione Bedrock (ad esempio, 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
    # Scambia il token OIDC GitLab con le credenziali AWS
    - 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"
Gli ID modello per Bedrock includono prefissi specifici della regione e suffissi di versione (ad esempio, us.anthropic.claude-sonnet-4-5-20250929-v1:0). Passa il modello desiderato tramite la configurazione del lavoro o il prompt se il tuo flusso di lavoro lo supporta.

Esempio di lavoro Google Vertex AI (Workload Identity Federation)

Prerequisiti:
  • API Vertex AI abilitata nel tuo progetto GCP
  • Workload Identity Federation configurata per attendere OIDC GitLab
  • Un account di servizio con autorizzazioni Vertex AI
Variabili CI/CD richieste:
  • GCP_WORKLOAD_IDENTITY_PROVIDER: Nome della risorsa del provider completo
  • GCP_SERVICE_ACCOUNT: Email dell’account di servizio
  • CLOUD_ML_REGION: Regione Vertex (ad esempio, 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
    # Autentica a Google Cloud tramite WIF (nessuna chiave scaricata)
    - >
      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"
Con Workload Identity Federation, non è necessario archiviare le chiavi dell’account di servizio. Utilizza condizioni di trust specifiche del repository e account di servizio con privilegi minimi.

Migliori pratiche

Configurazione CLAUDE.md

Crea un file CLAUDE.md nella radice del repository per definire standard di codifica, criteri di revisione e regole specifiche del progetto. Claude legge questo file durante le esecuzioni e segue le tue convenzioni quando propone modifiche.

Considerazioni sulla sicurezza

Non eseguire mai il commit di chiavi API o credenziali cloud nel tuo repository! Utilizza sempre le variabili CI/CD GitLab:
  • Aggiungi ANTHROPIC_API_KEY come variabile mascherata (e proteggila se necessario)
  • Utilizza OIDC specifico del provider dove possibile (nessuna chiave di lunga durata)
  • Limita le autorizzazioni dei lavori e l’uscita di rete
  • Rivedi i MR di Claude come qualsiasi altro collaboratore

Ottimizzazione delle prestazioni

  • Mantieni CLAUDE.md focalizzato e conciso
  • Fornisci descrizioni chiare di problemi/MR per ridurre le iterazioni
  • Configura timeout di lavoro ragionevoli per evitare esecuzioni incontrollate
  • Memorizza nella cache npm e installa i pacchetti nei runner dove possibile

Costi CI

Quando utilizzi Claude Code con GitLab CI/CD, tieni presente i costi associati:
  • Tempo del runner GitLab:
    • Claude viene eseguito sui tuoi runner GitLab e consuma minuti di calcolo
    • Consulta la fatturazione del runner del tuo piano GitLab per i dettagli
  • Costi API:
    • Ogni interazione Claude consuma token in base alle dimensioni del prompt e della risposta
    • L’utilizzo dei token varia in base alla complessità dell’attività e alle dimensioni della base di codice
    • Consulta Prezzi Anthropic per i dettagli
  • Suggerimenti per l’ottimizzazione dei costi:
    • Utilizza comandi @claude specifici per ridurre i turni non necessari
    • Imposta valori max_turns e timeout di lavoro appropriati
    • Limita la concorrenza per controllare le esecuzioni parallele

Sicurezza e governance

  • Ogni lavoro viene eseguito in un contenitore isolato con accesso di rete limitato
  • Le modifiche di Claude scorrono attraverso i MR in modo che i revisori vedano ogni diff
  • Le regole di protezione dei rami e approvazione si applicano al codice generato da AI
  • Claude Code utilizza autorizzazioni con ambito workspace per limitare le scritture
  • I costi rimangono sotto il tuo controllo perché porti le tue credenziali del provider

Risoluzione dei problemi

Claude non risponde ai comandi @claude

  • Verifica che la tua pipeline sia attivata (manualmente, evento MR o tramite listener di note/webhook)
  • Assicurati che le variabili CI/CD (ANTHROPIC_API_KEY o impostazioni del provider cloud) siano presenti e non mascherate
  • Controlla che il commento contenga @claude (non /claude) e che il tuo trigger di menzione sia configurato

Il lavoro non può scrivere commenti o aprire MR

  • Assicurati che CI_JOB_TOKEN abbia autorizzazioni sufficienti per il progetto, o utilizza un Project Access Token con ambito api
  • Controlla che lo strumento mcp__gitlab sia abilitato in --allowedTools
  • Conferma che il lavoro viene eseguito nel contesto del MR o ha abbastanza contesto tramite variabili AI_FLOW_*

Errori di autenticazione

  • Per Claude API: Conferma che ANTHROPIC_API_KEY sia valida e non scaduta
  • Per Bedrock/Vertex: Verifica la configurazione OIDC/WIF, la rappresentazione del ruolo e i nomi segreti; conferma la disponibilità della regione e del modello

Configurazione avanzata

Parametri e variabili comuni

Claude Code supporta questi input comunemente utilizzati:
  • prompt / prompt_file: Fornisci istruzioni inline (-p) o tramite un file
  • max_turns: Limita il numero di iterazioni avanti e indietro
  • timeout_minutes: Limita il tempo di esecuzione totale
  • ANTHROPIC_API_KEY: Richiesto per l’API Claude (non utilizzato per Bedrock/Vertex)
  • Ambiente specifico del provider: AWS_REGION, variabili di progetto/regione per Vertex
I flag e i parametri esatti possono variare in base alla versione di @anthropic-ai/claude-code. Esegui claude --help nel tuo lavoro per vedere le opzioni supportate.

Personalizzazione del comportamento di Claude

Puoi guidare Claude in due modi principali:
  1. CLAUDE.md: Definisci standard di codifica, requisiti di sicurezza e convenzioni di progetto. Claude legge questo durante le esecuzioni e segue le tue regole.
  2. Prompt personalizzati: Passa istruzioni specifiche dell’attività tramite prompt/prompt_file nel lavoro. Utilizza prompt diversi per lavori diversi (ad esempio, revisione, implementazione, refactoring).