Автоматизация и CI/CD
Использование безголового режима Claude Code в скриптах и CI/CD-конвейерах
Автоматизация и CI/CD¶
Claude Code поддерживает безголовый (headless) режим для использования в скриптах, CI/CD-конвейерах и автоматизированных рабочих процессах без участия человека.
Базовое использование¶
Однократное выполнение (режим -p)¶
# Базовое выполнение
claude -p "Проанализируй архитектуру этого проекта"
# Вывод в формате JSON
claude -p "Перечисли все TODO-комментарии" --output-format json
# Ограничение количества итераций
claude -p "Напиши юнит-тесты для UserService" --max-turns 5
Ограничение доступных инструментов¶
# Только чтение (запись запрещена)
claude -p "Проанализируй качество кода" --allowedTools Read,Glob,Grep
# Чтение и запись (без выполнения команд)
claude -p "Отрефактори этот файл" --allowedTools Read,Write,Edit
Пропуск запросов разрешений¶
В безопасных изолированных средах (например, Docker-контейнер или CI-окружение):
claude -p "Исправь все ошибки lint и закоммить" --dangerously-skip-permissions
Предупреждение безопасности:
--dangerously-skip-permissionsпропускает все запросы разрешений. Используйте только в доверенных изолированных средах.
Примеры интеграции с CI/CD¶
GitHub Actions¶
name: AI Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Run AI Code Review
env:
ANTHROPIC_BASE_URL: "https://asia.qcode.cc/api"
ANTHROPIC_AUTH_TOKEN: ${{ secrets.QCODE_API_KEY }}
run: |
claude -p "Проведи ревью изменений кода в этом PR, обрати внимание на безопасность и производительность" \
--output-format json \
--max-turns 3 \
--allowedTools Read,Glob,Grep \
> review.json
Автоматизация скриптами¶
#!/bin/bash
# auto-test.sh — автоматическая генерация и запуск тестов
export ANTHROPIC_BASE_URL="https://asia.qcode.cc/api"
export ANTHROPIC_AUTH_TOKEN="cr_your_api_key"
# Генерация тестов
claude -p "Сгенерируй юнит-тесты для всех файлов в src/services/" \
--max-turns 10 \
--allowedTools Read,Write,Glob,Grep,Bash
# Запуск тестов
npm test
Восстановление сессии¶
Можно сохранять контекст между вызовами:
# Первый вызов: анализ
claude -p "Проанализируй архитектуру проекта" --session-id "ci-task-42" --output-format json
# Второй вызов: предложения на основе анализа
claude -p "На основе предыдущего анализа предложи улучшения" --resume --session-id "ci-task-42"
Форматы вывода¶
| Формат | Параметр | Описание |
|---|---|---|
| Текст | --output-format text |
По умолчанию, удобочитаемый |
| JSON | --output-format json |
Структурированный вывод для парсинга скриптами |
| Потоковый JSON | --output-format stream-json |
Потоковый вывод в реальном времени |
Переменные окружения¶
| Переменная | Описание |
|---|---|
ANTHROPIC_BASE_URL |
Адрес API QCode.cc |
ANTHROPIC_AUTH_TOKEN |
API-ключ |
CLAUDE_CODE_MAX_TURNS |
Максимальное количество итераций по умолчанию |
CLAUDE_CODE_OUTPUT_FORMAT |
Формат вывода по умолчанию |
Лучшие практики¶
-
Всегда ограничивайте итерации: в CI используйте
--max-turnsдля предотвращения бесконечного выполнения -
Ограничивайте инструменты: через
--allowedToolsоткрывайте только необходимые инструменты -
Изолированная среда: используйте
--dangerously-skip-permissionsв Docker-контейнерах -
JSON-вывод: для автоматизации рекомендуется
--output-format jsonдля удобного парсинга
Следующие шаги¶
-
Смотрите Система хуков для автоматического запуска действий в CI
-
Смотрите Советы по CLI для дополнительных приёмов командной строки