Claude Code para GitLab CI/CD está actualmente en beta. Las características y funcionalidades pueden evolucionar a medida que refinamos la experiencia.Esta integración es mantenida por GitLab. Para obtener soporte, consulta el siguiente problema de GitLab.
Esta integración se construye sobre la base de Claude Code CLI y SDK, lo que permite el uso programático de Claude en tus trabajos de CI/CD y flujos de trabajo de automatización personalizados.

¿Por qué usar Claude Code con GitLab?

  • Creación instantánea de MR: Describe lo que necesitas y Claude propone un MR completo con cambios y explicación
  • Implementación automatizada: Convierte problemas en código funcional con un único comando o mención
  • Consciente del proyecto: Claude sigue tus directrices de CLAUDE.md y patrones de código existentes
  • Configuración simple: Añade un trabajo a .gitlab-ci.yml y una variable CI/CD enmascarada
  • Listo para empresas: Elige Claude API, AWS Bedrock o Google Vertex AI para cumplir con requisitos de residencia de datos y adquisición
  • Seguro por defecto: Se ejecuta en tus ejecutores de GitLab con tu protección de rama y aprobaciones

Cómo funciona

Claude Code utiliza GitLab CI/CD para ejecutar tareas de IA en trabajos aislados y confirmar resultados a través de MRs:
  1. Orquestación impulsada por eventos: GitLab escucha los activadores que elijas (por ejemplo, un comentario que menciona @claude en un problema, MR o hilo de revisión). El trabajo recopila contexto del hilo y repositorio, construye indicaciones a partir de esa entrada y ejecuta Claude Code.
  2. Abstracción de proveedores: Utiliza el proveedor que se ajuste a tu entorno:
    • Claude API (SaaS)
    • AWS Bedrock (acceso basado en IAM, opciones entre regiones)
    • Google Vertex AI (nativo de GCP, Federación de Identidad de Carga de Trabajo)
  3. Ejecución aislada: Cada interacción se ejecuta en un contenedor con reglas estrictas de red y sistema de archivos. Claude Code aplica permisos con alcance de espacio de trabajo para restringir escrituras. Cada cambio fluye a través de un MR para que los revisores vean el diff y las aprobaciones sigan siendo aplicables.
Elige puntos finales regionales para reducir la latencia y cumplir con requisitos de soberanía de datos mientras utilizas acuerdos en la nube existentes.

¿Qué puede hacer Claude?

Claude Code permite flujos de trabajo poderosos de CI/CD que transforman cómo trabajas con código:
  • Crear y actualizar MRs a partir de descripciones de problemas o comentarios
  • Analizar regresiones de rendimiento y proponer optimizaciones
  • Implementar características directamente en una rama, luego abrir un MR
  • Corregir errores y regresiones identificados por pruebas o comentarios
  • Responder a comentarios de seguimiento para iterar sobre cambios solicitados

Configuración

Configuración rápida

La forma más rápida de comenzar es añadir un trabajo mínimo a tu .gitlab-ci.yml y establecer tu clave API como una variable enmascarada.
  1. Añade una variable CI/CD enmascarada
    • Ve a ConfiguraciónCI/CDVariables
    • Añade ANTHROPIC_API_KEY (enmascarada, protegida según sea necesario)
  2. Añade un trabajo de Claude a .gitlab-ci.yml
stages:
  - ai

claude:
  stage: ai
  image: node:24-alpine3.21
  # Ajusta las reglas para que se adapten a cómo deseas activar el trabajo:
  # - ejecuciones manuales
  # - eventos de solicitud de fusión
  # - activadores web/API cuando un comentario 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:
    # Opcional: inicia un servidor GitLab MCP si tu configuración proporciona uno
    - /bin/gitlab-mcp-server || true
    # Utiliza variables AI_FLOW_* cuando se invoca a través de activadores web/API con cargas de contexto
    - 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
Después de añadir el trabajo y tu variable ANTHROPIC_API_KEY, prueba ejecutando el trabajo manualmente desde CI/CDPipelines, o actívalo desde un MR para permitir que Claude proponga actualizaciones en una rama y abra un MR si es necesario.
Para ejecutar en AWS Bedrock o Google Vertex AI en lugar de Claude API, consulta la sección Usar con AWS Bedrock y Google Vertex AI a continuación para la configuración de autenticación y entorno.

Configuración manual (recomendada para producción)

