Claude Certified Architect · Модуль 3 · Урок 3.6
Интеграция в конвейер CI/CD
Суть
Флаг -p (или --print) обязателен для неинтерактивного CI/CD: без него конвейер зависает, ожидая ввода. --output-format json с --json-schema даёт структурированный вывод для автоматических инлайн-комментариев в PR.
Batch против real-time и дедупликация
Batch API (до 24ч задержки, экономия 50%) уместен для неблокирующих асинхронных задач; для блокирующих pre-merge проверок нужен real-time. При повторных прогонах включайте прежние находки в контекст и просите сообщать только новые/нерешённые — иначе дубли комментариев. Ревью кода ведите независимым инстансом (не той сессией, что писала код) — ради непредвзятости.
# Верно: неинтерактивный режим со структурированным выводом
claude -p "Проанализируй этот pull request на проблемы безопасности" \
--output-format json \
--json-schema review-schema.json
# Неверно: зависнет в ожидании интерактивного ввода
claude "Проанализируй этот pull request на проблемы безопасности"Anti-patterns
| Ловушка | Почему не работает | Верный паттерн |
|---|---|---|
Конвейер завис → выставить CLAUDE_HEADLESS=true | Такой переменной не существует — правдоподобный отвлекающий вариант | Флаг -p: claude -p "prompt" |
Конвейер завис → перенаправить stdin из /dev/null | Unix-обходник не учитывает дизайн интерактивного режима — поведение неопределено | Флаг -p — документированный неинтерактивный режим |
| Перевести блокирующие pre-merge проверки на Batch ради экономии | Batch — до 24ч без SLA; разработчики не дождутся | Pre-merge — real-time; Batch — лишь для неблокирующего (ночные отчёты) |
| Повторный прогон ревью без прежних находок в контексте | Claude переотметит те же проблемы как новые — дубли комментариев | Включить прежние находки; просить лишь новые/нерешённые |
Exam traps
| Ловушка | Почему не работает | Верный паттерн |
|---|---|---|
Путать -p с несуществующими флагами/переменными | CLAUDE_HEADLESS, --batch для этого не существуют | Только -p/--print |
| Batch для чувствительных к задержке блокирующих задач | До 24ч без SLA | Batch — неблокирующее; real-time — блокирующее |
| Ревью кода той же сессией, что писала код | Вносит предвзятость | Независимый инстанс ревью |
Практическое задание (T6)
- Написать шаг CI с вызовом Claude Code через
-p; проверить, что джоба завершается без зависания. - Добавить
--output-format json --json-schema; распарсить вывод и постить находки инлайн-комментариями в PR. - Реализовать дедупликацию: включать прежние находки при повторе; проверить, что постятся лишь новые.
- Генерация тестов: подать в контекст существующие тесты; проверить отсутствие дублей сценариев.
- Распределить стоимость: какие шаги можно на Batch (ночью), какие должны остаться real-time (блокирующие ворота).
Проверка знаний
Claude Code в CI/CD
Скрипт конвейера запускает claude "Проанализируй этот PR на проблемы безопасности", но джоба зависает. Логи показывают ожидание интерактивного ввода. Верное решение?
Верный ответ: A
A верно. Флаг -p (--print) — документированный неинтерактивный режим для CI/CD: обрабатывает промпт, пишет в stdout и чисто завершается. B — CLAUDE_HEADLESS не существует. C — перенаправление stdin не решает дизайн интерактивного режима. D — --batch не валидный флаг Claude Code.
Claude Code в CI/CD
Два автоматизированных процесса: (1) блокирующая pre-merge проверка безопасности, которую ждут перед мержем, и (2) отчёт о техдолге, генерируемый ночью к утреннему стендапу. Менеджер предлагает перевести оба на Message Batches API ради экономии 50%. Как ответить?
Верный ответ: A
A верно. Под каждый сценарий — свой API: batch для неблокирующего асинхронного, real-time для чувствительного к задержке блокирующего. B — опрос не меняет срок до 24ч. C — результаты batch сопоставляются по custom_id, а вывод «real-time для обоих» избыточно консервативен. D добавляет лишнюю сложность.
Claude Code в CI/CD
Ночной аудит безопасности: claude -p "Аудит $(git diff HEAD~7) на проблемы безопасности". После обновления библиотеки добавились 14 файлов, diff превысил 80 000 токенов, аудит начал падать по тайм-ауту. Нужно сохранить полное недельное покрытие и убрать тайм-аут. Верный архитектурный подход?
Верный ответ: C
C верно. Дробление + параллельная обработка — верный паттерн для больших входов в CI: каждый кусок влезает в контекст, параллелизм восстанавливает задержку, покрытие полное. A не лечит корень — следующее обновление снова упрётся. B режет покрытие. D — Batch для тысяч независимых запросов, не для одного большого аудита, и у него тот же лимит контекста на запрос.