Claude Code GitLab CI/CD
Saiba como integrar Claude Code no seu fluxo de trabalho de desenvolvimento com GitLab CI/CD
Claude Code para GitLab CI/CD está atualmente em beta. Os recursos e funcionalidades podem evoluir conforme refinamos a experiência.
Esta integração é mantida pelo GitLab. Para obter suporte, consulte o seguinte problema do GitLab.
Esta integração é construída sobre o Claude Code CLI e Agent SDK, permitindo o uso programático do Claude em seus trabalhos de CI/CD e fluxos de trabalho de automação personalizados.
Por que usar Claude Code com GitLab?
- Criação instantânea de MR: Descreva o que você precisa, e Claude propõe um MR completo com alterações e explicação
- Implementação automatizada: Transforme problemas em código funcional com um único comando ou menção
- Ciente do projeto: Claude segue suas diretrizes
CLAUDE.mde padrões de código existentes - Configuração simples: Adicione um trabalho a
.gitlab-ci.ymle uma variável de CI/CD mascarada - Pronto para empresas: Escolha Claude API, Amazon Bedrock ou Google Vertex AI para atender às necessidades de residência de dados e compras
- Seguro por padrão: Executa em seus executores GitLab com sua proteção de branch e aprovações
Como funciona
Claude Code usa GitLab CI/CD para executar tarefas de IA em trabalhos isolados e confirmar resultados de volta via MRs:
-
Orquestração orientada por eventos: GitLab escuta seus gatilhos escolhidos (por exemplo, um comentário que menciona
@claudeem um problema, MR ou thread de revisão). O trabalho coleta contexto da thread e do repositório, constrói prompts a partir dessa entrada e executa Claude Code. -
Abstração de provedor: Use o provedor que se adequa ao seu ambiente:
- Claude API (SaaS)
- Amazon Bedrock (acesso baseado em IAM, opções entre regiões)
- Google Vertex AI (nativo do GCP, Workload Identity Federation)
-
Execução em sandbox: Cada interação é executada em um contêiner com regras rigorosas de rede e sistema de arquivos. Claude Code impõe permissões com escopo de workspace para restringir gravações. Cada alteração flui através de um MR para que os revisores vejam o diff e as aprovações ainda se apliquem.
Escolha endpoints regionais para reduzir latência e atender aos requisitos de soberania de dados enquanto usa acordos de nuvem existentes.
O que Claude pode fazer?
Claude Code permite fluxos de trabalho poderosos de CI/CD que transformam a forma como você trabalha com código:
- Criar e atualizar MRs a partir de descrições ou comentários de problemas
- Analisar regressões de desempenho e propor otimizações
- Implementar recursos diretamente em um branch, depois abrir um MR
- Corrigir bugs e regressões identificados por testes ou comentários
- Responder a comentários de acompanhamento para iterar sobre as alterações solicitadas
Configuração
Configuração rápida
A forma mais rápida de começar é adicionar um trabalho mínimo ao seu .gitlab-ci.yml e definir sua chave de API como uma variável mascarada.
-
Adicione uma variável de CI/CD mascarada
- Vá para Settings → CI/CD → Variables
- Adicione
ANTHROPIC_API_KEY(mascarada, protegida conforme necessário)
-
Adicione um trabalho Claude ao
.gitlab-ci.yml
stages:
- ai
claude:
stage: ai
image: node:24-alpine3.21
# Ajuste as regras para se adequar a como você deseja disparar o trabalho:
# - execuções manuais
# - eventos de merge request
# - gatilhos web/API quando um comentário contém '@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
- curl -fsSL https://claude.ai/install.sh | bash
script:
# Opcional: inicie um servidor GitLab MCP se sua configuração fornecer um
- /bin/gitlab-mcp-server || true
# Use variáveis AI_FLOW_* ao invocar via gatilhos web/API com payloads 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
Após adicionar o trabalho e sua variável ANTHROPIC_API_KEY, teste executando o trabalho manualmente em CI/CD → Pipelines, ou dispare-o a partir de um MR para deixar Claude propor atualizações em um branch e abrir um MR se necessário.
Para executar no Amazon Bedrock ou Google Vertex AI em vez da Claude API, consulte a seção Usando com Amazon Bedrock & Google Vertex AI abaixo para configuração de autenticação e ambiente.
Configuração manual (recomendada para produção)
Se você preferir uma configuração mais controlada ou precisar de provedores corporativos:
-
Configure o acesso do provedor:
- Claude API: Crie e armazene
ANTHROPIC_API_KEYcomo uma variável de CI/CD mascarada - Amazon Bedrock: Configure GitLab → AWS OIDC e crie uma função IAM para Bedrock
- Google Vertex AI: Configure Workload Identity Federation para GitLab → GCP
- Claude API: Crie e armazene
-
Adicione credenciais de projeto para operações da API GitLab:
- Use
CI_JOB_TOKENpor padrão, ou crie um Project Access Token com escopoapi - Armazene como
GITLAB_ACCESS_TOKEN(mascarado) se usar um PAT
- Use
-
Adicione o trabalho Claude ao
.gitlab-ci.yml(veja exemplos abaixo) -
(Opcional) Ative gatilhos orientados por menção:
- Adicione um webhook de projeto para "Comments (notes)" ao seu ouvinte de eventos (se você usar um)
- Faça o ouvinte chamar a API de gatilho de pipeline com variáveis como
AI_FLOW_INPUTeAI_FLOW_CONTEXTquando um comentário contiver@claude
Exemplos de casos de uso
Transforme problemas em MRs
Em um comentário de problema:
@claude implement this feature based on the issue description
Claude analisa o problema e a base de código, escreve alterações em um branch e abre um MR para revisão.
Obtenha ajuda de implementação
Em uma discussão de MR:
@claude suggest a concrete approach to cache the results of this API call
Claude propõe alterações, adiciona código com cache apropriado e atualiza o MR.
Corrija bugs rapidamente
Em um comentário de problema ou MR:
@claude fix the TypeError in the user dashboard component
Claude localiza o bug, implementa uma correção e atualiza o branch ou abre um novo MR.
Usando com Amazon Bedrock & Google Vertex AI
Para ambientes corporativos, você pode executar Claude Code inteiramente em sua infraestrutura de nuvem com a mesma experiência do desenvolvedor.
Pré-requisitos
Antes de configurar Claude Code com Amazon Bedrock, você precisa de:
- Uma conta AWS com acesso ao Amazon Bedrock para os modelos Claude desejados
- GitLab configurado como um provedor de identidade OIDC no AWS IAM
- Uma função IAM com permissões de Bedrock e uma política de confiança restrita ao seu projeto/refs do GitLab
- Variáveis de CI/CD do GitLab para assunção de função:
AWS_ROLE_TO_ASSUME(ARN da função)AWS_REGION(região do Bedrock)
Instruções de configuração
Configure AWS para permitir que trabalhos de CI do GitLab assumam uma função IAM via OIDC (sem chaves estáticas).
Configuração necessária:
- Ative Amazon Bedrock e solicite acesso aos seus modelos Claude alvo
- Crie um provedor OIDC do IAM para GitLab se ainda não estiver presente
- Crie uma função IAM confiável pelo provedor OIDC do GitLab, restrita ao seu projeto e refs protegidos
- Anexe permissões de privilégio mínimo para APIs de invocação do Bedrock
Valores necessários para armazenar em variáveis de CI/CD:
AWS_ROLE_TO_ASSUMEAWS_REGION
Adicione variáveis em Settings → CI/CD → Variables:
# Para Amazon Bedrock:
- AWS_ROLE_TO_ASSUME
- AWS_REGION
Use o exemplo de trabalho do Amazon Bedrock acima para trocar o token de trabalho do GitLab por credenciais AWS temporárias em tempo de execução.
Pré-requisitos
Antes de configurar Claude Code com Google Vertex AI, você precisa de:
- Um projeto Google Cloud com:
- Vertex AI API habilitada
- Workload Identity Federation configurada para confiar no OIDC do GitLab
- Uma conta de serviço dedicada com apenas as funções Vertex AI necessárias
- Variáveis de CI/CD do GitLab para WIF:
GCP_WORKLOAD_IDENTITY_PROVIDER(nome completo do recurso)GCP_SERVICE_ACCOUNT(email da conta de serviço)
Instruções de configuração
Configure Google Cloud para permitir que trabalhos de CI do GitLab representem uma conta de serviço via Workload Identity Federation.
Configuração necessária:
- Ative IAM Credentials API, STS API e Vertex AI API
- Crie um Workload Identity Pool e provedor para OIDC do GitLab
- Crie uma conta de serviço dedicada com funções Vertex AI
- Conceda ao principal WIF permissão para representar a conta de serviço
Valores necessários para armazenar em variáveis de CI/CD:
GCP_WORKLOAD_IDENTITY_PROVIDERGCP_SERVICE_ACCOUNT
Adicione variáveis em Settings → CI/CD → Variables:
# Para Google Vertex AI:
- GCP_WORKLOAD_IDENTITY_PROVIDER
- GCP_SERVICE_ACCOUNT
- CLOUD_ML_REGION (por exemplo, us-east5)
Use o exemplo de trabalho do Google Vertex AI acima para autenticar sem armazenar chaves.
Exemplos de configuração
Abaixo estão trechos prontos para usar que você pode adaptar ao seu 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
- curl -fsSL https://claude.ai/install.sh | bash
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 usará ANTHROPIC_API_KEY das variáveis de CI/CD
Exemplo de trabalho Amazon Bedrock (OIDC)
Pré-requisitos:
- Amazon Bedrock habilitado com acesso ao seu modelo Claude escolhido
- OIDC do GitLab configurado no AWS com uma função que confia no seu projeto e refs do GitLab
- Função IAM com permissões de Bedrock (privilégio mínimo recomendado)
Variáveis de CI/CD necessárias:
AWS_ROLE_TO_ASSUME: ARN da função IAM para acesso ao BedrockAWS_REGION: Região do Bedrock (por exemplo,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
- curl -fsSL https://claude.ai/install.sh | bash
# Troque o token OIDC do GitLab por credenciais 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"
IDs de modelo para Bedrock incluem prefixos específicos de região (por exemplo, us.anthropic.claude-sonnet-4-6). Passe o modelo desejado via sua configuração de trabalho ou prompt se seu fluxo de trabalho suportar.
Exemplo de trabalho Google Vertex AI (Workload Identity Federation)
Pré-requisitos:
- Vertex AI API habilitada em seu projeto GCP
- Workload Identity Federation configurada para confiar no OIDC do GitLab
- Uma conta de serviço com permissões Vertex AI
Variáveis de CI/CD necessárias:
GCP_WORKLOAD_IDENTITY_PROVIDER: Nome completo do recurso do provedorGCP_SERVICE_ACCOUNT: Email da conta de serviçoCLOUD_ML_REGION: Região do Vertex (por exemplo,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 && apt-get clean
- curl -fsSL https://claude.ai/install.sh | bash
# Autentique no Google Cloud via WIF (sem chaves baixadas)
- >
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"
Com Workload Identity Federation, você não precisa armazenar chaves de conta de serviço. Use condições de confiança específicas do repositório e contas de serviço com privilégio mínimo.
Melhores práticas
Configuração CLAUDE.md
Crie um arquivo CLAUDE.md na raiz do repositório para definir padrões de codificação, critérios de revisão e regras específicas do projeto. Claude lê este arquivo durante as execuções e segue suas convenções ao propor alterações.
Considerações de segurança
Nunca confirme chaves de API ou credenciais de nuvem em seu repositório. Sempre use variáveis de CI/CD do GitLab:
- Adicione
ANTHROPIC_API_KEYcomo uma variável mascarada (e proteja-a se necessário) - Use OIDC específico do provedor onde possível (sem chaves de longa duração)
- Limite permissões de trabalho e saída de rede
- Revise os MRs do Claude como qualquer outro colaborador
Otimizando desempenho
- Mantenha
CLAUDE.mdfocado e conciso - Forneça descrições claras de problema/MR para reduzir iterações
- Configure timeouts de trabalho sensatos para evitar execuções descontroladas
- Cache npm e instalações de pacotes em executores onde possível
Custos de CI
Ao usar Claude Code com GitLab CI/CD, esteja ciente dos custos associados:
-
Tempo do GitLab Runner:
- Claude é executado em seus executores GitLab e consome minutos de computação
- Consulte a cobrança de executor do seu plano GitLab para detalhes
-
Custos de API:
- Cada interação do Claude consome tokens com base no tamanho do prompt e resposta
- O uso de tokens varia pela complexidade da tarefa e tamanho da base de código
- Consulte Preços da Anthropic para detalhes
-
Dicas de otimização de custos:
- Use comandos
@claudeespecíficos para reduzir turnos desnecessários - Defina valores apropriados de
max_turnse timeout de trabalho - Limite concorrência para controlar execuções paralelas
- Use comandos
Segurança e governança
- Cada trabalho é executado em um contêiner isolado com acesso de rede restrito
- As alterações do Claude fluem através de MRs para que os revisores vejam cada diff
- Regras de proteção de branch e aprovação se aplicam ao código gerado por IA
- Claude Code usa permissões com escopo de workspace para restringir gravações
- Os custos permanecem sob seu controle porque você traz suas próprias credenciais de provedor
Solução de problemas
Claude não responde aos comandos @claude
- Verifique se seu pipeline está sendo disparado (manualmente, evento de MR ou via ouvinte de nota/webhook)
- Certifique-se de que as variáveis de CI/CD (
ANTHROPIC_API_KEYou configurações de provedor de nuvem) estão presentes e desmascaradas - Verifique se o comentário contém
@claude(não/claude) e se seu gatilho de menção está configurado
O trabalho não consegue escrever comentários ou abrir MRs
- Certifique-se de que
CI_JOB_TOKENtem permissões suficientes para o projeto, ou use um Project Access Token com escopoapi - Verifique se a ferramenta
mcp__gitlabestá habilitada em--allowedTools - Confirme se o trabalho é executado no contexto do MR ou tem contexto suficiente via variáveis
AI_FLOW_*
Erros de autenticação
- Para Claude API: Confirme que
ANTHROPIC_API_KEYé válida e não expirou - Para Bedrock/Vertex: Verifique configuração de OIDC/WIF, representação de função e nomes de segredos; confirme disponibilidade de região e modelo
Configuração avançada
Parâmetros e variáveis comuns
Claude Code suporta estas entradas comumente usadas:
prompt/prompt_file: Forneça instruções inline (-p) ou via arquivomax_turns: Limite o número de iterações de ida e voltatimeout_minutes: Limite o tempo total de execuçãoANTHROPIC_API_KEY: Necessário para Claude API (não usado para Bedrock/Vertex)- Ambiente específico do provedor:
AWS_REGION, variáveis de projeto/região para Vertex
Sinalizadores e parâmetros exatos podem variar por versão de @anthropic-ai/claude-code. Execute claude --help em seu trabalho para ver as opções suportadas.
Personalizando o comportamento do Claude
Você pode guiar Claude de duas formas principais:
- CLAUDE.md: Defina padrões de codificação, requisitos de segurança e convenções de projeto. Claude lê isso durante as execuções e segue suas regras.
- Prompts personalizados: Passe instruções específicas da tarefa via
prompt/prompt_fileno trabalho. Use prompts diferentes para trabalhos diferentes (por exemplo, revisão, implementação, refatoração).