Что здесь обычно болит
Между Sentry и трекером почти всегда стоит человек. Он читает поток ошибок, решает, что из этого дефект, и переносит стек-трейс руками — обычно скриншотом. В результате половина ошибок прода не доезжает до тестирования вовсе, а те, что доехали, теряют контекст и через неделю неотличимы друг от друга.
Обратная крайность — автоматическое заведение задачи на каждую ошибку — за сутки превращает трекер в помойку из дублей.
Как это устроено в QA Деск
Ошибка уровня error или fatal в подключённом проекте Sentry становится дефектом выбранного проекта QA Деск: тип исключения, место возникновения, ссылка на issue. Одна ошибка — один дефект: повторные срабатывания правила дефект не дублируют, а из карточки дефекта можно привязать и уже существующую ошибку по id или ссылке.
Работает и облачный Sentry, и своя установка.
Подключение
- В Sentry выпустите Auth Token: Settings → Auth Tokens → Create New Token, право
project:read. Это не «Security Token» из раздела Security & Privacy — тот нужен для карт источников и здесь не используется. - В кабинете откройте Настройки → Sentry (нужно право управления пространством). В поле «Инсталляция» вставьте ссылку на проект из адресной строки целиком — адрес установки, организация и проект разберутся сами. Вставьте токен, выберите проект QA Деск и нажмите «Проверить и подключить».
- Скопируйте с карточки подключения адрес вебхука — он содержит секрет, публиковать его нельзя. Новый адрес выпускается в любой момент, старый перестаёт приниматься сразу.
- В Sentry включите плагин WebHooks: проект → Settings → Integrations → WebHooks → Enable, затем Configure plugin, и вставьте адрес в Callback URLs.
- Создайте правило: Alerts → Create Alert → Issues, условие «A new issue is created», действие «Send a notification via WebHooks». Без правила плагин не отправляет ничего — это самая частая причина тишины.
- Проверьте: Test Plugin или Send Test Notification. В проекте появится дефект, на карточке подключения — время последнего вебхука и число заведённых дефектов.
Подключение сохраняется только после того, как Sentry принял токен и показал ему проект. Отказ приходит с причиной и с названием поля, а не общим «ошибка».
Строже: подпись доставки
Вместо плагина можно завести Settings → Developer Settings → Internal Integration с Webhook URL, галочкой «Alert Rule Action», правом Issue & Event: Read и вебхуком issue: created. Его Client Secret вписывается на карточке подключения — тогда каждая доставка проверяется по подписи, и чужой запрос по угаданному адресу не заведёт дефект.
Что настраивается на карточке подключения
Среда, платформа и серьёзность заводимых дефектов. Уровни blocker и critical недоступны намеренно: у них обязательно вложение, а вебхук его не несёт — иначе приём падал бы на валидации в момент, когда с прода летят ошибки.
Кому это особенно окупается
- продуктам на 1С-Битрикс и Laravel: PHP-исключение после обновления приходит раньше, чем жалоба клиента;
- SPA на React и Vue: браузерные ошибки, которые не воспроизводятся локально;
- командам без выделенного дежурного: поток ошибок сам превращается в очередь на триаж.
Чего в продукте нет
- нет переноса всех событий и метрик Sentry — приезжает то, что нужно для дефекта;
- нет обратной записи в Sentry: деск не резолвит issue и не меняет их;
- нет автоматического закрытия дефекта, когда ошибка перестала повторяться, — закрывает тестировщик.
С чего начать
Подключите один проект и создайте правило только на новые issue. Через неделю станет видно, какой уровень шума приемлем, — и уже тогда стоит расширять условия правила, а не наоборот.
Попробуйте на своём проекте
Заведите проект, загрузите первый отчёт или заведите первый дефект — бесплатный тариф без карты. Нужно демо на ваших сценариях — напишите на hello@qadesk.ru.
Создать проектРядом по теме
1С-Битрикс
Сайт на 1С-Битрикс проверяется по готовому смоуку каталога и заказа, обновление ядра фиксируется в поле сборки, а ошибки прода из Sentry становятся дефектами без ручного пересказа стек-трейса.
1С-Битрикс — обновление ядра без сюрпризов на продеGitLab CI
Отчёт из GitLab CI уезжает в QA Деск шагом в пять строк: токен проекта в masked-переменной, ключ идемпотентности утилита берёт из CI_PIPELINE_ID сама.
GitLab CI — один шаг в пайплайне, прогон в дескеSourceCraft CI
Отчёт уезжает из кубика CI одной командой, а дефект связывается с задачей SourceCraft: обратно в карточку приходят статус задачи и пул-реквест, закрывший её, с хешем влитой сборки.
SourceCraft — от дефекта до влитого пул-реквеста