Claude Code GitLab CI/CD
Узнайте об интеграции Claude Code в ваш рабочий процесс разработки с GitLab CI/CD
[!NOTE]
Claude Code для GitLab CI/CD в настоящее время находится в бета-версии. Функции и возможности могут развиваться по мере совершенствования опыта.
Эта интеграция поддерживается GitLab. Для получения поддержки см. следующий вопрос GitLab.
[!NOTE]
Эта интеграция построена на основе Claude Code CLI и Agent SDK, обеспечивая программное использование Claude в ваших заданиях CI/CD и пользовательских рабочих процессах автоматизации.
Почему использовать Claude Code с GitLab?
- Мгновенное создание MR: Опишите, что вам нужно, и Claude предложит полный MR с изменениями и объяснением
- Автоматизированная реализация: Превратите проблемы в рабочий код с помощью одной команды или упоминания
- Осведомленность о проекте: Claude следует вашим рекомендациям
CLAUDE.mdи существующим шаблонам кода - Простая настройка: Добавьте одно задание в
.gitlab-ci.ymlи замаскированную переменную CI/CD - Готово для предприятия: Выберите Claude API, Amazon Bedrock или Google Cloud's Agent Platform для соответствия требованиям к месторасположению данных и закупкам
- Безопасно по умолчанию: Работает на ваших GitLab runners с вашей защитой ветвей и утверждениями
Как это работает
Claude Code использует GitLab CI/CD для запуска задач AI в изолированных заданиях и фиксации результатов обратно через MR:
-
Оркестровка, управляемая событиями: GitLab прослушивает выбранные вами триггеры (например, комментарий, упоминающий
@claudeв проблеме, MR или потоке рецензирования). Задание собирает контекст из потока и репозитория, создает подсказки из этого ввода и запускает Claude Code. -
Абстракция поставщика: Используйте поставщика, который подходит для вашей среды:
- Claude API (SaaS)
- Amazon Bedrock (доступ на основе IAM, опции между регионами)
- Google Cloud's Agent Platform (собственный GCP, Workload Identity Federation)
-
Изолированное выполнение: Каждое взаимодействие выполняется в контейнере со строгими правилами сети и файловой системы. Claude Code обеспечивает разрешения с областью действия рабочего пространства для ограничения записей. Каждое изменение проходит через MR, чтобы рецензенты видели diff и применялись утверждения.
Выберите региональные конечные точки, чтобы снизить задержку и соответствовать требованиям суверенитета данных при использовании существующих облачных соглашений.
Что может делать Claude?
В конвейере GitLab Claude Code может:
- Создавать и обновлять MR на основе описаний проблем или комментариев
- Анализировать регрессии производительности и предлагать оптимизации
- Реализовывать функции непосредственно в ветке, а затем открывать MR
- Исправлять ошибки и регрессии, выявленные тестами или комментариями
- Отвечать на последующие комментарии для итерации по запрошенным изменениям
Настройка
Быстрая настройка
Самый быстрый способ начать работу — добавить минимальное задание в ваш .gitlab-ci.yml и установить ваш API ключ как замаскированную переменную.
-
Добавьте замаскированную переменную CI/CD
- Перейдите в Settings → CI/CD → Variables
- Добавьте
ANTHROPIC_API_KEY(замаскирована, защищена при необходимости)
-
Добавьте задание Claude в
.gitlab-ci.yml
stages:
- ai
claude:
stage: ai
image: node:24-alpine3.21
# Adjust rules to fit how you want to trigger the job:
# - manual runs
# - merge request events
# - web/API triggers when a comment contains '@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
# The installer places claude in ~/.local/bin, which isn't on PATH in this image
- export PATH="$HOME/.local/bin:$PATH"
script:
# Optional: start a GitLab MCP server if your setup provides one
- /bin/gitlab-mcp-server || true
# Use AI_FLOW_* variables when invoking via web/API triggers with context 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
После добавления задания и переменной ANTHROPIC_API_KEY протестируйте, запустив задание вручную из CI/CD → Pipelines, или запустите его из MR, чтобы Claude предложил обновления в ветке и открыл MR при необходимости.
[!NOTE]
Для запуска на Amazon Bedrock или Google Cloud's Agent Platform вместо Claude API см. раздел Using with Amazon Bedrock and Google Cloud ниже для аутентификации и настройки окружения.
Ручная настройка (рекомендуется для production)
Если вы предпочитаете более контролируемую настройку или вам нужны поставщики услуг для предприятий:
-
Настройте доступ к поставщику услуг:
- Claude API: Создайте и сохраните
ANTHROPIC_API_KEYкак замаскированную переменную CI/CD - Amazon Bedrock: Configure GitLab → AWS OIDC и создайте роль IAM для Amazon Bedrock
- Google Cloud's Agent Platform: Configure Workload Identity Federation for GitLab → GCP
- Claude API: Создайте и сохраните
-
Добавьте учетные данные проекта для операций GitLab API:
- Используйте
CI_JOB_TOKENпо умолчанию или создайте Project Access Token с областьюapi - Сохраните как
GITLAB_ACCESS_TOKEN(замаскирована), если используете PAT
- Используйте
-
Добавьте задание Claude в
.gitlab-ci.yml: используйте задание Quick setup для Claude API или задание поставщика услуг из Configuration examples -
(Опционально) Включите триггеры, управляемые упоминаниями:
- Добавьте webhook проекта для "Comments (notes)" к вашему обработчику событий (если вы его используете)
- Пусть обработчик вызывает API триггера pipeline с переменными, такими как
AI_FLOW_INPUTиAI_FLOW_CONTEXT, когда комментарий содержит@claude
Примеры использования
Преобразование проблем в MR
В комментарии к проблеме:
@claude implement this feature based on the issue description
Claude анализирует проблему и кодовую базу, вносит изменения в ветку и открывает MR для проверки.
Получение помощи с реализацией
В обсуждении MR:
@claude suggest a concrete approach to cache the results of this API call
Claude предлагает изменения, добавляет код с надлежащим кешированием и обновляет MR.
Быстрое исправление ошибок
В комментарии к проблеме или MR:
@claude fix the TypeError in the user dashboard component
Claude находит ошибку, реализует исправление и обновляет ветку или открывает новый MR.
Использование с Amazon Bedrock и Google Cloud
Для корпоративных сред вы можете запустить Claude Code полностью на инфраструктуре вашего облака с тем же опытом разработчика.
[tab] Amazon Bedrock
Предварительные требования
Перед настройкой Claude Code с Amazon Bedrock вам потребуется:
- Учетная запись AWS с доступом к Amazon Bedrock для нужных моделей Claude
- GitLab, настроенный как поставщик идентификации OIDC в AWS IAM
- Роль IAM с разрешениями Amazon Bedrock и политикой доверия, ограниченной вашим проектом/ссылками GitLab
- Переменные GitLab CI/CD для предположения роли:
AWS_ROLE_TO_ASSUME(ARN роли)AWS_REGION(регион Amazon Bedrock)Инструкции по настройке
Настройте AWS, чтобы разрешить заданиям GitLab CI предполагать роль IAM через OIDC (без статических ключей).
Требуемая настройка:
- Включите Amazon Bedrock и запросите доступ к целевым моделям Claude
- Создайте поставщика OIDC IAM для GitLab, если он еще не существует
- Создайте роль IAM, доверяющую поставщику OIDC GitLab, ограниченную вашим проектом и защищенными ссылками
- Присоедините разрешения с минимальными привилегиями для API вызова Amazon Bedrock
Используйте пример задания Amazon Bedrock для обмена токена OIDC задания на временные учетные данные AWS во время выполнения.
[tab] Google Cloud's Agent Platform
Предварительные требования
Перед настройкой Claude Code с Google Cloud's Agent Platform вам потребуется:
- Проект Google Cloud с:
- включенным API Google Cloud's Agent Platform
- настроенной федерацией рабочей нагрузки для доверия OIDC GitLab
- Выделенная учетная запись службы только с требуемыми ролями Google Cloud's Agent Platform
- Переменные GitLab CI/CD:
GCP_WORKLOAD_IDENTITY_PROVIDER(имя ресурса поставщика без префикса//iam.googleapis.com/, напримерprojects/123456789/locations/global/workloadIdentityPools/my-pool/providers/my-provider)GCP_SERVICE_ACCOUNT(адрес электронной почты учетной записи службы)GCP_PROJECT_ID(идентификатор проекта Google Cloud)Инструкции по настройке
Настройте Google Cloud, чтобы разрешить заданиям GitLab CI олицетворять учетную запись службы через федерацию рабочей нагрузки.
Требуемая настройка:
- Включите API учетных данных IAM, API STS и API Google Cloud's Agent Platform
- Создайте пул рабочей нагрузки и поставщика для OIDC GitLab
- Создайте выделенную учетную запись службы с ролями Google Cloud's Agent Platform
- Предоставьте субъекту WIF разрешение на олицетворение учетной записи службы
Используйте пример задания Agent Platform для аутентификации без сохранения ключей.
Примеры конфигурации
Ниже приведены готовые к использованию фрагменты кода, которые вы можете адаптировать для своего конвейера.
Пример задания Amazon Bedrock (OIDC)
Предварительные требования:
- Amazon Bedrock включен с доступом к выбранной модели Claude
- GitLab OIDC настроен в AWS с ролью, которая доверяет вашему проекту GitLab и refs
- Роль IAM с разрешениями Amazon Bedrock (рекомендуется принцип наименьших привилегий)
Требуемые переменные CI/CD:
AWS_ROLE_TO_ASSUME: ARN роли IAM для доступа к Amazon BedrockAWS_REGION: регион Amazon Bedrock (например,us-west-2)
GitLab создает токен OIDC задания из блока id_tokens: и предоставляет его как GITLAB_OIDC_TOKEN. Установите aud на значение аудитории, которое вы настроили на поставщике идентификации OIDC IAM в AWS, например URL вашего экземпляра GitLab.
stages:
- ai
claude-bedrock:
stage: ai
image: node:24-alpine3.21
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
id_tokens:
GITLAB_OIDC_TOKEN:
aud: https://gitlab.example.com
before_script:
- apk add --no-cache bash curl jq git aws-cli
- curl -fsSL https://claude.ai/install.sh | bash
# The installer places claude in ~/.local/bin, which isn't on PATH in this image
- export PATH="$HOME/.local/bin:$PATH"
# Exchange the job's OIDC token for AWS credentials
- export AWS_WEB_IDENTITY_TOKEN_FILE="/tmp/oidc_token"
- printf "%s" "$GITLAB_OIDC_TOKEN" > "$AWS_WEB_IDENTITY_TOKEN_FILE"
- >
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"
CLAUDE_CODE_USE_BEDROCK: "1"
[!NOTE]
Идентификаторы моделей для Amazon Bedrock включают префиксы, специфичные для региона (например,
us.anthropic.claude-sonnet-4-6). Передайте желаемую модель через конфигурацию задания или подсказку, если ваш рабочий процесс это поддерживает.
Пример задания Agent Platform (Workload Identity Federation)
Предварительные требования:
- API Agent Platform Google Cloud включен в вашем проекте GCP
- Workload Identity Federation настроена для доверия GitLab OIDC
- Учетная запись сервиса с разрешениями Google Cloud Agent Platform
Требуемые переменные CI/CD:
GCP_WORKLOAD_IDENTITY_PROVIDER: имя ресурса поставщика без префикса//iam.googleapis.com/, напримерprojects/123456789/locations/global/workloadIdentityPools/my-pool/providers/my-providerGCP_SERVICE_ACCOUNT: адрес электронной почты учетной записи сервисаGCP_PROJECT_ID: идентификатор проекта Google CloudCLOUD_ML_REGION: регион Google Cloud Agent Platform (например,us-east5)
GitLab создает токен OIDC задания из блока id_tokens: и предоставляет его как GITLAB_OIDC_TOKEN. Установите aud на значение аудитории, которое вы настроили на поставщике Workload Identity Pool, например URL вашего экземпляра GitLab. Задание записывает токен в файл, и запись credential_source конфигурации учетных данных указывает библиотекам аутентификации Google читать его оттуда. Установка GOOGLE_APPLICATION_CREDENTIALS на файл конфигурации учетных данных делает его доступным для Claude Code через Application Default Credentials.
stages:
- ai
claude-vertex:
stage: ai
image: gcr.io/google.com/cloudsdktool/google-cloud-cli:slim
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
id_tokens:
GITLAB_OIDC_TOKEN:
aud: https://gitlab.example.com
before_script:
- apt-get update && apt-get install -y git && apt-get clean
- curl -fsSL https://claude.ai/install.sh | bash
# The installer places claude in ~/.local/bin, which isn't on PATH in this image
- export PATH="$HOME/.local/bin:$PATH"
# Write the job's OIDC token where credential_source expects it
- printf "%s" "$GITLAB_OIDC_TOKEN" > /tmp/oidc_token
# Write the WIF credential configuration to a file (no downloaded keys)
- |
cat > /tmp/cred.json <<EOF
{
"type": "external_account",
"audience": "//iam.googleapis.com/${GCP_WORKLOAD_IDENTITY_PROVIDER}",
"subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
"token_url": "https://sts.googleapis.com/v1/token",
"credential_source": {
"file": "/tmp/oidc_token"
},
"service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/${GCP_SERVICE_ACCOUNT}:generateAccessToken"
}
EOF
# Expose the credentials to Claude Code via Application Default Credentials
- export GOOGLE_APPLICATION_CREDENTIALS=/tmp/cred.json
# Authenticate the gcloud CLI with the same credential configuration
- gcloud auth login --cred-file=/tmp/cred.json
- gcloud config set project "$GCP_PROJECT_ID"
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"
CLAUDE_CODE_USE_VERTEX: "1"
ANTHROPIC_VERTEX_PROJECT_ID: "$GCP_PROJECT_ID"
[!NOTE]
С Workload Identity Federation вам не нужно хранить ключи учетной записи сервиса. Используйте условия доверия, специфичные для репозитория, и учетные записи сервиса с наименьшими привилегиями.
Лучшие практики
Конфигурация CLAUDE.md
Создайте файл CLAUDE.md в корне репозитория для определения стандартов кодирования, критериев проверки и правил, специфичных для проекта. Claude читает этот файл во время запусков и следует вашим соглашениям при предложении изменений.
Соображения безопасности
Никогда не коммитьте API ключи или облачные учетные данные в ваш репозиторий. Всегда используйте переменные GitLab CI/CD:
- Добавьте
ANTHROPIC_API_KEYкак замаскированную переменную (и защитите её при необходимости) - Используйте OIDC, специфичный для поставщика, где это возможно (без долгоживущих ключей)
- Ограничьте разрешения заданий и исходящий сетевой трафик
- Проверяйте MR Claude как любого другого участника
Оптимизация производительности
- Держите
CLAUDE.mdсосредоточенным и кратким - Предоставляйте четкие описания проблем/MR для сокращения итераций
- Кэшируйте установки npm и пакетов в runners где это возможно
Затраты на CI
При использовании Claude Code с GitLab CI/CD помните о связанных затратах:
-
Время GitLab Runner:
- Claude работает на ваших GitLab runners и потребляет минуты вычислений
- Подробнее см. в информации о биллинге runner вашего плана GitLab
-
Затраты на API:
- Каждое взаимодействие Claude потребляет токены на основе размера запроса и ответа
- Использование токенов варьируется в зависимости от сложности задачи и размера кодовой базы
- Подробнее см. в ценообразовании Anthropic
-
Советы по оптимизации затрат:
- Используйте специфичные команды
@claudeдля сокращения ненужных ходов - Установите подходящие значения
--max-turnsиtimeoutзадания - Ограничьте параллелизм для контроля параллельных запусков
- Используйте специфичные команды
Troubleshooting
Claude не отвечает на команды @claude
- Убедитесь, что ваш pipeline запускается (вручную, событием MR или через слушатель событий note/webhook)
- Убедитесь, что переменные
ANTHROPIC_API_KEYили переменные облачного провайдера присутствуют - Проверьте, что комментарий содержит
@claude(не/claude) и что ваш триггер упоминания настроен
Задание не может писать комментарии или открывать MR
- Убедитесь, что
CI_JOB_TOKENимеет достаточные разрешения для проекта, или используйте Project Access Token с областьюapi - Проверьте, что инструмент
mcp__gitlabвключен в--allowedTools - Подтвердите, что задание выполняется в контексте MR или имеет достаточный контекст через переменные
AI_FLOW_*
Ошибки аутентификации
- Для Claude API: Подтвердите, что
ANTHROPIC_API_KEYдействителен и не истек - Для Amazon Bedrock или Agent Platform Google Cloud: Проверьте конфигурацию OIDC/WIF, олицетворение роли и имена секретов; подтвердите доступность региона и модели
Расширенная конфигурация
Общие параметры и переменные
Управляйте запусками Claude Code в ваших заданиях с помощью этих флагов CLI, ключевых слов GitLab и переменных:
-p: предоставьте инструкции встроенным образом, напримерclaude -p "Review this MR"--max-turns: ограничьте количество итераций туда и обратноtimeout: ограничьте общее время выполнения задания с помощью ключевого словаtimeoutна уровне задания GitLab, напримерtimeout: 30mANTHROPIC_API_KEY: требуется для Claude API (не используется для Amazon Bedrock или Google Cloud's Agent Platform)- Специфичная для провайдера среда:
AWS_REGION, переменные проекта/региона для Google Cloud's Agent Platform
[!NOTE]
Точные флаги и параметры могут отличаться в зависимости от версии
@anthropic-ai/claude-code. Запуститеclaude --helpв вашем задании, чтобы увидеть поддерживаемые опции.
Настройка поведения Claude
Вы можете направлять Claude двумя основными способами:
- CLAUDE.md: определите стандарты кодирования, требования безопасности и соглашения проекта. Claude читает это во время запусков и следует вашим правилам.
- Пользовательские подсказки: передайте инструкции, специфичные для задачи, через
-pв задании. Используйте разные подсказки для разных заданий (например, review, implement, refactor).