Деплои
Летопись ваших выкладок: каждый деплой, о котором сообщает CI, появляется вертикальным маркером на графиках проекта, в отдельном списке и рядом с регрессиями, которые за ним последовали, — так «что изменилось прямо перед сбоем» становится ссылкой, а не догадкой.
Что это даёт
- Маркеры на графиках. Каждый деплой рисует пунктирную вертикальную линию в момент выкладки на графиках производительности, метрик, хостов и аптайма, с подписью версии. Всплеск задержек, совпавший с релизом, виден сразу.
- Список деплоев. Подраздел «Деплои» области «Производительность» перечисляет все сообщённые выкладки, новые сверху: версия, окружение, когда, changelog и ссылка обратно на CI-раннер или страницу релиза.
- Привязка регрессий. В списке регрессий регрессия, начавшаяся в течение 7 дней после деплоя, получает пометку «после деплоя vX» — наиболее вероятное изменение-виновник, в одном клике от списка деплоев.
Для работы остального продукта ничего не требуется: если CI о деплоях не сообщает, маркеров просто нет, а список пуст.
Как пушить деплой из CI
Сообщите о деплое одним HTTP-запросом в конце job’а выкладки.
POST https://<адрес-gotcha>/api/<PROJECT_ID>/deployments/
Аутентификация
Как и эндпойнт приёма событий, этот путь авторизуется ключом DSN проекта —
публичным ключом (<PUBLIC_KEY>, часть DSN между https:// и @) плюс
идентификатором проекта (<PROJECT_ID>, последний сегмент DSN). Где взять
DSN — см. SDK и интеграции.
Ключ передаётся либо query-параметром:
POST https://<адрес-gotcha>/api/<PROJECT_ID>/deployments/?sentry_key=<PUBLIC_KEY>
либо заголовком протокола Sentry:
X-Sentry-Auth: Sentry sentry_key=<PUBLIC_KEY>
Отсутствующий ключ — ответ 401; ключ, не принадлежащий <PROJECT_ID>, —
403.
Тело запроса
Один JSON-объект, описывающий один деплой:
| Поле | Обязательность | Описание |
|---|---|---|
version | обязательно | Идентификатор релиза (v1.4.2, git SHA, номер сборки). Пустое или отсутствующее значение — ответ 400. |
environment | опционально | Окружение, куда ушёл релиз (prod, staging, …). Помогает отличать релизы разных окружений. |
deployed_at | опционально | Когда произошла выкладка — RFC3339-строка ("2026-08-18T12:00:00Z") либо unix-время в секундах числом. Отсутствует, пусто или не разобрано — берётся время приёма сервером. |
url | опционально | Ссылка обратно на CI-раннер или страницу релиза. В списке рендерится внешней ссылкой (ссылкой становится только http/https, иначе — обычный текст). |
changelog | опционально | Произвольный текст изменений. В списке показывается с сохранением переносов строк. |
Ответ при успехе — 200 OK с телом {"id": <n>}, идентификатором
сохранённой записи.
GitHub Actions
Шаг в конце job’а выкладки — части DSN лежат в секретах репозитория:
- name: Notify Gotcha of the deployment
run: |
curl -sf -X POST \
"https://gotcha.example.com/api/${{ secrets.GOTCHA_PROJECT_ID }}/deployments/?sentry_key=${{ secrets.GOTCHA_PUBLIC_KEY }}" \
-H "Content-Type: application/json" \
-d "$(jq -n \
--arg v "${{ github.ref_name }}" \
--arg url "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--arg log "${{ github.event.head_commit.message }}" \
'{version:$v, environment:"prod", url:$url, changelog:$log}')"
GitLab CI
Job в стадии deploy файла .gitlab-ci.yml — GOTCHA_PROJECT_ID и
GOTCHA_PUBLIC_KEY заданы переменными CI/CD:
notify-gotcha:
stage: deploy
needs: [deploy]
script:
- |
curl -sf -X POST \
"https://gotcha.example.com/api/${GOTCHA_PROJECT_ID}/deployments/?sentry_key=${GOTCHA_PUBLIC_KEY}" \
-H "Content-Type: application/json" \
-d "{\"version\":\"${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}\",\"environment\":\"prod\",\"url\":\"${CI_PIPELINE_URL}\",\"changelog\":\"${CI_COMMIT_TITLE}\"}"
Где видны маркеры
Маркеры с подписью версии рисуются на каждом временном графике проекта: графиках эндпойнтов Производительности, пользовательских графиках метрик, графиках ресурсов хостов и графиках задержек аптайма. Маркер ставится в момент деплоя по собственной оси времени графика; деплои вне видимого окна графика не рисуются.
Экран списка деплоев
/projects/{id}/deployments (пункт «Деплои» в навигации «Производительность»)
перечисляет сообщённые деплои проекта, новые сверху. В каждой строке — версия,
окружение, когда произошло (относительное время), changelog с сохранёнными
переносами и — если был передан url — ссылка на CI-раннер или страницу
релиза. У пустого проекта показывается пустое состояние с этой инструкцией.
Привязка регрессий
Список регрессий связывает каждую обнаруженную регрессию с наиболее вероятным виновником — ближайшим деплоем, который произошёл до начала регрессии, в пределах окна в 7 дней. Такая строка получает пометку «после деплоя vX» со ссылкой на список деплоев. Регрессия без деплоя в окне остаётся без пометки — привязка аддитивна и никак не меняет то, как сами регрессии обнаруживаются.