🚀 CI/CD интеграция
Как встроить Claude Code в автоматизированные пайплайны: headless-режим, GitHub Actions, GitLab CI/CD, безопасность API-ключей, контроль расходов и защита от злоупотреблений.
Общая схема пайплайна
Claude Code поддерживает полностью неинтерактивный режим через флаг --no-interactive.
В этом режиме CC выполняет задачу и завершает работу — никаких подсказок, никаких ожиданий ввода.
Это единственный режим пригодный для CI/CD.
Флаги для CI/CD
| Флаг | Описание | Когда использовать |
|---|---|---|
--no-interactive |
Выход по завершении, без ожидания ввода | Всегда в CI |
-p "текст" |
Промпт как аргумент командной строки | Для коротких задач |
--output-format json |
Структурированный вывод для парсинга | Когда результат нужно обработать скриптом |
--max-tokens N |
Ограничение токенов ответа | Контроль расходов |
--cwd /path |
Рабочая директория проекта | Когда CI-runner не в корне проекта |
-p (prompt) означает «выполни эту задачу». Без него CC запускает интерактивный REPL. Всегда используйте -p + --no-interactive вместе в CI — это гарантирует что процесс завершится.| Переменная | Значение / Пример | Назначение |
|---|---|---|
| ANTHROPIC_API_KEY | sk-ant-api03-... | Обязательна — аутентификация в API |
| ANTHROPIC_MODEL | claude-sonnet-5 | Переопределить модель без флага |
| ANTHROPIC_BASE_URL | https://api.anthropic.com | Для корпоративных прокси |
| CLAUDE_CODE_MAX_OUTPUT_TOKENS | 4096 | Глобальный лимит токенов |
| NO_COLOR | 1 | Отключить ANSI-цвета в логах CI |
.env файлах которые попадают в репозиторий. При утечке ключа — немедленно деактивируйте его в console.anthropic.com.Workflow запускается при открытии PR или добавлении новых коммитов. CC анализирует diff, проверяет безопасность, качество кода и логические ошибки, затем публикует комментарий прямо в PR через GitHub API.
fetch-depth: 0 чтобы получить разницу между ветками.npm install -g @anthropic-ai/claude-code. Кешировать через actions/cache для ускорения.git diff origin/main...HEAD ограничивает анализ только изменёнными файлами.-- '*.php' '*.ts' '*.vue' '*.py' в git diff критически важен. Без него в промпт попадут изменения lock-файлов, изображений, миграций — и вы потратите токены впустую. Адаптируйте расширения под свой проект.Официальный GitHub Action от Anthropic
Начиная с мая 2026, Anthropic выпустил официальный action anthropics/claude-code-action@v1,
который берёт на себя установку, аутентификацию и запуск CC — без необходимости вручную писать
npm install -g @anthropic-ai/claude-code. Action реагирует на review-комментарии в PR
и поддерживает явное ограничение инструментов через allowedTools.
allowedTools ограничивает набор инструментов которые CC может использовать в данном job. Для review достаточно Read,Grep,Glob — CC не сможет случайно изменить файлы или вызвать внешние API.Continuation — продолжение сессии между стадиями пайплайна
Флаг --resume <session_id> позволяет продолжить работу CC в следующем job с тем же контекстом,
что накопил предыдущий. Это особенно полезно в многостадийных пайплайнах: первая стадия находит проблемы,
вторая — пишет тесты для найденного, не теряя контекст.
Новые флаги headless-режима Новое · июнь 2026
| Флаг | Назначение |
|---|---|
--max-budget-usd X |
Денежный потолок на один запуск — CC останавливается при достижении лимита |
--max-turns N |
Жёсткий лимит итераций — предотвращает бесконечные циклы в CI |
--output-format json |
JSON-вывод для машинного парсинга (содержит session_id, total_cost_usd) |
--resume <session_id> |
Продолжение существующей сессии с сохранённым контекстом |
5 рычагов контроля расходов в CI
| Флаг / метод | Назначение |
|---|---|
--max-turns N | Жёсткий лимит итераций |
--max-budget-usd X | Денежный потолок на запуск |
--model sonnet | Sonnet для рутины, Opus для сложного анализа |
| concurrency groups | Лимит параллельных jobs в GitHub Actions |
| pipeline timeout | Общий таймаут workflow |
OpenTelemetry — наблюдаемость CI-агентов Новое · июнь 2026
CC поддерживает экспорт телеметрии через OTLP — трейсы и метрики можно отправлять в любой совместимый коллектор (Grafana, Jaeger, Datadog и др.).
Ночные задачи по расписанию
main. Только PR с тестами и evidence для human review. Автоматические коммиты в main без ревью — антипаттерн независимо от уровня уверенности модели.
Workflow запускается при пуше в main только если изменились файлы в app/
или src/. CC обновляет документацию на основе изменённых файлов и
автоматически делает commit.
[skip ci] в сообщении коммита предотвращает рекурсивный запуск workflow. Без него каждый авто-коммит документации снова запускал бы этот же job.types: [opened] — не на каждый push. Это предотвращает дублирование тестов при последующих коммитах в PR и снижает расходы на API.expose_as: "Claude Review" добавляет ссылку прямо в MR UI GitLab — разработчик видит кнопку «Claude Review» без необходимости искать артефакты вручную.pull_request триггер — убедитесь что он использует pull_request_target для форков, а не просто pull_request. Иначе workflow будет падать с ошибкой авторизации, а в логах появится частичный промпт без ANTHROPIC_API_KEY.
- НИКОГДА не хардкодить API key — только через Secrets/Variables в CI-платформе
- Ротировать ключи при любом подозрении на утечку (логи, коммит, форк репозитория)
- Использовать отдельный API ключ для CI, не личный ключ разработчика
- Настроить budget alerts в console.anthropic.com чтобы не получить сюрпризный счёт
- Никогда не публиковать вывод CC в открытые artifacts если diff содержал секреты
Защита от злоупотреблений
Ограничение прав CC в CI
- Логировать все CC-вызовы с timestamp, PR-номером, актором
- Хранить логи минимум 90 дней для расследования инцидентов
- Настроить alert при резком росте числа API-вызовов (возможная атака)
- При fork PR — проверять что runner не даёт доступ к secrets (в GitHub это по умолчанию)
Pre-commit hooks запускаются на машине разработчика до коммита — это самый ранний рубеж
защиты. CC-интеграция здесь дополняет, не заменяет, инструменты вроде gitleaks
или truffleHog.
--max-tokens 500 и краткий промпт чтобы минимизировать время. Команда может отключить хук через SKIP=claude-security-check git commit.--max-tokens 4096 для review, 500 для быстрых проверок. Устанавливайте всегда.opened, не на synchronize. Или проверять наличие предыдущего комментария.| Задача | В CI? | Почему / Почему нет | Рекомендуемый триггер |
|---|---|---|---|
| Code review PR | Да | Быстрая обратная связь без ожидания разработчика | pull_request: opened |
| Security scan | Да | Ранняя защита, автоматизируется чётко | push + pull_request |
| Генерация тестов | Да | Экономит время, тесты требуют review как обычный код | pull_request: opened |
| Обновление docs | Да | Документация актуальна без ручной работы | push: main |
| Release notes | Да | Хорошо поддаётся автоматизации по git log | release: published |
| Рефакторинг | Нет | Требует понимания контекста и human review изменений | Интерактивно, с проверкой |
| DB миграции | Нет | Необратимые операции — слишком высокий риск | Только вручную с approvals |
| Deploy в production | Нет | Критическая операция, всегда нужен human approval | Ручной триггер + approvals |
| Изменение config prod | Нет | Высокий риск, невозможно автоматически проверить корректность | Только вручную |
С чего начать: минимальная интеграция за 15 минут
.github/workflows/claude-review.yml с кодом из секции 3. Адаптируйте расширения файлов под ваш стек.