Claude Code GitLab CI/CD
Aprende sobre la integración de Claude Code en tu flujo de trabajo de desarrollo con GitLab CI/CD
Claude Code para GitLab CI/CD está actualmente en beta. Las características y funcionalidades pueden evolucionar mientras refinamos la experiencia.
Esta integración es mantenida por GitLab. Para soporte, consulta el siguiente issue de GitLab.
Esta integración está construida sobre el CLI y SDK de Claude Code, habilitando 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 issues en código funcional con un solo comando o mención
- Consciente del proyecto: Claude sigue tus pautas de
CLAUDE.md
y patrones de código existentes - Configuración simple: Agrega un trabajo a
.gitlab-ci.yml
y una variable de CI/CD enmascarada - Listo para empresa: Elige Anthropic API, AWS Bedrock, o Google Vertex AI para cumplir con las necesidades de residencia de datos y adquisiciones
- Seguro por defecto: Se ejecuta en tus runners de GitLab con tu protección de ramas y aprobaciones
Cómo funciona
Claude Code usa GitLab CI/CD para ejecutar tareas de IA en trabajos aislados y confirmar resultados de vuelta a través de MRs:
-
Orquestación basada en eventos: GitLab escucha tus disparadores elegidos (por ejemplo, un comentario que menciona
@claude
en un issue, MR, o hilo de revisión). El trabajo recopila contexto del hilo y repositorio, construye prompts desde esa entrada, y ejecuta Claude Code. -
Abstracción de proveedor: Usa el proveedor que se ajuste a tu entorno:
- Anthropic API (SaaS)
- AWS Bedrock (acceso basado en IAM, opciones entre regiones)
- Google Vertex AI (nativo de GCP, Workload Identity Federation)
-
Ejecución en sandbox: 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 aún se apliquen.
Elige endpoints regionales para reducir latencia y cumplir con requisitos de soberanía de datos mientras usas acuerdos de nube existentes.
¿Qué puede hacer Claude?
Claude Code habilita flujos de trabajo de CI/CD poderosos que transforman cómo trabajas con código:
- Crear y actualizar MRs desde descripciones de issues o comentarios
- Analizar regresiones de rendimiento y proponer optimizaciones
- Implementar características directamente en una rama, luego abrir un MR
- Arreglar bugs 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 agregar un trabajo mínimo a tu .gitlab-ci.yml
y establecer tu clave API como una variable enmascarada.
-
Agregar una variable de CI/CD enmascarada
- Ve a Settings → CI/CD → Variables
- Agrega
ANTHROPIC_API_KEY
(enmascarada, protegida según sea necesario)
-
Agregar un trabajo de Claude a
.gitlab-ci.yml
Después de agregar el trabajo y tu variable ANTHROPIC_API_KEY
, prueba ejecutando el trabajo manualmente desde CI/CD → Pipelines, o dispáralo desde un MR para 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 la API de Anthropic, consulta la sección Usando con AWS Bedrock y Google Vertex AI a continuación para 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:
-
Configurar acceso de proveedor:
- Anthropic API: Crear y almacenar
ANTHROPIC_API_KEY
como una variable de CI/CD enmascarada - AWS Bedrock: Configurar GitLab → AWS OIDC y crear un rol IAM para Bedrock
- Google Vertex AI: Configurar Workload Identity Federation para GitLab → GCP
- Anthropic API: Crear y almacenar
-
Agregar credenciales de proyecto para operaciones de API de GitLab:
- Usar
CI_JOB_TOKEN
por defecto, o crear un Project Access Token con alcanceapi
- Almacenar como
GITLAB_ACCESS_TOKEN
(enmascarado) si usas un PAT
- Usar
-
Agregar el trabajo de Claude a
.gitlab-ci.yml
(ver ejemplos a continuación) -
(Opcional) Habilitar disparadores basados en menciones:
- Agregar un webhook de proyecto para “Comments (notes)” a tu listener de eventos (si usas uno)
- Hacer que el listener llame a la API de disparador de pipeline con variables como
AI_FLOW_INPUT
yAI_FLOW_CONTEXT
cuando un comentario contiene@claude
Casos de uso de ejemplo
Convertir issues en MRs
En un comentario de issue:
Claude analiza el issue y la base de código, escribe cambios en una rama, y abre un MR para revisión.
Obtener ayuda de implementación
En una discusión de MR:
Claude propone cambios, agrega código con caché apropiado, y actualiza el MR.
Arreglar bugs rápidamente
En un comentario de issue o MR:
Claude localiza el bug, implementa una corrección, y actualiza la rama o abre un nuevo MR.
Usando con AWS Bedrock y Google Vertex AI
Para entornos empresariales, puedes ejecutar Claude Code completamente en tu infraestructura de nube con la misma experiencia de desarrollador.
Prerrequisitos
Antes de configurar Claude Code con AWS Bedrock, necesitas:
- Una cuenta de AWS con acceso a Amazon Bedrock a los modelos Claude deseados
- GitLab configurado como un proveedor de identidad OIDC en AWS IAM
- Un rol IAM con permisos de Bedrock y una política de confianza restringida a tu proyecto/refs de GitLab
- Variables de CI/CD de GitLab para asunción de rol:
AWS_ROLE_TO_ASSUME
(ARN del rol)AWS_REGION
(región de Bedrock)
Instrucciones de configuración
Configurar 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:
- Habilitar Amazon Bedrock y solicitar acceso a tus modelos Claude objetivo
- Crear un proveedor OIDC de IAM para GitLab si no está presente ya
- Crear un rol IAM confiado por el proveedor OIDC de GitLab, restringido a tu proyecto y refs protegidos
- Adjuntar permisos de menor privilegio para APIs de invocación de Bedrock
Valores requeridos para almacenar en variables de CI/CD:
AWS_ROLE_TO_ASSUME
AWS_REGION
Agregar variables en Settings → CI/CD → Variables:
Usar el ejemplo de trabajo de AWS Bedrock arriba para intercambiar el token de trabajo de GitLab por credenciales temporales de AWS en tiempo de ejecución.
Prerrequisitos
Antes de configurar Claude Code con AWS Bedrock, necesitas:
- Una cuenta de AWS con acceso a Amazon Bedrock a los modelos Claude deseados
- GitLab configurado como un proveedor de identidad OIDC en AWS IAM
- Un rol IAM con permisos de Bedrock y una política de confianza restringida a tu proyecto/refs de GitLab
- Variables de CI/CD de GitLab para asunción de rol:
AWS_ROLE_TO_ASSUME
(ARN del rol)AWS_REGION
(región de Bedrock)
Instrucciones de configuración
Configurar 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:
- Habilitar Amazon Bedrock y solicitar acceso a tus modelos Claude objetivo
- Crear un proveedor OIDC de IAM para GitLab si no está presente ya
- Crear un rol IAM confiado por el proveedor OIDC de GitLab, restringido a tu proyecto y refs protegidos
- Adjuntar permisos de menor privilegio para APIs de invocación de Bedrock
Valores requeridos para almacenar en variables de CI/CD:
AWS_ROLE_TO_ASSUME
AWS_REGION
Agregar variables en Settings → CI/CD → Variables:
Usar el ejemplo de trabajo de AWS Bedrock arriba para intercambiar el token de trabajo de GitLab por credenciales temporales de AWS en tiempo de ejecución.
Prerrequisitos
Antes de configurar Claude Code con Google Vertex AI, necesitas:
- Un proyecto de Google Cloud con:
- API de Vertex AI habilitada
- Workload Identity Federation configurado para confiar en OIDC de GitLab
- Una cuenta de servicio dedicada con solo los roles requeridos de Vertex AI
- Variables de CI/CD de GitLab para WIF:
GCP_WORKLOAD_IDENTITY_PROVIDER
(nombre completo del recurso)GCP_SERVICE_ACCOUNT
(email de la cuenta de servicio)
Instrucciones de configuración
Configurar Google Cloud para permitir que los trabajos de CI de GitLab suplanten una cuenta de servicio a través de Workload Identity Federation.
Configuración requerida:
- Habilitar API de IAM Credentials, API de STS, y API de Vertex AI
- Crear un Workload Identity Pool y proveedor para OIDC de GitLab
- Crear una cuenta de servicio dedicada con roles de Vertex AI
- Otorgar al principal WIF permiso para suplantar la cuenta de servicio
Valores requeridos para almacenar en variables de CI/CD:
GCP_WORKLOAD_IDENTITY_PROVIDER
GCP_SERVICE_ACCOUNT
Agregar variables en Settings → CI/CD → Variables:
Usar el ejemplo de trabajo de Google Vertex AI arriba para autenticar sin almacenar claves.
Ejemplos de configuración
A continuación hay fragmentos listos para usar que puedes adaptar a tu pipeline.
.gitlab-ci.yml básico (Anthropic API)
Ejemplo de trabajo de AWS Bedrock (OIDC)
Prerrequisitos:
- Amazon Bedrock habilitado con acceso a tu(s) modelo(s) Claude elegido(s)
- OIDC de GitLab configurado en AWS con un rol que confía en tu proyecto y refs de GitLab
- Rol IAM con permisos de Bedrock (menor privilegio recomendado)
Variables de CI/CD requeridas:
AWS_ROLE_TO_ASSUME
: ARN del rol IAM para acceso a BedrockAWS_REGION
: Región de Bedrock (por ejemplo,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-3-7-sonnet-20250219-v1:0
). Pasa el modelo deseado a través de tu configuración de trabajo o prompt si tu flujo de trabajo lo soporta.
Ejemplo de trabajo de Google Vertex AI (Workload Identity Federation)
Prerrequisitos:
- API de Vertex AI habilitada en tu proyecto de GCP
- Workload Identity Federation configurado para confiar en OIDC de GitLab
- Una cuenta de servicio con permisos de Vertex AI
Variables de CI/CD requeridas:
GCP_WORKLOAD_IDENTITY_PROVIDER
: Nombre completo del recurso del proveedorGCP_SERVICE_ACCOUNT
: Email de la cuenta de servicioCLOUD_ML_REGION
: Región de Vertex (por ejemplo,us-east5
)
Con Workload Identity Federation, no necesitas almacenar claves de cuenta de servicio. Usa condiciones de confianza específicas del repositorio y cuentas de servicio de 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 de nube a tu repositorio! Siempre usa variables de CI/CD de GitLab:
- Agrega
ANTHROPIC_API_KEY
como una variable enmascarada (y protégela si es necesario) - Usa OIDC específico del proveedor donde sea posible (sin claves de larga duración)
- Limita permisos de trabajo y egreso de red
- Revisa los MRs de Claude como cualquier otro contribuidor
Optimizando rendimiento
- Mantén
CLAUDE.md
enfocado y conciso - Proporciona descripciones claras de issue/MR para reducir iteraciones
- Configura timeouts de trabajo sensatos para evitar ejecuciones descontroladas
- Cachea instalaciones de npm y paquetes en runners donde sea posible
Costos de CI
Al usar Claude Code con GitLab CI/CD, ten en cuenta los costos asociados:
-
Tiempo de GitLab Runner:
- Claude se ejecuta en tus runners de GitLab y consume minutos de cómputo
- Consulta la facturación de runner de tu plan de GitLab para detalles
-
Costos de API:
- Cada interacción de Claude consume tokens basados en el tamaño del prompt y 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 detalles
-
Consejos de optimización de costos:
- Usa comandos específicos de
@claude
para reducir turnos innecesarios - Establece valores apropiados de
max_turns
y timeout de trabajo - Limita la concurrencia para controlar ejecuciones paralelas
- Usa comandos específicos de
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 usa 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é disparando (manualmente, evento MR, o a través de un listener/webhook de evento de nota)
- Asegúrate de que las variables de CI/CD (
ANTHROPIC_API_KEY
o configuraciones de proveedor de nube) estén presentes y desenmascaradas - Verifica que el comentario contenga
@claude
(no/claude
) y que tu disparador de mención esté configurado
El trabajo no puede escribir comentarios o abrir MRs
- Asegúrate de que
CI_JOB_TOKEN
tenga permisos suficientes para el proyecto, o usa un Project Access Token con alcanceapi
- Verifica que la herramienta
mcp__gitlab
esté habilitada en--allowedTools
- Confirma que el trabajo se ejecute en el contexto del MR o tenga suficiente contexto a través de variables
AI_FLOW_*
Errores de autenticación
- Para Anthropic API: Confirma que
ANTHROPIC_API_KEY
sea válida y no haya expirado - Para Bedrock/Vertex: Verifica configuración de OIDC/WIF, suplantación de rol, y nombres de secretos; confirma disponibilidad de región y modelo
Configuración avanzada
Parámetros y variables comunes
Claude Code soporta estas entradas comúnmente usadas:
prompt
/prompt_file
: Proporcionar instrucciones en línea (-p
) o a través de un archivomax_turns
: Limitar el número de iteraciones de ida y vueltatimeout_minutes
: Limitar tiempo total de ejecuciónANTHROPIC_API_KEY
: Requerida para la API de Anthropic (no usada 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 opciones soportadas.
Personalizando el comportamiento de Claude
Puedes guiar a Claude de dos formas principales:
- CLAUDE.md: Define estándares de codificación, requisitos de seguridad, y convenciones del proyecto. Claude lee esto durante las ejecuciones y sigue tus reglas.
- Prompts personalizados: Pasa instrucciones específicas de tarea a través de
prompt
/prompt_file
en el trabajo. Usa diferentes prompts para diferentes trabajos (por ejemplo, revisar, implementar, refactorizar).