Si prefieres una configuración más controlada o necesitas proveedores empresariales:
  1. Configura el acceso del proveedor:
    • Claude API: Crea y almacena ANTHROPIC_API_KEY como una variable CI/CD enmascarada
    • AWS Bedrock: Configura GitLabAWS OIDC y crea un rol IAM para Bedrock
    • Google Vertex AI: Configura Federación de Identidad de Carga de Trabajo para GitLabGCP
  2. Añade credenciales de proyecto para operaciones de API de GitLab:
    • Utiliza CI_JOB_TOKEN por defecto, o crea un Token de Acceso de Proyecto con alcance api
    • Almacena como GITLAB_ACCESS_TOKEN (enmascarado) si utilizas un PAT
  3. Añade el trabajo de Claude a .gitlab-ci.yml (consulta ejemplos a continuación)
  4. (Opcional) Habilita activadores impulsados por menciones:
    • Añade un webhook de proyecto para “Comentarios (notas)” a tu escuchador de eventos (si utilizas uno)
    • Haz que el escuchador llame a la API de activación de pipeline con variables como AI_FLOW_INPUT y AI_FLOW_CONTEXT cuando un comentario contiene @claude

Casos de uso de ejemplo

Convierte problemas en MRs

En un comentario de problema:
@claude implement this feature based on the issue description
Claude analiza el problema y la base de código, escribe cambios en una rama y abre un MR para revisión.

Obtén ayuda de implementación

En una discusión de MR:
@claude suggest a concrete approach to cache the results of this API call
Claude propone cambios, añade código con almacenamiento en caché apropiado y actualiza el MR.

Corrige errores rápidamente

En un comentario de problema o MR:
@claude fix the TypeError in the user dashboard component
Claude localiza el error, implementa una corrección y actualiza la rama o abre un nuevo MR.

Usar con AWS Bedrock y Google Vertex AI

Para entornos empresariales, puedes ejecutar Claude Code completamente en tu infraestructura en la nube con la misma experiencia de desarrollador.

Requisitos previos

Antes de configurar Claude Code con AWS Bedrock, necesitas:
  1. Una cuenta de AWS con acceso a Amazon Bedrock para los modelos Claude deseados
  2. GitLab configurado como proveedor de identidad OIDC en AWS IAM
  3. Un rol IAM con permisos de Bedrock y una política de confianza restringida a tu proyecto/referencias de GitLab
  4. Variables CI/CD de GitLab para asumir el rol:
    • AWS_ROLE_TO_ASSUME (ARN del rol)
    • AWS_REGION (región de Bedrock)

Instrucciones de configuración

Configura AWS para permitir que los trabajos de CI de GitLab asuman un rol IAM a través de OIDC (sin claves estáticas).Configuración requerida:
  1. Habilita Amazon Bedrock y solicita acceso a tus modelos Claude objetivo
  2. Crea un proveedor OIDC de IAM para GitLab si no está presente
  3. Crea un rol IAM confiado por el proveedor OIDC de GitLab, restringido a tu proyecto y referencias protegidas
  4. Adjunta permisos de menor privilegio para APIs de invocación de Bedrock
Valores requeridos para almacenar en variables CI/CD:
  • AWS_ROLE_TO_ASSUME
  • AWS_REGION
Añade variables en Configuración → CI/CD → Variables:
# Para AWS Bedrock:
- AWS_ROLE_TO_ASSUME
- AWS_REGION
Utiliza el ejemplo de trabajo de AWS Bedrock anterior para intercambiar el token de trabajo de GitLab por credenciales temporales de AWS en tiempo de ejecución.

Ejemplos de configuración

A continuación se muestran fragmentos listos para usar que puedes adaptar a tu pipeline.

