Хук реагирует на событие в Coroid. Вы выбираете событие, пишете инструкции простым языком, и хук запускается при возникновении этого события.
Найдите их в разделе «Автоматизации» фабрики.
Создать задачу в разделе «Новая работа»: выберите вариант «Автоматизация», затем — «Когда что-то происходит». В разделе «Новая работа» доступны события GitHub и события Coroid. Подробнее Автоматизации.
События, на которые можно реагировать
Хук срабатывает только для события, отправленного каким-либо элементом. Большинство перечисленных ниже событий отправляет сам Coroid. Некоторые события генерируются вашими собственными системами. Любые другие события зарезервированы: редактор их не отображает, а создание хука для такого события невозможно. Если хук был сохранен для зарезервированного события, редактор и список помечают его как никогда не срабатывающий; он не удаляется.
События, отправляемые Coroid
| Категория | События |
|---|---|
| Задача | Создано, статус изменён, завершено, ошибка |
| Агент | Запущено, завершено, ошибка |
| Репозиторий | Коммит отправлен, ветка создана, pull request открыт, обновлён или объединён, задача создана, комментарий, содержащий упоминание Coroid |
| Спринт | Создано, планирование начато, запущено, задача добавлена, задача удалена, проверка начата, завершено, отменено |
| План | Этап начат, завершено, ошибка |
| Расписание | Запуск начат, запуск завершён, запуск завершился ошибкой |
| Отчёт | Запущено, завершено, ошибка |
| Качество | Проверка начата, пройдена или завершилась ошибкой; автономное разрешение не удалось |
| Продвижение | Запрошено, одобрено, отклонено |
| Релиз | Создано, изменён кандидат, изменены примечания, примечания одобрены, изменён объём работ, чек-лист завершён, шлюз оценён, шлюз переопределён, одобрено, опубликовано, откат |
| Развертывание | В очереди, выполняется, успешно, ошибка, отменено, ручная подтверждение, ручная подтверждение отката, проверка работоспособности пройдена, проверка работоспособности завершилась ошибкой |
| Синхронизация | Внешний источник обновлён |
| Slack и Telegram | Сообщение, соответствующее фильтру автоматизации |
События, генерируемые вашими собственными системами
| Категория | События |
|---|---|
| Анализ | Обнаружена зависимость, обнаружена проблема безопасности, анализ завершён |
| Внешнее развертывание | Запущено, завершено, ошибка |
Coroid эти события не отправляет. Конвейер CI, сканер или другая ваша система запускает хук по его идентификатору: он вызывает POST /api/v1/organizations/hooks/:id/dispatch
с ключом учетная запись службы
которая имеет hooks:dispatch область действия. Хук срабатывает для события, для которого он был сохранён. Редактор отображает эти события в разделе «Генерируются вашими собственными системами».
Зарезервированные события
Эти события ещё не отправлены и не сгенерированы, поэтому редактор их не предлагает:
| Категория | События |
|---|---|
| Задача | Этап изменён |
| Агент | Итерация, вызов инструмента |
| План | Создано, этап завершён, начата финальная проверка, финальная проверка завершена, перед pull request плана |
| Расписание | Создано, активировано, приостановлено |
| Спринт | Планирование завершено, задача завершена, объём работ изменён |
| Релиз | На стадии подготовки, проверено |
| Продвижение | Перед pull request продвижения |
| Качество | Проверка недоступна; ремонт начат или попытка ремонта предпринята; повторная валидация начата; консенсус достигнут |
Когда начинается и заканчивается работа
Планы, расписания, отчёты, проверки качества, продвижения и релизы отправляют событие при начале и при завершении работы. Хук может реагировать на то, как завершилась работа, а ваша система может измерять её длительность.
| Работа | Начинается | Завершается |
|---|---|---|
| План | Этап начат: первое событие отправляется при старте выполнения плана | Завершено, ошибка |
| Расписание | Запуск начат | Запуск завершён, запуск завершился ошибкой |
| Отчёт | Запущено | Завершено, ошибка |
| Проверка качества | Проверка начата | Пройдена, ошибка, автономное разрешение не удалось |
| Продвижение | Запрошено | Одобрено, отклонено |
| Релиз | Создано | Опубликовано, откат |
Каждое из этих событий регистрирует время его возникновения в occurredAt. Событие, указывающее на завершение работы, также регистрирует время её начала в
startedAt, а её длительность — в durationMs. Это startedAt является
occurredAt события начала — они всегда совпадают. Время простоя
входит в общую продолжительность работы.
Каждое событие отправляется один раз при сохранении изменений. Отменённые изменения не генерируют событий, а повторная отправка не приводит к дублированию. Событие завершения отправляется только для начатой работы: a предварительный запуск расписания не генерирует событий, как и отчёт, отменённый до начала выполнения.
Что содержится в каждом событии, помимо временных меток:
| Событие | Отправляется когда | Поля |
|---|---|---|
| Начало этапа планирования | Начинается выполнение плана (его первый этап), а затем — при старте первой задачи следующего этапа | planId, plan (id, title), phase (id, sequence, title), firstPhase, executionStartedAt |
| Планирование завершено или прервано | Выполнение плана завершается. Если план завершается ошибкой на этапе планирования, событие не отправляется | planId, plan, status, executionStartedAt |
| Запуск расписания начат | Запускается выполнение расписания | scheduleId, runId, schedule (id, name), run (причина триггера, родительский запуск) |
| Запуск расписания завершён или прерван | Запуск завершается | Те же поля, status, и tasksCreated или error |
| Начало формирования отчёта | Начинается создание отчёта. Приостановка и возобновление сохраняют одну временную метку начала | reportId, report (id, тип, title) |
| Формирование отчёта завершено или прервано | Отчёт сохранён, либо его создание завершилось ошибкой или было отменено | Те же поля, и tokensUsed, costUsd и hasActionableFindings, или error |
| Начало проверки качества | Начинается проверка качества | qualityRunId, check (объект, триггер, версия политики, коммит) |
| Проверка качества завершена успешно или с ошибкой | Проверка выносит свой вердикт | Те же поля, decision, redoCause, failedExpectationIds |
| Качество: проблема не решена автономно | Coroid прекращает попытки исправить найденные проблемы | qualityRunId, workItemType, workItemId, reason |
| Запрос на публикацию | Создаётся запрос на публикацию | promotionId, laneId, promotion (title, статус, ветки, pull request) |
| Публикация одобрена | Публикация объединяется: одобрена в Coroid, принудительно объединена, объединена у провайдера или включена в релиз | Те же поля, approval, approvedBy, forceReason |
| Публикация отклонена | Рецензент запрашивает внесение изменений | Те же поля, reason, requestedBy, comment |
| Релиз опубликован | Первое развёртывание релиза в продакшене завершается успешно | releaseId, version, commitSha |
| Релиз откатился | Откат заменяет релиз в окружении | releaseId, version, rolledBackToReleaseId |
События о работе в проекте также содержат projectId, поэтому хук, привязанный к одному
проекту, срабатывает только для него. Если работа была создана хуком, эти события
учитываются при расчёте глубины цепочки этого хука.
Триггеры и назначения
У каждой автоматизации есть источник триггера — откуда поступают события — и назначение, определяющее действие при их срабатывании. Два из назначений превращают событие в задачу.
| Источник триггера | События |
|---|---|
| Событие рабочего процесса | События в Coroid, как указано в таблице выше |
| GitHub | Открытие, обновление или объединение пул-реквеста; открытие задачи; комментарий, упоминающий Coroid |
| Slack | Сообщение, соответствующее фильтру автоматизации |
| Telegram | Сообщение, соответствующее фильтру автоматизации, например, начинающееся с /coroid |
| Jira | Новая задача |
| Назначение | Что происходит |
|---|---|
| Хук | Выполняет ваши инструкции в режиме чтения, как описано на этой странице |
| Квалификация работы | Регистрирует событие как запрос. После прохождения квалификации Coroid создаёт задачу |
| Coroid Check | Устарело. Рецензирование каждого pull request в Coroid настраивается в Quality Control; существующие автоматизации были приостановлены |
GitHub-события требуют приложения GitHub. Комментарий, упоминающий Coroid, учитывается только если автор имеет права записи в репозитории. См. GitHub.
Задача из блока «Квалификация работы» запускается самостоятельно только если автор события является доверенным: автор GitHub pull request, задачи или комментария с правами записи в репозитории. Авторы из Slack, Telegram и Jira не считаются доверенными, поэтому их задачи ждут ручного запуска. См. Когда начинается работа.
Новые задачи в Jira попадают в Coroid только через вебхук Jira. Он принимает только те данные, подписанные секретом вебхука, настроенным для Coroid, только для новых задач и только если ключ проекта Jira совпадает с ключом проекта Coroid. На coroid.ai вебхук Jira пока не настроен, поэтому триггер Jira не получает событий; импортируйте задачи Jira вручную. Там, где вебхук настроен, новая задача поступает в автоматизации триггера Jira, например в источник запросов Jira в разделе Quality Control, который создает задачи нужных типов и приоритетов для этапа квалификации. Если на триггере нет автоматизации, новая задача ничего не создаст. Работа из Jira никогда не начинается сама по себе. См. Системы отслеживания задач.
По умолчанию доступ только для чтения
Хуки анализируют и формируют отчеты. Они могут создавать дополнительные задачи, но не изменяют ваш код напрямую.
Именно это свойство делает их безопасными для использования. Автоматизация, которая редактирует код в ответ на событие, действует в момент, когда за ней вряд ли кто-то следит. Хук, который открывает задачу приводит к тому же результату через стандартный процесс — спецификация, план, проверка, рецензирование, pull request.
- РасписаниеВремя
- Автоматизация событийПроисходит некое событие.
Обычная задача
Техническое задание, план, разработка, проверка, рецензирование. Использует слот агента; задайте ему более низкий приоритет.
P2P3Запрос на объединение pull request
Оно не может самостоятельно объединить изменения или внести их в вашу базовую ветку.
Вы утверждаете
Составление качественных инструкций
Инструкции для хуков обрабатываются моделью, поэтому они выглядят как указания коллеге, а не как код. Стандарты качества такие же, как для спецификация: укажите, на что обратить внимание, что важно и что делать.
Четко опишите случай «ничего не делать». Без этого хук будет находить, что сказать при каждом запуске, а хуки, которые срабатывают постоянно, перестают читать.
Ограничения
Существует три защитных механизма, потому что автоматизация, запускаемая по событиям, дает предсказуемые сбои:
Ограничения частоты. Настраиваются для каждого хука отдельно: по количеству событий в минуту, час и день. Хук на событие с высокой частотой может сработать сотни раз во время интенсивного слияния веток.
Глубина цепочки. Хуки могут запускать события, которые, в свою очередь, запускают другие хуки. Максимальная глубина цепочки предотвращает образование бесконечного цикла.
Разрешения на инструменты. Возможности хука контролируются: доступ только для чтения, вызовы MCP и создание задач регулируются отдельно.
Разрешения
Только владельцы и администраторы могут создавать, изменять, тестировать или удалять хуки; все участники могут видеть хуки и историю их выполнения. Поскольку хук работает на уровне организации, такая асимметрия является осознанной.
Отслеживание работы хуков
На странице каждого хука в системе указаны его запуски и результаты за последние 30 дней: количество запусков, ошибки и затраты. Каждая автоматизация также отображается в разделе Настройки → Активность с фильтром по категории «Автоматизация». Проверьте запуски после включения нового хука — режим ошибки означает не сбой, а постоянное срабатывание без полезных действий.
Хуки и расписания
| Механизм | Причина запуска |
|---|---|
| Хук | Событие платформы |
| Расписание | Время |
Оба типа относятся к автоматизации и перечислены вместе в системе. См. Автоматизации.