Claude Code GitLab CI/CD
Узнайте об интеграции Claude Code в ваш рабочий процесс разработки с GitLab CI/CD
Claude Code для GitLab CI/CD в настоящее время находится в бета-версии. Функции и функциональность могут изменяться по мере совершенствования опыта.
Эта интеграция поддерживается GitLab. Для получения поддержки см. следующую проблему GitLab.
Эта интеграция построена на основе Claude Code CLI и SDK, обеспечивая программное использование Claude в ваших заданиях CI/CD и пользовательских рабочих процессах автоматизации.
Зачем использовать Claude Code с GitLab?
- Мгновенное создание MR: Опишите, что вам нужно, и Claude предложит полный MR с изменениями и объяснением
- Автоматизированная реализация: Превратите проблемы в рабочий код одной командой или упоминанием
- Осведомленность о проекте: Claude следует вашим руководящим принципам
CLAUDE.md
и существующим шаблонам кода - Простая настройка: Добавьте одно задание в
.gitlab-ci.yml
и замаскированную переменную CI/CD - Готовность для предприятий: Выберите Anthropic API, AWS Bedrock или Google Vertex AI для соответствия требованиям резидентности данных и закупок
- Безопасность по умолчанию: Работает в ваших GitLab runners с защитой ветвей и утверждениями
Как это работает
Claude Code использует GitLab CI/CD для выполнения задач ИИ в изолированных заданиях и фиксации результатов обратно через MR:
-
Оркестрация на основе событий: GitLab прослушивает выбранные вами триггеры (например, комментарий, который упоминает
@claude
в проблеме, MR или потоке обзора). Задание собирает контекст из потока и репозитория, создает подсказки из этого ввода и запускает Claude Code. -
Абстракция провайдера: Используйте провайдера, который подходит вашей среде:
- Anthropic API (SaaS)
- AWS Bedrock (доступ на основе IAM, межрегиональные опции)
- Google Vertex AI (нативный GCP, Workload Identity Federation)
-
Изолированное выполнение: Каждое взаимодействие выполняется в контейнере со строгими правилами сети и файловой системы. Claude Code обеспечивает разрешения с областью действия рабочего пространства для ограничения записей. Каждое изменение проходит через MR, чтобы рецензенты видели различия, и утверждения по-прежнему применяются.
Выберите региональные конечные точки для уменьшения задержки и соответствия требованиям суверенитета данных при использовании существующих облачных соглашений.
Что может делать Claude?
Claude Code обеспечивает мощные рабочие процессы CI/CD, которые трансформируют то, как вы работаете с кодом:
- Создавать и обновлять MR из описаний проблем или комментариев
- Анализировать регрессии производительности и предлагать оптимизации
- Реализовывать функции непосредственно в ветке, затем открывать MR
- Исправлять ошибки и регрессии, выявленные тестами или комментариями
- Отвечать на последующие комментарии для итерации по запрошенным изменениям
Настройка
Быстрая настройка
Самый быстрый способ начать - добавить минимальное задание в ваш .gitlab-ci.yml
и установить ваш API-ключ как замаскированную переменную.
-
Добавьте замаскированную переменную CI/CD
- Перейдите в Настройки → CI/CD → Переменные
- Добавьте
ANTHROPIC_API_KEY
(замаскированную, защищенную по необходимости)
-
Добавьте задание Claude в
.gitlab-ci.yml
После добавления задания и вашей переменной ANTHROPIC_API_KEY
, протестируйте, запустив задание вручную из CI/CD → Пайплайны, или запустите его из MR, чтобы позволить Claude предложить обновления в ветке и открыть MR при необходимости.
Для запуска на AWS Bedrock или Google Vertex AI вместо Anthropic API, см. раздел Использование с AWS Bedrock и Google Vertex AI ниже для настройки аутентификации и среды.
Ручная настройка (рекомендуется для продакшена)
Если вы предпочитаете более контролируемую настройку или нуждаетесь в корпоративных провайдерах:
-
Настройте доступ к провайдеру:
- Anthropic API: Создайте и сохраните
ANTHROPIC_API_KEY
как замаскированную переменную CI/CD - AWS Bedrock: Настройте GitLab → AWS OIDC и создайте IAM роль для Bedrock
- Google Vertex AI: Настройте Workload Identity Federation для GitLab → GCP
- Anthropic API: Создайте и сохраните
-
Добавьте учетные данные проекта для операций GitLab API:
- Используйте
CI_JOB_TOKEN
по умолчанию, или создайте Project Access Token с областьюapi
- Сохраните как
GITLAB_ACCESS_TOKEN
(замаскированный), если используете PAT
- Используйте
-
Добавьте задание Claude в
.gitlab-ci.yml
(см. примеры ниже) -
(Опционально) Включите триггеры на основе упоминаний:
- Добавьте проектный webhook для “Комментариев (заметок)” к вашему слушателю событий (если вы его используете)
- Пусть слушатель вызывает API триггера пайплайна с переменными типа
AI_FLOW_INPUT
иAI_FLOW_CONTEXT
, когда комментарий содержит@claude
Примеры использования
Превращение проблем в MR
В комментарии к проблеме:
Claude анализирует проблему и кодовую базу, записывает изменения в ветку и открывает MR для обзора.
Получение помощи в реализации
В обсуждении MR:
Claude предлагает изменения, добавляет код с соответствующим кэшированием и обновляет MR.
Быстрое исправление ошибок
В комментарии к проблеме или MR:
Claude находит ошибку, реализует исправление и обновляет ветку или открывает новый MR.
Использование с AWS Bedrock и Google Vertex AI
Для корпоративных сред вы можете запускать Claude Code полностью на вашей облачной инфраструктуре с тем же опытом разработчика.
Предварительные требования
Перед настройкой Claude Code с AWS Bedrock вам нужно:
- Аккаунт AWS с доступом к Amazon Bedrock для желаемых моделей Claude
- GitLab, настроенный как провайдер идентичности OIDC в AWS IAM
- IAM роль с разрешениями Bedrock и политикой доверия, ограниченной вашим проектом/ссылками GitLab
- Переменные GitLab CI/CD для принятия роли:
AWS_ROLE_TO_ASSUME
(ARN роли)AWS_REGION
(регион Bedrock)
Инструкции по настройке
Настройте AWS, чтобы позволить заданиям GitLab CI принимать IAM роль через OIDC (без статических ключей).
Требуемая настройка:
- Включите Amazon Bedrock и запросите доступ к вашим целевым моделям Claude
- Создайте IAM OIDC провайдера для GitLab, если еще не присутствует
- Создайте IAM роль, которой доверяет GitLab OIDC провайдер, ограниченную вашим проектом и защищенными ссылками
- Прикрепите разрешения с минимальными привилегиями для API вызова Bedrock
Требуемые значения для хранения в переменных CI/CD:
AWS_ROLE_TO_ASSUME
AWS_REGION
Добавьте переменные в Настройки → CI/CD → Переменные:
Используйте пример задания AWS Bedrock выше для обмена токена задания GitLab на временные учетные данные AWS во время выполнения.
Предварительные требования
Перед настройкой Claude Code с AWS Bedrock вам нужно:
- Аккаунт AWS с доступом к Amazon Bedrock для желаемых моделей Claude
- GitLab, настроенный как провайдер идентичности OIDC в AWS IAM
- IAM роль с разрешениями Bedrock и политикой доверия, ограниченной вашим проектом/ссылками GitLab
- Переменные GitLab CI/CD для принятия роли:
AWS_ROLE_TO_ASSUME
(ARN роли)AWS_REGION
(регион Bedrock)
Инструкции по настройке
Настройте AWS, чтобы позволить заданиям GitLab CI принимать IAM роль через OIDC (без статических ключей).
Требуемая настройка:
- Включите Amazon Bedrock и запросите доступ к вашим целевым моделям Claude
- Создайте IAM OIDC провайдера для GitLab, если еще не присутствует
- Создайте IAM роль, которой доверяет GitLab OIDC провайдер, ограниченную вашим проектом и защищенными ссылками
- Прикрепите разрешения с минимальными привилегиями для API вызова Bedrock
Требуемые значения для хранения в переменных CI/CD:
AWS_ROLE_TO_ASSUME
AWS_REGION
Добавьте переменные в Настройки → CI/CD → Переменные:
Используйте пример задания AWS Bedrock выше для обмена токена задания GitLab на временные учетные данные AWS во время выполнения.
Предварительные требования
Перед настройкой Claude Code с Google Vertex AI вам нужно:
- Проект Google Cloud с:
- Включенным API Vertex AI
- Настроенным Workload Identity Federation для доверия GitLab OIDC
- Выделенный сервисный аккаунт только с требуемыми ролями Vertex AI
- Переменные GitLab CI/CD для WIF:
GCP_WORKLOAD_IDENTITY_PROVIDER
(полное имя ресурса)GCP_SERVICE_ACCOUNT
(email сервисного аккаунта)
Инструкции по настройке
Настройте Google Cloud, чтобы позволить заданиям GitLab CI олицетворять сервисный аккаунт через Workload Identity Federation.
Требуемая настройка:
- Включите API учетных данных IAM, API STS и API Vertex AI
- Создайте пул идентичности рабочей нагрузки и провайдера для GitLab OIDC
- Создайте выделенный сервисный аккаунт с ролями Vertex AI
- Предоставьте принципалу WIF разрешение на олицетворение сервисного аккаунта
Требуемые значения для хранения в переменных CI/CD:
GCP_WORKLOAD_IDENTITY_PROVIDER
GCP_SERVICE_ACCOUNT
Добавьте переменные в Настройки → CI/CD → Переменные:
Используйте пример задания Google Vertex AI выше для аутентификации без хранения ключей.
Примеры конфигурации
Ниже приведены готовые к использованию фрагменты, которые вы можете адаптировать к вашему пайплайну.
Базовый .gitlab-ci.yml (Anthropic API)
Пример задания AWS Bedrock (OIDC)
Предварительные требования:
- Amazon Bedrock включен с доступом к выбранным моделям Claude
- GitLab OIDC настроен в AWS с ролью, которая доверяет вашему проекту и ссылкам GitLab
- IAM роль с разрешениями Bedrock (рекомендуются минимальные привилегии)
Требуемые переменные CI/CD:
AWS_ROLE_TO_ASSUME
: ARN IAM роли для доступа к BedrockAWS_REGION
: регион Bedrock (например,us-west-2
)
ID моделей для Bedrock включают региональные префиксы и суффиксы версий (например, us.anthropic.claude-3-7-sonnet-20250219-v1:0
). Передайте желаемую модель через конфигурацию вашего задания или подсказку, если ваш рабочий процесс это поддерживает.
Пример задания Google Vertex AI (Workload Identity Federation)
Предварительные требования:
- API Vertex AI включен в вашем проекте GCP
- Workload Identity Federation настроен для доверия GitLab OIDC
- Сервисный аккаунт с разрешениями Vertex AI
Требуемые переменные CI/CD:
GCP_WORKLOAD_IDENTITY_PROVIDER
: полное имя ресурса провайдераGCP_SERVICE_ACCOUNT
: email сервисного аккаунтаCLOUD_ML_REGION
: регион Vertex (например,us-east5
)
С 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
и тайм-аута задания - Ограничьте параллелизм для контроля параллельных запусков
- Используйте специфичные команды
Безопасность и управление
- Каждое задание выполняется в изолированном контейнере с ограниченным сетевым доступом
- Изменения Claude проходят через MR, чтобы рецензенты видели каждое различие
- Защита ветвей и правила утверждения применяются к коду, сгенерированному ИИ
- Claude Code использует разрешения с областью действия рабочего пространства для ограничения записей
- Затраты остаются под вашим контролем, потому что вы приносите свои собственные учетные данные провайдера
Устранение неполадок
Claude не отвечает на команды @claude
- Убедитесь, что ваш пайплайн запускается (вручную, событие MR или через слушатель событий заметок/webhook)
- Убедитесь, что переменные CI/CD (
ANTHROPIC_API_KEY
или настройки облачного провайдера) присутствуют и не замаскированы - Проверьте, что комментарий содержит
@claude
(не/claude
) и что ваш триггер упоминания настроен
Задание не может писать комментарии или открывать MR
- Убедитесь, что
CI_JOB_TOKEN
имеет достаточные разрешения для проекта, или используйте Project Access Token с областьюapi
- Проверьте, что инструмент
mcp__gitlab
включен в--allowedTools
- Подтвердите, что задание выполняется в контексте MR или имеет достаточный контекст через переменные
AI_FLOW_*
Ошибки аутентификации
- Для Anthropic API: Подтвердите, что
ANTHROPIC_API_KEY
действителен и не истек - Для Bedrock/Vertex: Проверьте конфигурацию OIDC/WIF, олицетворение роли и имена секретов; подтвердите доступность региона и модели
Расширенная конфигурация
Общие параметры и переменные
Claude Code поддерживает эти часто используемые входные данные:
prompt
/prompt_file
: Предоставьте инструкции встроенно (-p
) или через файлmax_turns
: Ограничьте количество итераций взад-впередtimeout_minutes
: Ограничьте общее время выполненияANTHROPIC_API_KEY
: Требуется для Anthropic API (не используется для Bedrock/Vertex)- Специфичная для провайдера среда:
AWS_REGION
, переменные проекта/региона для Vertex
Точные флаги и параметры могут варьироваться в зависимости от версии @anthropic-ai/claude-code
. Запустите claude --help
в вашем задании, чтобы увидеть поддерживаемые опции.
Настройка поведения Claude
Вы можете направлять Claude двумя основными способами:
- CLAUDE.md: Определите стандарты кодирования, требования безопасности и соглашения проекта. Claude читает это во время выполнения и следует вашим правилам.
- Пользовательские подсказки: Передавайте инструкции, специфичные для задачи, через
prompt
/prompt_file
в задании. Используйте разные подсказки для разных заданий (например, обзор, реализация, рефакторинг).