.gitlab-ci.yml básico (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 utilizará ANTHROPIC_API_KEY de variables CI/CD

Ejemplo de trabajo de AWS Bedrock (OIDC)

Requisitos previos:
  • Amazon Bedrock habilitado con acceso a tus modelos Claude elegidos
  • OIDC de GitLab configurado en AWS con un rol que confía en tu proyecto y referencias de GitLab
  • Rol IAM con permisos de Bedrock (se recomienda menor privilegio)
Variables CI/CD requeridas:
  • AWS_ROLE_TO_ASSUME: ARN del rol IAM para acceso a Bedrock
  • AWS_REGION: Región de Bedrock (por ejemplo, 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
    # Intercambia token OIDC de GitLab por credenciales de 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"
Los IDs de modelo para Bedrock incluyen prefijos específicos de región y sufijos de versión (por ejemplo, us.anthropic.claude-sonnet-4-5-20250929-v1:0). Pasa el modelo deseado a través de tu configuración de trabajo o indicación si tu flujo de trabajo lo admite.

Ejemplo de trabajo de Google Vertex AI (Federación de Identidad de Carga de Trabajo)

Requisitos previos:
  • API de Vertex AI habilitada en tu proyecto de GCP
  • Federación de Identidad de Carga de Trabajo configurada para confiar en OIDC de GitLab
  • Una cuenta de servicio con permisos de Vertex AI
Variables CI/CD requeridas:
  • GCP_WORKLOAD_IDENTITY_PROVIDER: Nombre de recurso completo del proveedor
  • GCP_SERVICE_ACCOUNT: Correo electrónico de la cuenta de servicio
  • CLOUD_ML_REGION: Región de Vertex (por ejemplo, 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 en Google Cloud a través de WIF (sin claves descargadas)
    - >
      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 Federación de Identidad de Carga de Trabajo, no necesitas almacenar claves de cuenta de servicio. Utiliza condiciones de confianza específicas del repositorio y cuentas de servicio con menor privilegio.

Mejores prácticas

Configuración de CLAUDE.md

Crea un archivo CLAUDE.md en la raíz del repositorio para definir estándares de codificación, criterios de revisión y reglas específicas del proyecto. Claude lee este archivo durante las ejecuciones y sigue tus convenciones al proponer cambios.

Consideraciones de seguridad

¡Nunca confirmes claves API o credenciales en la nube en tu repositorio! Siempre utiliza variables CI/CD de GitLab:
  • Añade ANTHROPIC_API_KEY como una variable enmascarada (y protégela si es necesario)
  • Utiliza OIDC específico del proveedor donde sea posible (sin claves de larga duración)
  • Limita los permisos de trabajo y la salida de red
  • Revisa los MRs de Claude como cualquier otro colaborador

Optimización del rendimiento

  • Mantén CLAUDE.md enfocado y conciso
  • Proporciona descripciones claras de problemas/MR para reducir iteraciones
  • Configura tiempos de espera de trabajo sensatos para evitar ejecuciones descontroladas
  • Almacena en caché npm e instalaciones de paquetes en ejecutores donde sea posible

Costos de CI

Cuando utilizas Claude Code con GitLab CI/CD, ten en cuenta los costos asociados:
  • Tiempo del ejecutor de GitLab:
    • Claude se ejecuta en tus ejecutores de GitLab y consume minutos de computación
    • Consulta la facturación del ejecutor de tu plan de GitLab para obtener detalles
  • Costos de API:
    • Cada interacción de Claude consume tokens según el tamaño de la indicación y la respuesta
    • El uso de tokens varía según la complejidad de la tarea y el tamaño de la base de código
    • Consulta Precios de Anthropic para obtener detalles
  • Consejos de optimización de costos:
    • Utiliza comandos específicos de @claude para reducir turnos innecesarios
    • Establece valores apropiados de max_turns y tiempo de espera de trabajo
    • Limita la concurrencia para controlar ejecuciones paralelas

Seguridad y gobernanza

  • Cada trabajo se ejecuta en un contenedor aislado con acceso de red restringido
  • Los cambios de Claude fluyen a través de MRs para que los revisores vean cada diff
  • Las reglas de protección de rama y aprobación se aplican al código generado por IA
  • Claude Code utiliza permisos con alcance de espacio de trabajo para restringir escrituras
  • Los costos permanecen bajo tu control porque traes tus propias credenciales de proveedor

Solución de problemas

Claude no responde a comandos @claude

  • Verifica que tu pipeline se esté activando (manualmente, evento de MR o a través de un escuchador de eventos de nota/webhook)
  • Asegúrate de que las variables CI/CD (ANTHROPIC_API_KEY o configuración del proveedor en la nube) estén presentes y no enmascaradas
  • Comprueba que el comentario contiene @claude (no /claude) y que tu activador de mención está configurado

El trabajo no puede escribir comentarios ni abrir MRs

  • Asegúrate de que CI_JOB_TOKEN tenga permisos suficientes para el proyecto, o utiliza un Token de Acceso de Proyecto con alcance api
  • Comprueba que la herramienta mcp__gitlab esté habilitada en --allowedTools
  • Confirma que el trabajo se ejecuta en el contexto del MR o tiene suficiente contexto a través de variables AI_FLOW_*

Errores de autenticación

  • Para Claude API: Confirma que ANTHROPIC_API_KEY sea válida y no haya expirado
  • Para Bedrock/Vertex: Verifica la configuración de OIDC/WIF, suplantación de rol y nombres secretos; confirma disponibilidad de región y modelo

Configuración avanzada

Parámetros y variables comunes

Claude Code admite estas entradas comúnmente utilizadas:
  • prompt / prompt_file: Proporciona instrucciones en línea (-p) o a través de un archivo
  • max_turns: Limita el número de iteraciones de ida y vuelta
  • timeout_minutes: Limita el tiempo total de ejecución
  • ANTHROPIC_API_KEY: Requerido para Claude API (no se utiliza para Bedrock/Vertex)
  • Entorno específico del proveedor: AWS_REGION, variables de proyecto/región para Vertex
Las banderas y parámetros exactos pueden variar según la versión de @anthropic-ai/claude-code. Ejecuta claude --help en tu trabajo para ver las opciones admitidas.

Personalización del comportamiento de Claude

Puedes guiar a Claude de dos formas principales:
  1. CLAUDE.md: Define estándares de codificación, requisitos de seguridad y convenciones de proyecto. Claude lee esto durante las ejecuciones y sigue tus reglas.
  2. Indicaciones personalizadas: Pasa instrucciones específicas de tarea a través de prompt/prompt_file en el trabajo. Utiliza diferentes indicaciones para diferentes trabajos (por ejemplo, revisión, implementación, refactorización).